test: improve logging in unit tests

include API name
unify tests timeout/sigabrt message across OSes

Signed-off-by: Mateusz Jablonski <mateusz.jablonski@intel.com>
This commit is contained in:
Mateusz Jablonski
2025-05-14 15:58:57 +00:00
committed by Compute-Runtime-Automation
parent a4bbfb41b4
commit a361ca1e3f
8 changed files with 33 additions and 20 deletions

View File

@@ -18,7 +18,8 @@
extern std::string lastTest;
namespace NEO {
extern const char *executionName;
}
extern const char *apiName;
} // namespace NEO
class CCustomEventListener : public ::testing::TestEventListener {
public:
@@ -114,28 +115,28 @@ class CCustomEventListener : public ::testing::TestEventListener {
if (unitTest.Failed()) {
ultStatus = "FAILED";
}
auto executionNameLen = strlen(NEO::executionName);
auto targetNameLen = strlen(NEO::apiName) + 1 + strlen(NEO::executionName);
if (hardwarePrefix != "---") {
paddingS = std::string(hardwarePrefix.length() + executionNameLen, ' ');
paddingE = std::string(hardwarePrefix.length() + executionNameLen, '=');
paddingS = std::string(hardwarePrefix.length() + targetNameLen, ' ');
paddingE = std::string(hardwarePrefix.length() + targetNameLen, '=');
fprintf(
stdout,
"\n"
"%s==================\n"
"== %s %ss %s ==\n"
"== %s %s %ss %s ==\n"
"%s==================\n",
paddingE.c_str(), hardwarePrefix.c_str(), NEO::executionName, ultStatus.c_str(), paddingE.c_str());
paddingE.c_str(), hardwarePrefix.c_str(), NEO::apiName, NEO::executionName, ultStatus.c_str(), paddingE.c_str());
} else {
paddingE = std::string(executionNameLen, '=');
paddingE = std::string(targetNameLen, '=');
fprintf(
stdout,
"\n"
"%s==================\n"
"== %ss %s ==\n"
"== %s %ss %s ==\n"
"%s==================\n",
paddingE.c_str(), NEO::executionName, ultStatus.c_str(), paddingE.c_str());
paddingE.c_str(), NEO::apiName, NEO::executionName, ultStatus.c_str(), paddingE.c_str());
}
fprintf(

View File

@@ -1,5 +1,5 @@
/*
* Copyright (C) 2022-2024 Intel Corporation
* Copyright (C) 2022-2025 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
@@ -17,6 +17,7 @@ std::string lastTest("");
namespace NEO {
extern const unsigned int ultIterationMaxTimeInS;
extern const char *executionName;
extern const char *apiName;
} // namespace NEO
int newStdOut = -1;
@@ -26,7 +27,7 @@ void handleSIGABRT(int signal) {
if (newStdOut != -1) {
dup2(newStdOut, 1);
}
std::cout << "SIGABRT in " << NEO::executionName << ", on: " << lastTest << std::endl;
std::cout << "SIGABRT in " << NEO::apiName << " " << NEO::executionName << ", on: " << lastTest << std::endl;
if (sigaction(SIGABRT, &oldSigAbrt, nullptr) == -1) {
std::cout << "FATAL: cannot fatal SIGABRT handler" << std::endl;
std::cout << "FATAL: try SEGV" << std::endl;
@@ -44,7 +45,7 @@ void handleSIGALRM(int signal) {
if (newStdOut != -1) {
dup2(newStdOut, 1);
}
std::cout << "Tests timeout in " << NEO::executionName << ", ";
std::cout << "Tests timeout in " << NEO::apiName << " " << NEO::executionName << ",";
if (clock_gettime(CLOCK_MONOTONIC_RAW, &alrmTimeSpec) == 0) {
auto deltaSec = alrmTimeSpec.tv_sec - startTimeSpec.tv_sec;
std::cout << " after: " << deltaSec << " seconds";
@@ -57,7 +58,7 @@ void handleSIGSEGV(int signal) {
if (newStdOut != -1) {
dup2(newStdOut, 1);
}
std::cout << "SIGSEGV in " << NEO::executionName << ", on: " << lastTest << std::endl;
std::cout << "SIGSEGV in " << NEO::apiName << " " << NEO::executionName << ", on: " << lastTest << std::endl;
abort();
}

View File

@@ -21,6 +21,7 @@ std::string lastTest("");
static int newStdOut = -1;
namespace NEO {
extern const char *apiName;
extern const char *executionName;
extern unsigned int ultIterationMaxTimeInS;
} // namespace NEO
@@ -39,7 +40,7 @@ void handleSIGABRT(int sigNo) {
if (newStdOut != -1) {
_dup2(newStdOut, 1);
}
std::cout << "SIGABRT on: " << lastTest << std::endl;
std::cout << "SIGABRT in " << NEO::apiName << " " << NEO::executionName << ", on: " << lastTest << std::endl;
signal(SIGABRT, oldSigAbrt);
raise(sigNo);
}
@@ -92,20 +93,20 @@ int setAlarm(bool enableAlarm) {
std::cout << "set timeout to: " << alarmTimeInS << " seconds" << std::endl;
threadStarted = true;
std::chrono::high_resolution_clock::time_point startTime, endTime;
std::chrono::milliseconds elapsedTime{};
std::chrono::milliseconds elapsedTimeInMs{};
startTime = std::chrono::high_resolution_clock::now();
do {
std::this_thread::yield();
std::this_thread::sleep_for(std::chrono::milliseconds(1));
endTime = std::chrono::high_resolution_clock::now();
elapsedTime = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime);
elapsedTimeInMs = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - startTime);
if (!abortOnTimeout) {
return;
}
} while (abortOnTimeout && elapsedTime.count() < alarmTimeInS * 1000);
} while (abortOnTimeout && elapsedTimeInMs.count() < alarmTimeInS * 1000);
if (abortOnTimeout) {
printf("timeout on: %s\n", lastTest.c_str());
printf("Tests timeout in %s %s, after %u seconds on %s\n", NEO::apiName, NEO::executionName, static_cast<uint32_t>(elapsedTimeInMs.count() / 1000), lastTest.c_str());
abort();
}
});