Ok, I got you. We can separate the output line into two parts: 1, print case name before case running 2, print result after testing.
But stay it in one line different from what it does previously. Thanks --Sun, Yi > -----Original Message----- > From: Song, Ruiling > Sent: Wednesday, March 26, 2014 11:09 AM > To: Sun, Yi; '[email protected]' > Cc: Sun, Yi; Shui, YangweiX > Subject: RE: [Beignet] [PATCH] Refine the output and add dynamic statistics. > > I think you can print case name before case running, after case finished, > print > success or fail. > How about this? > > -----Original Message----- > From: Song, Ruiling > Sent: Tuesday, March 25, 2014 10:20 AM > To: Sun, Yi; [email protected] > Cc: Sun, Yi; Shui, YangweiX > Subject: RE: [Beignet] [PATCH] Refine the output and add dynamic statistics. > > Although dynamic statistics looks good to me. > Still one minor comment, if a case hang, it is not easy to find which case > hang > through the log. > > -----Original Message----- > From: Beignet [mailto:[email protected]] On Behalf Of Yi > Sun > Sent: Tuesday, March 18, 2014 9:15 AM > To: [email protected] > Cc: Sun, Yi; Shui, YangweiX > Subject: [Beignet] [PATCH] Refine the output and add dynamic statistics. > > 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 _______________________________________________ Beignet mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/beignet
