Skip to content

Commit

Permalink
lsb-vsx: enable running testsuite via trunner
Browse files Browse the repository at this point in the history
JIRA: CI-139
  • Loading branch information
adamdebek committed Oct 29, 2024
1 parent 7e3f9f2 commit 60599c8
Show file tree
Hide file tree
Showing 4 changed files with 623 additions and 0 deletions.
4 changes: 4 additions & 0 deletions lsb_vsx/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
NAME := run-test
LOCAL_SRCS := run-test.c

include $(binary.mk)
52 changes: 52 additions & 0 deletions lsb_vsx/lsb_vsx.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
from typing import Optional

from trunner.ctx import TestContext
from trunner.dut import Dut
from trunner.types import Status, TestResult


def harness(dut: Dut, ctx: TestContext, result: TestResult) -> Optional[TestResult]:
tc_start = r".+?\|TP Start\r+\n"
msg_re = r".+\|(?P<msg_line>.*?)\r+\n"
result_re = r"(.+?)\|(?P<status>PASS|FAIL|UNRESOLVED|UNSUPPORTED|NOTINUSE|UNTESTED)\r+\n"
final_re = r"(.+?)\|TC End.+?\r+\n"

stats = {"FAIL": 0, "IGNORE": 0, "PASS": 0}
msg = ""
msg_lines = []
results = []
tc_num = 0
get_msg = False

dut.expect("Config End\r+\n")

while True:
idx = dut.expect([tc_start, final_re, result_re, msg_re], timeout=1000)
parsed = dut.match.groupdict()

if idx == 0:
get_msg = True
elif idx == 1:
break
elif idx == 2:
# Right now, not supported statuses treat as PASS
if parsed["status"] in ("UNRESOLVED", "UNSUPPORTED", "NOTINUSE", "UNTESTED"):
parsed["status"] = "PASS"

status = Status.from_str(parsed["status"])
tc_num += 1
subname = f"testcase {tc_num}"
if msg_lines:
msg += msg_lines[0]
for line in msg_lines[1:]:
msg += "\n" + " " * 26 + line.lstrip()
result.add_subresult(subname, status, msg)

stats[parsed["status"]] += 1
results.append(parsed)
get_msg, msg_lines, msg = False, [], ""
elif idx == 3 and get_msg is True:
msg_lines.append(parsed["msg_line"])

status = Status.FAIL if stats["FAIL"] != 0 else Status.OK
return TestResult(status=status)
68 changes: 68 additions & 0 deletions lsb_vsx/run-test.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
/*
* Phoenix-RTOS
*
* lsb_vsx test launcher
*
* Copyright 2024 Phoenix Systems
* Author: Adam Debek
*
* This file is part of Phoenix-RTOS.
*
* %LICENSE%
*/

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>


int main(int argc, char **argv)
{
const char *cmd = "/usr/bin/tcc -j - -e -l ";
char test_cmd[128];
int ret;

if (argc != 2) {
fprintf(stderr, "No path to test executable provided\n");
exit(EXIT_FAILURE);
}
else {
strcpy(test_cmd, cmd);
strcat(test_cmd, argv[1]);
}

if (chdir("/root/lsb_vsx/test_sets") < 0) {
perror("chdir");
exit(EXIT_FAILURE);
}

if (setenv("TET_ROOT", "/root/lsb_vsx", 0) < 0) {
fprintf(stderr, "setenv() - setting \"TET_ROOT\" failed\n");
exit(EXIT_FAILURE);
}

if (setenv("TET_EXECUTE", "/root/lsb_vsx/test_sets/TESTROOT", 0) < 0) {
fprintf(stderr, "setenv() - setting \"TET_EXECUTE\" failed\n");
exit(EXIT_FAILURE);
}

if ((ret = system(test_cmd)) < 0) {
perror("system");
exit(EXIT_FAILURE);
}

if (WIFEXITED(ret)) {
int exit_status = WEXITSTATUS(ret);
if (exit_status != 0) {
fprintf(stderr, "Error: Command exited with status %d\n", exit_status);
exit(EXIT_FAILURE);
}
}
else {
fprintf(stderr, "Error: Command did not exit normally\n");
exit(EXIT_FAILURE);
}

return EXIT_SUCCESS;
}
Loading

0 comments on commit 60599c8

Please sign in to comment.