Repository: incubator-mynewt-core
Updated Branches:
  refs/heads/master b8a354970 -> 004423135


Log testsuite name and keep valid json when truncating


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/c58d50cf
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/c58d50cf
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/c58d50cf

Branch: refs/heads/master
Commit: c58d50cf63d73e6d85908336e8f4fc54e16be2d4
Parents: bcaf2ff
Author: spoonofpower <[email protected]>
Authored: Wed Apr 5 13:28:13 2017 -0700
Committer: spoonofpower <[email protected]>
Committed: Wed Apr 5 14:47:52 2017 -0700

----------------------------------------------------------------------
 apps/testbench/src/testbench.c | 56 +++++++++++++++++++++++++++++++------
 1 file changed, 48 insertions(+), 8 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/c58d50cf/apps/testbench/src/testbench.c
----------------------------------------------------------------------
diff --git a/apps/testbench/src/testbench.c b/apps/testbench/src/testbench.c
index ef76988..939aecc 100644
--- a/apps/testbench/src/testbench.c
+++ b/apps/testbench/src/testbench.c
@@ -123,9 +123,50 @@ extern uint32_t stack2_size;
 extern uint32_t stack3_size;
 extern uint32_t stack4_size;
 
+struct ts_suite *current_ts;
+
 void
 testbench_ts_result(char *msg, void *arg, bool passed)
 {
+    /* Must log valid json with a strlen less than LOG_PRINTF_MAX_ENTRY_LEN */
+    char buf[LOG_PRINTF_MAX_ENTRY_LEN];
+    char *n;
+    int n_len;
+    char *s;
+    int s_len;
+    char *m;
+    int m_len;
+
+    int len = 35; /* str length of {"k":"","n":"","s":"","m":"","r":1} */
+    len += strlen(runtest_token);
+
+    /* How much of the test name can we log? */
+    n_len = strlen(tu_case_name);
+    if (len + n_len >= LOG_PRINTF_MAX_ENTRY_LEN) {
+        n_len = LOG_PRINTF_MAX_ENTRY_LEN - len - 1;
+    }
+    len += n_len;
+    n = buf;
+    strncpy(n, tu_case_name, n_len + 1);
+
+    /* How much of the suite name can we log? */
+    s_len = strlen(current_ts->ts_name);
+    if (len + s_len >= LOG_PRINTF_MAX_ENTRY_LEN) {
+        s_len = LOG_PRINTF_MAX_ENTRY_LEN - len - 1;
+    }
+    len += s_len;
+    s = n + n_len + 2;
+    strncpy(s, current_ts->ts_name, s_len + 1);
+
+    /* How much of the message can we log? */
+    m_len = strlen(msg);
+    if (len + m_len >= LOG_PRINTF_MAX_ENTRY_LEN) {
+        m_len = LOG_PRINTF_MAX_ENTRY_LEN - len - 1;
+    }
+    m = s + s_len + 2;
+    strncpy(m, msg, m_len + 1);
+
+
     TESTBENCH_UPDATE_TOD;
 
     total_tests++;
@@ -134,8 +175,8 @@ testbench_ts_result(char *msg, void *arg, bool passed)
     }
 
     LOG_INFO(&testlog, LOG_MODULE_TEST,
-            "{\"k\":\"%s\",\"n\":\"%s\",\"r\":%d,\"m\":\"%s\"}",
-             runtest_token, tu_case_name, passed, msg);
+            "{\"k\":\"%s\",\"n\":\"%s\",\"s\":\"%s\",\"m\":\"%s\",\"r\":%d}",
+             runtest_token, n, s, m, passed);
 }
 
 void
@@ -178,7 +219,6 @@ testbench_test_init()
 static int
 testbench_runtests(struct os_event *ev)
 {
-    struct ts_suite *ts;
     struct runtest_evq_arg *runtest_arg;
     int run_all = 0;
 
@@ -215,17 +255,17 @@ testbench_runtests(struct os_event *ev)
         /*
          * go through entire list of registered test suites
          */
-        SLIST_FOREACH(ts, &g_ts_suites, ts_next) {
-            if (run_all || !strcmp(runtest_arg->run_testname, ts->ts_name)) {
-                ts->ts_test();
+        SLIST_FOREACH(current_ts, &g_ts_suites, ts_next) {
+            if (run_all || !strcmp(runtest_arg->run_testname, 
current_ts->ts_name)) {
+                current_ts->ts_test();
             }
         }
     } else {
         /*
          * run all tests if NULL event is passed as an argument (untested)
          */
-        SLIST_FOREACH(ts, &g_ts_suites, ts_next) {
-            ts->ts_test();
+        SLIST_FOREACH(current_ts, &g_ts_suites, ts_next) {
+            current_ts->ts_test();
         }
     }
     testbench_test_complete();

Reply via email to