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

Reply via email to