From: Yangwei Shui <[email protected]> 1. Add two parameter(passCount and failCount) in Class UTest, to count passed case number and failed case number
2. Print dynamic statistics about case running in stdout, the style looks like follows: ...... compiler_bool_cross_basic_block() [SUCCESS] compiler_private_data_overflow() [SUCCESS] compiler_getelementptr_bitcast() [SUCCESS] test_load_program_from_bin() [SUCCESS] enqueue_copy_buf() [SUCCESS] run/total: 655/655; pass: 628; fail: 25; pass rate: 0.961832 3. If ./utest_run &> log, the log will be a little messy, tring the following command to analyse the log: sed 's/\r/\n/g' log | egrep "\w*\(\)" | sed -e 's/\s//g' After analysed: ----------------- ...... builtin_minmag_float2()[SUCCESS] builtin_minmag_float4()[SUCCESS] builtin_minmag_float8()[SUCCESS] builtin_minmag_float16()[SUCCESS] builtin_nextafter_float()[FAILED] builtin_nextafter_float2()[FAILED] builtin_nextafter_float4()[FAILED] ...... Signed-off-by: Yi Sun <[email protected]> Signed-off-by: Yangwei Shui <[email protected]> diff --git a/utests/compiler_basic_arithmetic.cpp b/utests/compiler_basic_arithmetic.cpp index 0e5ec41..ba05de0 100644 --- a/utests/compiler_basic_arithmetic.cpp +++ b/utests/compiler_basic_arithmetic.cpp @@ -15,7 +15,6 @@ static void test_exec(const char* kernel_name) // Setup kernel and buffers OCL_CREATE_KERNEL_FROM_FILE("compiler_basic_arithmetic", kernel_name); -std::cout <<"kernel name: " << kernel_name << std::endl; buf_data[0] = (T*) malloc(sizeof(T) * n); buf_data[1] = (T*) malloc(sizeof(T) * n); for (uint32_t i = 0; i < n; ++i) ((T*)buf_data[0])[i] = (T) rand(); diff --git a/utests/utest.cpp b/utests/utest.cpp index 718916f..ef0c5cf 100644 --- a/utests/utest.cpp +++ b/utests/utest.cpp @@ -28,8 +28,17 @@ #include <iostream> #include <cstring> +#define OUTPUT_LINE_LEN 70 + using namespace std; vector<UTest> *UTest::utestList = NULL; +/* Initialisation + Passed case number: passCount + Failed case number: failCount +*/ +int UTest::passCount = 0; +int UTest::failCount = 0; + void releaseUTestList(void) { delete UTest::utestList; } UTest::UTest(Function fn, const char *name, bool haveIssue, bool needDestroyProgram) @@ -76,13 +85,23 @@ void UTest::runAll(void) { } void UTest::runAllNoIssue(void) { + char spaceList[OUTPUT_LINE_LEN] = {}; if (utestList == NULL) return; for (size_t i = 0; i < utestList->size(); ++i) { const UTest &utest = (*utestList)[i]; if (utest.fn == NULL || utest.haveIssue) continue; - std::cout << utest.name << ":" << std::endl; + + //A string contain OUTPUT_LINE_LEN spaces, to hide the statistic line in stdout + for (size_t j = 0; j < OUTPUT_LINE_LEN; j++) spaceList[j] = ' '; + printf("\r%s\r",spaceList); + (utest.fn)(); - std::cout << std::endl; + + //Dynamic statistics of running cases + printf("\nrun/total: %zu/%zu; pass: %d; fail: %d; pass rate: %f", + i+1, utestList->size(), passCount, failCount, 1-(float)failCount/(float)utestList->size()); + fflush(stdout); + cl_kernel_destroy(utest.needDestroyProgram); cl_buffer_destroy(); } diff --git a/utests/utest.hpp b/utests/utest.hpp index 01d4a8c..7b5bd42 100644 --- a/utests/utest.hpp +++ b/utests/utest.hpp @@ -58,6 +58,10 @@ struct UTest static void runAll(void); /*! List all test cases */ static void listAllCases(void); + /*! Count passed case number */ + static int passCount; + /*! Count failed case number */ + static int failCount; }; /*! Register a new unit test */ @@ -84,11 +88,13 @@ struct UTest do { \ try { \ EXPR; \ - std::cout << " " << #EXPR << " [SUCCESS]" << std::endl; \ + std::cout << " " << #EXPR << " [SUCCESS]"; \ + UTest::passCount += 1; \ } \ catch (Exception e) { \ - std::cout << " " << #EXPR << " [FAILED]" << std::endl; \ - std::cout << " " << e.what() << std::endl; \ + std::cout << " " << #EXPR << " [FAILED]"; \ + std::cout << "\n " << e.what(); \ + UTest::failCount += 1; \ } \ } while (0) @@ -96,10 +102,12 @@ struct UTest do { \ try { \ EXPR; \ - std::cout << " " << #EXPR << " [FAILED]" << std::endl; \ + std::cout << " " << #EXPR << " [FAILED]"; \ + UTest::failCount += 1; \ } \ catch (gbe::Exception e) { \ - std::cout << " " << #EXPR << " [SUCCESS]" << std::endl; \ + std::cout << " " << #EXPR << " [SUCCESS]"; \ + UTest::passCount += 1; \ } \ } while (0) -- 1.8.5.3 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
