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();
