takashi kadono / Mbed OS Nucleo_446

Dependencies:   ssd1331

Committer:
kadonotakashi
Date:
Wed Oct 10 00:33:53 2018 +0000
Revision:
0:8fdf9a60065b
how to make mbed librry

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kadonotakashi 0:8fdf9a60065b 1 /*
kadonotakashi 0:8fdf9a60065b 2 * Copyright (c) 2014 ARM. All rights reserved.
kadonotakashi 0:8fdf9a60065b 3 */
kadonotakashi 0:8fdf9a60065b 4 /**
kadonotakashi 0:8fdf9a60065b 5 * \file \test_libTrace\Test.c
kadonotakashi 0:8fdf9a60065b 6 *
kadonotakashi 0:8fdf9a60065b 7 * \brief Unit tests for mbed_trace
kadonotakashi 0:8fdf9a60065b 8 */
kadonotakashi 0:8fdf9a60065b 9 #include <string.h>
kadonotakashi 0:8fdf9a60065b 10 #include <stdlib.h>
kadonotakashi 0:8fdf9a60065b 11 #include <stdint.h>
kadonotakashi 0:8fdf9a60065b 12
kadonotakashi 0:8fdf9a60065b 13 #include "mbed-cpputest/CppUTest/TestHarness.h"
kadonotakashi 0:8fdf9a60065b 14 #include "mbed-cpputest/CppUTest/SimpleString.h"
kadonotakashi 0:8fdf9a60065b 15 #include "mbed-cpputest/CppUTest/CommandLineTestRunner.h"
kadonotakashi 0:8fdf9a60065b 16
kadonotakashi 0:8fdf9a60065b 17 #define MBED_CONF_MBED_TRACE_ENABLE 1
kadonotakashi 0:8fdf9a60065b 18 #define MBED_CONF_MBED_TRACE_FEA_IPV6 1
kadonotakashi 0:8fdf9a60065b 19
kadonotakashi 0:8fdf9a60065b 20 #include "mbed-trace/mbed_trace.h"
kadonotakashi 0:8fdf9a60065b 21 #include "ip6tos_stub.h"
kadonotakashi 0:8fdf9a60065b 22
kadonotakashi 0:8fdf9a60065b 23 int main(int ac, char **av)
kadonotakashi 0:8fdf9a60065b 24 {
kadonotakashi 0:8fdf9a60065b 25 return CommandLineTestRunner::RunAllTests(ac, av);
kadonotakashi 0:8fdf9a60065b 26 }
kadonotakashi 0:8fdf9a60065b 27
kadonotakashi 0:8fdf9a60065b 28 static int mutex_wait_count = 0;
kadonotakashi 0:8fdf9a60065b 29 static int mutex_release_count = 0;
kadonotakashi 0:8fdf9a60065b 30 static bool check_mutex_lock_status = true;
kadonotakashi 0:8fdf9a60065b 31 void my_mutex_wait()
kadonotakashi 0:8fdf9a60065b 32 {
kadonotakashi 0:8fdf9a60065b 33 mutex_wait_count++;
kadonotakashi 0:8fdf9a60065b 34 }
kadonotakashi 0:8fdf9a60065b 35 void my_mutex_release()
kadonotakashi 0:8fdf9a60065b 36 {
kadonotakashi 0:8fdf9a60065b 37 mutex_release_count++;
kadonotakashi 0:8fdf9a60065b 38 }
kadonotakashi 0:8fdf9a60065b 39
kadonotakashi 0:8fdf9a60065b 40 char buf[1024];
kadonotakashi 0:8fdf9a60065b 41 #include <stdio.h>
kadonotakashi 0:8fdf9a60065b 42 void myprint(const char* str)
kadonotakashi 0:8fdf9a60065b 43 {
kadonotakashi 0:8fdf9a60065b 44 if ( check_mutex_lock_status ) {
kadonotakashi 0:8fdf9a60065b 45 CHECK( (mutex_wait_count - mutex_release_count) > 0 );
kadonotakashi 0:8fdf9a60065b 46 }
kadonotakashi 0:8fdf9a60065b 47 strcpy(buf, str);
kadonotakashi 0:8fdf9a60065b 48 }
kadonotakashi 0:8fdf9a60065b 49 TEST_GROUP(trace)
kadonotakashi 0:8fdf9a60065b 50 {
kadonotakashi 0:8fdf9a60065b 51 void setup()
kadonotakashi 0:8fdf9a60065b 52 {
kadonotakashi 0:8fdf9a60065b 53
kadonotakashi 0:8fdf9a60065b 54 mbed_trace_init();
kadonotakashi 0:8fdf9a60065b 55 mbed_trace_config_set(TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 56 mbed_trace_print_function_set( myprint );
kadonotakashi 0:8fdf9a60065b 57 mbed_trace_mutex_wait_function_set( my_mutex_wait );
kadonotakashi 0:8fdf9a60065b 58 mbed_trace_mutex_release_function_set( my_mutex_release );
kadonotakashi 0:8fdf9a60065b 59 }
kadonotakashi 0:8fdf9a60065b 60 void teardown()
kadonotakashi 0:8fdf9a60065b 61 {
kadonotakashi 0:8fdf9a60065b 62 CHECK(mutex_wait_count == mutex_release_count); // Check the mutex count with every test
kadonotakashi 0:8fdf9a60065b 63 mbed_trace_free();
kadonotakashi 0:8fdf9a60065b 64 }
kadonotakashi 0:8fdf9a60065b 65 };
kadonotakashi 0:8fdf9a60065b 66
kadonotakashi 0:8fdf9a60065b 67 /* Unity test code starts */
kadonotakashi 0:8fdf9a60065b 68 TEST(trace, MutexNotSet)
kadonotakashi 0:8fdf9a60065b 69 {
kadonotakashi 0:8fdf9a60065b 70 mbed_trace_mutex_wait_function_set( 0 );
kadonotakashi 0:8fdf9a60065b 71 mbed_trace_mutex_release_function_set( 0 );
kadonotakashi 0:8fdf9a60065b 72 int mutex_call_count_at_entry = mutex_wait_count;
kadonotakashi 0:8fdf9a60065b 73 check_mutex_lock_status = false;
kadonotakashi 0:8fdf9a60065b 74
kadonotakashi 0:8fdf9a60065b 75 char expectedStr[] = "Hello hello!";
kadonotakashi 0:8fdf9a60065b 76 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "Hello hello!");
kadonotakashi 0:8fdf9a60065b 77 STRCMP_EQUAL(expectedStr, buf);
kadonotakashi 0:8fdf9a60065b 78
kadonotakashi 0:8fdf9a60065b 79 CHECK( mutex_call_count_at_entry == mutex_wait_count );
kadonotakashi 0:8fdf9a60065b 80 CHECK( mutex_call_count_at_entry == mutex_release_count );
kadonotakashi 0:8fdf9a60065b 81
kadonotakashi 0:8fdf9a60065b 82 mbed_trace_mutex_wait_function_set( my_mutex_wait );
kadonotakashi 0:8fdf9a60065b 83 mbed_trace_mutex_release_function_set( my_mutex_release );
kadonotakashi 0:8fdf9a60065b 84 check_mutex_lock_status = true;
kadonotakashi 0:8fdf9a60065b 85 }
kadonotakashi 0:8fdf9a60065b 86
kadonotakashi 0:8fdf9a60065b 87 TEST(trace, Array)
kadonotakashi 0:8fdf9a60065b 88 {
kadonotakashi 0:8fdf9a60065b 89 unsigned char longStr[200] = {0x66};
kadonotakashi 0:8fdf9a60065b 90 for(int i=0;i<200;i++) {longStr[i] = 0x66; }
kadonotakashi 0:8fdf9a60065b 91 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", mbed_trace_array(longStr, 200) );
kadonotakashi 0:8fdf9a60065b 92 }
kadonotakashi 0:8fdf9a60065b 93
kadonotakashi 0:8fdf9a60065b 94 TEST(trace, Null0Array)
kadonotakashi 0:8fdf9a60065b 95 {
kadonotakashi 0:8fdf9a60065b 96 static const unsigned char array[2] = { 0x23, 0x45 };
kadonotakashi 0:8fdf9a60065b 97 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", mbed_trace_array(array, 2));
kadonotakashi 0:8fdf9a60065b 98 STRCMP_EQUAL("23:45", buf);
kadonotakashi 0:8fdf9a60065b 99 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", mbed_trace_array(array, 0));
kadonotakashi 0:8fdf9a60065b 100 STRCMP_EQUAL("", buf);
kadonotakashi 0:8fdf9a60065b 101 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", mbed_trace_array(NULL, 0));
kadonotakashi 0:8fdf9a60065b 102 STRCMP_EQUAL("", buf);
kadonotakashi 0:8fdf9a60065b 103 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", mbed_trace_array(NULL, 2));
kadonotakashi 0:8fdf9a60065b 104 STRCMP_EQUAL("<null>", buf);
kadonotakashi 0:8fdf9a60065b 105 }
kadonotakashi 0:8fdf9a60065b 106
kadonotakashi 0:8fdf9a60065b 107 TEST(trace, LongString)
kadonotakashi 0:8fdf9a60065b 108 {
kadonotakashi 0:8fdf9a60065b 109 char longStr[1000] = {0x36};
kadonotakashi 0:8fdf9a60065b 110 for(int i=0;i<999;i++) {longStr[i] = 0x36; }
kadonotakashi 0:8fdf9a60065b 111 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", longStr );
kadonotakashi 0:8fdf9a60065b 112 }
kadonotakashi 0:8fdf9a60065b 113
kadonotakashi 0:8fdf9a60065b 114 TEST(trace, TooLong)
kadonotakashi 0:8fdf9a60065b 115 {
kadonotakashi 0:8fdf9a60065b 116 #define TOO_LONG_SIZE 9400
kadonotakashi 0:8fdf9a60065b 117 #define TRACE_LINE_SIZE 1024
kadonotakashi 0:8fdf9a60065b 118 char longStr[TOO_LONG_SIZE] = {0};
kadonotakashi 0:8fdf9a60065b 119 for(int i=0;i<TOO_LONG_SIZE;i++) { longStr[i] = 0x36; }
kadonotakashi 0:8fdf9a60065b 120
kadonotakashi 0:8fdf9a60065b 121 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 122 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "%s", longStr );
kadonotakashi 0:8fdf9a60065b 123
kadonotakashi 0:8fdf9a60065b 124 char shouldStr[TRACE_LINE_SIZE] = "[DBG ][mygr]: ";
kadonotakashi 0:8fdf9a60065b 125 for(int i=14;i<TRACE_LINE_SIZE;i++) { shouldStr[i] = 0x36; }
kadonotakashi 0:8fdf9a60065b 126 shouldStr[TRACE_LINE_SIZE-1] = 0;
kadonotakashi 0:8fdf9a60065b 127 STRCMP_EQUAL(shouldStr, buf);
kadonotakashi 0:8fdf9a60065b 128 }
kadonotakashi 0:8fdf9a60065b 129
kadonotakashi 0:8fdf9a60065b 130 TEST(trace, BufferResize)
kadonotakashi 0:8fdf9a60065b 131 {
kadonotakashi 0:8fdf9a60065b 132 uint8_t arr[20] = {0};
kadonotakashi 0:8fdf9a60065b 133 memset(arr, '0', 20);
kadonotakashi 0:8fdf9a60065b 134
kadonotakashi 0:8fdf9a60065b 135 mbed_trace_buffer_sizes(0, 10);
kadonotakashi 0:8fdf9a60065b 136 STRCMP_EQUAL("30:30:30*", mbed_trace_array(arr, 20));
kadonotakashi 0:8fdf9a60065b 137 mbed_trace_buffer_sizes(0, 15);
kadonotakashi 0:8fdf9a60065b 138 STRCMP_EQUAL("30:30:30:30*", mbed_trace_array(arr, 20));
kadonotakashi 0:8fdf9a60065b 139 mbed_trace_buffer_sizes(0, 15);
kadonotakashi 0:8fdf9a60065b 140 STRCMP_EQUAL("30:30:30:30", mbed_trace_array(arr, 4));
kadonotakashi 0:8fdf9a60065b 141
kadonotakashi 0:8fdf9a60065b 142 const char * expectedStr = "0123456789";
kadonotakashi 0:8fdf9a60065b 143 mbed_trace_buffer_sizes(11, 0);
kadonotakashi 0:8fdf9a60065b 144 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "01234567890123456789");
kadonotakashi 0:8fdf9a60065b 145 STRCMP_EQUAL(expectedStr, buf);
kadonotakashi 0:8fdf9a60065b 146 expectedStr = "012345678901234";
kadonotakashi 0:8fdf9a60065b 147 mbed_trace_buffer_sizes(16, 0);
kadonotakashi 0:8fdf9a60065b 148 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "01234567890123456789");
kadonotakashi 0:8fdf9a60065b 149 STRCMP_EQUAL(expectedStr, buf);
kadonotakashi 0:8fdf9a60065b 150 expectedStr = "012345678901234";
kadonotakashi 0:8fdf9a60065b 151 mbed_trace_buffer_sizes(16, 0);
kadonotakashi 0:8fdf9a60065b 152 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "012345678901234");
kadonotakashi 0:8fdf9a60065b 153 STRCMP_EQUAL(expectedStr, buf);
kadonotakashi 0:8fdf9a60065b 154 }
kadonotakashi 0:8fdf9a60065b 155
kadonotakashi 0:8fdf9a60065b 156 TEST(trace, PreInitConfiguration)
kadonotakashi 0:8fdf9a60065b 157 {
kadonotakashi 0:8fdf9a60065b 158 uint8_t arr[20] = {0};
kadonotakashi 0:8fdf9a60065b 159 memset(arr, '0', 20);
kadonotakashi 0:8fdf9a60065b 160
kadonotakashi 0:8fdf9a60065b 161 mbed_trace_free();
kadonotakashi 0:8fdf9a60065b 162 mbed_trace_config_set(TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 163 mbed_trace_print_function_set( myprint );
kadonotakashi 0:8fdf9a60065b 164 mbed_trace_buffer_sizes(11, 10);
kadonotakashi 0:8fdf9a60065b 165 mbed_trace_mutex_wait_function_set( my_mutex_wait );
kadonotakashi 0:8fdf9a60065b 166 mbed_trace_mutex_release_function_set( my_mutex_release );
kadonotakashi 0:8fdf9a60065b 167 mbed_trace_init();
kadonotakashi 0:8fdf9a60065b 168
kadonotakashi 0:8fdf9a60065b 169 STRCMP_EQUAL("30:30:30*", mbed_trace_array(arr, 20));
kadonotakashi 0:8fdf9a60065b 170
kadonotakashi 0:8fdf9a60065b 171 const char * expectedStr = "0123456789";
kadonotakashi 0:8fdf9a60065b 172 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "01234567890123456789");
kadonotakashi 0:8fdf9a60065b 173 STRCMP_EQUAL(expectedStr, buf);
kadonotakashi 0:8fdf9a60065b 174 }
kadonotakashi 0:8fdf9a60065b 175
kadonotakashi 0:8fdf9a60065b 176 #if YOTTA_CFG_MBED_TRACE_FEA_IPV6 == 1
kadonotakashi 0:8fdf9a60065b 177 ip6tos_stub_def_t ip6tos_stub; // extern variable
kadonotakashi 0:8fdf9a60065b 178
kadonotakashi 0:8fdf9a60065b 179 TEST(trace, ipv6)
kadonotakashi 0:8fdf9a60065b 180 {
kadonotakashi 0:8fdf9a60065b 181 uint8_t prefix[] = { 0x14, 0x6e, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00 };
kadonotakashi 0:8fdf9a60065b 182 int prefix_len = 64;
kadonotakashi 0:8fdf9a60065b 183
kadonotakashi 0:8fdf9a60065b 184 char expected_str1[] = "146e:a00::/64";
kadonotakashi 0:8fdf9a60065b 185 ip6tos_stub.output_string = "146e:a00::/64";
kadonotakashi 0:8fdf9a60065b 186 char *str = mbed_trace_ipv6_prefix(prefix, prefix_len);
kadonotakashi 0:8fdf9a60065b 187 CHECK(memcmp(ip6tos_stub.input_array, prefix, 8) == 0);
kadonotakashi 0:8fdf9a60065b 188 STRCMP_EQUAL(expected_str1, str);
kadonotakashi 0:8fdf9a60065b 189 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks");
kadonotakashi 0:8fdf9a60065b 190
kadonotakashi 0:8fdf9a60065b 191 char expected_str2[] = "::/0";
kadonotakashi 0:8fdf9a60065b 192 ip6tos_stub.output_string = "::/0";
kadonotakashi 0:8fdf9a60065b 193 str = mbed_trace_ipv6_prefix(NULL, 0);
kadonotakashi 0:8fdf9a60065b 194 STRCMP_EQUAL(expected_str2, str);
kadonotakashi 0:8fdf9a60065b 195 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks");
kadonotakashi 0:8fdf9a60065b 196
kadonotakashi 0:8fdf9a60065b 197 char expected_str3[] = "<err>";
kadonotakashi 0:8fdf9a60065b 198 str = mbed_trace_ipv6_prefix(NULL, 1);
kadonotakashi 0:8fdf9a60065b 199 STRCMP_EQUAL(expected_str3, str);
kadonotakashi 0:8fdf9a60065b 200 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks");
kadonotakashi 0:8fdf9a60065b 201
kadonotakashi 0:8fdf9a60065b 202 char expected_str4[] = "<err>";
kadonotakashi 0:8fdf9a60065b 203 str = mbed_trace_ipv6_prefix(prefix, 200);
kadonotakashi 0:8fdf9a60065b 204 STRCMP_EQUAL(expected_str4, str);
kadonotakashi 0:8fdf9a60065b 205 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks");
kadonotakashi 0:8fdf9a60065b 206
kadonotakashi 0:8fdf9a60065b 207 char expected_str5[] = "";
kadonotakashi 0:8fdf9a60065b 208 ip6tos_stub.output_string = "0123456789012345678901234567890123456789";
kadonotakashi 0:8fdf9a60065b 209 str = mbed_trace_ipv6_prefix(prefix, 64); // Fill the tmp_data buffer
kadonotakashi 0:8fdf9a60065b 210 str = mbed_trace_ipv6_prefix(prefix, 64);
kadonotakashi 0:8fdf9a60065b 211 str = mbed_trace_ipv6_prefix(prefix, 64);
kadonotakashi 0:8fdf9a60065b 212 str = mbed_trace_ipv6_prefix(prefix, 64);
kadonotakashi 0:8fdf9a60065b 213 STRCMP_EQUAL(expected_str5, str);
kadonotakashi 0:8fdf9a60065b 214 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "flush buffers and locks");
kadonotakashi 0:8fdf9a60065b 215 }
kadonotakashi 0:8fdf9a60065b 216
kadonotakashi 0:8fdf9a60065b 217 TEST(trace, active_level_all_ipv6)
kadonotakashi 0:8fdf9a60065b 218 {
kadonotakashi 0:8fdf9a60065b 219 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 220
kadonotakashi 0:8fdf9a60065b 221 uint8_t arr[] = { 0x20, 0x01, 0xd, 0xb8, 0,0,0,0,0,1,0,0,0,0,0,1 };
kadonotakashi 0:8fdf9a60065b 222 ip6tos_stub.output_string = "2001:db8::1:0:0:1";
kadonotakashi 0:8fdf9a60065b 223 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "my addr: %s", mbed_trace_ipv6(arr));
kadonotakashi 0:8fdf9a60065b 224 CHECK(memcmp(ip6tos_stub.input_array, arr, 16) == 0);
kadonotakashi 0:8fdf9a60065b 225 STRCMP_EQUAL("[DBG ][mygr]: my addr: 2001:db8::1:0:0:1", buf);
kadonotakashi 0:8fdf9a60065b 226 }
kadonotakashi 0:8fdf9a60065b 227 #endif //YOTTA_CFG_MBED_TRACE_FEA_IPV6
kadonotakashi 0:8fdf9a60065b 228
kadonotakashi 0:8fdf9a60065b 229 TEST(trace, config_change)
kadonotakashi 0:8fdf9a60065b 230 {
kadonotakashi 0:8fdf9a60065b 231 mbed_trace_config_set(TRACE_MODE_COLOR|TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 232 CHECK(mbed_trace_config_get() == TRACE_MODE_COLOR|TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 233 mbed_trace_config_set(TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_NONE);
kadonotakashi 0:8fdf9a60065b 234 CHECK(mbed_trace_config_get() == TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_NONE);
kadonotakashi 0:8fdf9a60065b 235 mbed_trace_config_set(TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 236 CHECK(mbed_trace_config_get() == TRACE_MODE_PLAIN|TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 237 }
kadonotakashi 0:8fdf9a60065b 238
kadonotakashi 0:8fdf9a60065b 239 TEST(trace, active_level_all_color)
kadonotakashi 0:8fdf9a60065b 240 {
kadonotakashi 0:8fdf9a60065b 241 mbed_trace_config_set(TRACE_MODE_COLOR|TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 242 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello");
kadonotakashi 0:8fdf9a60065b 243 STRCMP_EQUAL("\x1b[90m[DBG ][mygr]: hello\x1b[0m", buf);
kadonotakashi 0:8fdf9a60065b 244 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "to one");
kadonotakashi 0:8fdf9a60065b 245 STRCMP_EQUAL("\x1b[39m[INFO][mygr]: to one\x1b[0m", buf);
kadonotakashi 0:8fdf9a60065b 246 mbed_tracef(TRACE_LEVEL_WARN, "mygr", "and all");
kadonotakashi 0:8fdf9a60065b 247 STRCMP_EQUAL("\x1b[33m[WARN][mygr]: and all\x1b[0m", buf);
kadonotakashi 0:8fdf9a60065b 248 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "even you");
kadonotakashi 0:8fdf9a60065b 249 STRCMP_EQUAL("\x1b[31m[ERR ][mygr]: even you\x1b[0m", buf);
kadonotakashi 0:8fdf9a60065b 250 }
kadonotakashi 0:8fdf9a60065b 251
kadonotakashi 0:8fdf9a60065b 252 TEST(trace, change_levels)
kadonotakashi 0:8fdf9a60065b 253 {
kadonotakashi 0:8fdf9a60065b 254 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG);
kadonotakashi 0:8fdf9a60065b 255 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 256 STRCMP_EQUAL("[DBG ][mygr]: hep", buf);
kadonotakashi 0:8fdf9a60065b 257
kadonotakashi 0:8fdf9a60065b 258 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG|TRACE_MODE_PLAIN);
kadonotakashi 0:8fdf9a60065b 259 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 260 STRCMP_EQUAL("hep", buf);
kadonotakashi 0:8fdf9a60065b 261
kadonotakashi 0:8fdf9a60065b 262 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG|TRACE_MODE_COLOR);
kadonotakashi 0:8fdf9a60065b 263 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 264 STRCMP_EQUAL("\x1b[31m[ERR ][mygr]: hep\x1b[0m", buf);
kadonotakashi 0:8fdf9a60065b 265
kadonotakashi 0:8fdf9a60065b 266 }
kadonotakashi 0:8fdf9a60065b 267
kadonotakashi 0:8fdf9a60065b 268 TEST(trace, active_level_debug)
kadonotakashi 0:8fdf9a60065b 269 {
kadonotakashi 0:8fdf9a60065b 270 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_DEBUG);
kadonotakashi 0:8fdf9a60065b 271
kadonotakashi 0:8fdf9a60065b 272 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 273 STRCMP_EQUAL("[DBG ][mygr]: hep", buf);
kadonotakashi 0:8fdf9a60065b 274
kadonotakashi 0:8fdf9a60065b 275 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 276 STRCMP_EQUAL("[INFO][mygr]: test", buf);
kadonotakashi 0:8fdf9a60065b 277
kadonotakashi 0:8fdf9a60065b 278 mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups");
kadonotakashi 0:8fdf9a60065b 279 STRCMP_EQUAL("[WARN][mygr]: hups", buf);
kadonotakashi 0:8fdf9a60065b 280
kadonotakashi 0:8fdf9a60065b 281 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou");
kadonotakashi 0:8fdf9a60065b 282 STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf);
kadonotakashi 0:8fdf9a60065b 283 }
kadonotakashi 0:8fdf9a60065b 284
kadonotakashi 0:8fdf9a60065b 285 TEST(trace, active_level_info)
kadonotakashi 0:8fdf9a60065b 286 {
kadonotakashi 0:8fdf9a60065b 287 buf[0] = 0;
kadonotakashi 0:8fdf9a60065b 288 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_INFO);
kadonotakashi 0:8fdf9a60065b 289
kadonotakashi 0:8fdf9a60065b 290 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 291 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 292
kadonotakashi 0:8fdf9a60065b 293 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 294 STRCMP_EQUAL("[INFO][mygr]: test", buf);
kadonotakashi 0:8fdf9a60065b 295
kadonotakashi 0:8fdf9a60065b 296 mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups");
kadonotakashi 0:8fdf9a60065b 297 STRCMP_EQUAL("[WARN][mygr]: hups", buf);
kadonotakashi 0:8fdf9a60065b 298
kadonotakashi 0:8fdf9a60065b 299 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou");
kadonotakashi 0:8fdf9a60065b 300 STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf);
kadonotakashi 0:8fdf9a60065b 301 }
kadonotakashi 0:8fdf9a60065b 302
kadonotakashi 0:8fdf9a60065b 303 TEST(trace, active_level_warn)
kadonotakashi 0:8fdf9a60065b 304 {
kadonotakashi 0:8fdf9a60065b 305 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_WARN);
kadonotakashi 0:8fdf9a60065b 306
kadonotakashi 0:8fdf9a60065b 307 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 308 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 309
kadonotakashi 0:8fdf9a60065b 310 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 311 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 312
kadonotakashi 0:8fdf9a60065b 313 mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups");
kadonotakashi 0:8fdf9a60065b 314 STRCMP_EQUAL("[WARN][mygr]: hups", buf);
kadonotakashi 0:8fdf9a60065b 315
kadonotakashi 0:8fdf9a60065b 316 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou");
kadonotakashi 0:8fdf9a60065b 317 STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf);
kadonotakashi 0:8fdf9a60065b 318 }
kadonotakashi 0:8fdf9a60065b 319
kadonotakashi 0:8fdf9a60065b 320 TEST(trace, active_level_error)
kadonotakashi 0:8fdf9a60065b 321 {
kadonotakashi 0:8fdf9a60065b 322 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ERROR);
kadonotakashi 0:8fdf9a60065b 323
kadonotakashi 0:8fdf9a60065b 324 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 325 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 326
kadonotakashi 0:8fdf9a60065b 327 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 328 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 329
kadonotakashi 0:8fdf9a60065b 330 mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups");
kadonotakashi 0:8fdf9a60065b 331 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 332
kadonotakashi 0:8fdf9a60065b 333 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou");
kadonotakashi 0:8fdf9a60065b 334 STRCMP_EQUAL("[ERR ][mygr]: o'ou", buf);
kadonotakashi 0:8fdf9a60065b 335 }
kadonotakashi 0:8fdf9a60065b 336 TEST(trace, active_level_none)
kadonotakashi 0:8fdf9a60065b 337 {
kadonotakashi 0:8fdf9a60065b 338 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_NONE);
kadonotakashi 0:8fdf9a60065b 339
kadonotakashi 0:8fdf9a60065b 340 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hep");
kadonotakashi 0:8fdf9a60065b 341 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 342
kadonotakashi 0:8fdf9a60065b 343 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 344 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 345
kadonotakashi 0:8fdf9a60065b 346 mbed_tracef(TRACE_LEVEL_WARN, "mygr", "hups");
kadonotakashi 0:8fdf9a60065b 347 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 348
kadonotakashi 0:8fdf9a60065b 349 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "o'ou");
kadonotakashi 0:8fdf9a60065b 350 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 351 }
kadonotakashi 0:8fdf9a60065b 352
kadonotakashi 0:8fdf9a60065b 353 TEST(trace, active_level_all_1)
kadonotakashi 0:8fdf9a60065b 354 {
kadonotakashi 0:8fdf9a60065b 355 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 356 mbed_trace_exclude_filters_set((char*)"mygr");
kadonotakashi 0:8fdf9a60065b 357
kadonotakashi 0:8fdf9a60065b 358 mbed_tracef(TRACE_LEVEL_DEBUG, "mygu", "hep");
kadonotakashi 0:8fdf9a60065b 359 STRCMP_EQUAL("[DBG ][mygu]: hep", buf);
kadonotakashi 0:8fdf9a60065b 360
kadonotakashi 0:8fdf9a60065b 361 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 362 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 363 }
kadonotakashi 0:8fdf9a60065b 364 TEST(trace, active_level_all_2)
kadonotakashi 0:8fdf9a60065b 365 {
kadonotakashi 0:8fdf9a60065b 366 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 367 mbed_trace_exclude_filters_set((char*)"mygr,mygu");
kadonotakashi 0:8fdf9a60065b 368
kadonotakashi 0:8fdf9a60065b 369 mbed_tracef(TRACE_LEVEL_DEBUG, "mygu", "hep");
kadonotakashi 0:8fdf9a60065b 370 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 371
kadonotakashi 0:8fdf9a60065b 372 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 373 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 374 }
kadonotakashi 0:8fdf9a60065b 375 TEST(trace, active_level_all_3)
kadonotakashi 0:8fdf9a60065b 376 {
kadonotakashi 0:8fdf9a60065b 377 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 378 mbed_trace_include_filters_set((char*)"mygr");
kadonotakashi 0:8fdf9a60065b 379
kadonotakashi 0:8fdf9a60065b 380 mbed_tracef(TRACE_LEVEL_DEBUG, "mygu", "hep");
kadonotakashi 0:8fdf9a60065b 381 STRCMP_EQUAL("", mbed_trace_last());
kadonotakashi 0:8fdf9a60065b 382
kadonotakashi 0:8fdf9a60065b 383 mbed_tracef(TRACE_LEVEL_INFO, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 384 STRCMP_EQUAL("[INFO][mygr]: test", buf);
kadonotakashi 0:8fdf9a60065b 385 }
kadonotakashi 0:8fdf9a60065b 386
kadonotakashi 0:8fdf9a60065b 387 TEST(trace, active_level_all_array)
kadonotakashi 0:8fdf9a60065b 388 {
kadonotakashi 0:8fdf9a60065b 389 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 390
kadonotakashi 0:8fdf9a60065b 391 uint8_t arr[] = {0x01, 0x02, 0x03};
kadonotakashi 0:8fdf9a60065b 392 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "my addr: %s", mbed_trace_array(arr, 3));
kadonotakashi 0:8fdf9a60065b 393 STRCMP_EQUAL("[DBG ][mygr]: my addr: 01:02:03", buf);
kadonotakashi 0:8fdf9a60065b 394 }
kadonotakashi 0:8fdf9a60065b 395
kadonotakashi 0:8fdf9a60065b 396
kadonotakashi 0:8fdf9a60065b 397 size_t time_length;
kadonotakashi 0:8fdf9a60065b 398 char trace_prefix_str[] = "[<TIME>]";
kadonotakashi 0:8fdf9a60065b 399 char* trace_prefix(size_t length){
kadonotakashi 0:8fdf9a60065b 400 time_length = length;
kadonotakashi 0:8fdf9a60065b 401 return trace_prefix_str;
kadonotakashi 0:8fdf9a60065b 402 }
kadonotakashi 0:8fdf9a60065b 403 TEST(trace, prefix)
kadonotakashi 0:8fdf9a60065b 404 {
kadonotakashi 0:8fdf9a60065b 405 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 406 mbed_trace_prefix_function_set( &trace_prefix );
kadonotakashi 0:8fdf9a60065b 407 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "test %d %d", 1, 2);
kadonotakashi 0:8fdf9a60065b 408 STRCMP_EQUAL("[<TIME>][DBG ][mygr]: test 1 2", buf);
kadonotakashi 0:8fdf9a60065b 409 //TEST_ASSERT_EQUAL_INT(4, time_length);
kadonotakashi 0:8fdf9a60065b 410
kadonotakashi 0:8fdf9a60065b 411 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL|TRACE_MODE_PLAIN);
kadonotakashi 0:8fdf9a60065b 412 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 413 STRCMP_EQUAL("test", buf);
kadonotakashi 0:8fdf9a60065b 414
kadonotakashi 0:8fdf9a60065b 415 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL|TRACE_MODE_COLOR);
kadonotakashi 0:8fdf9a60065b 416 mbed_tracef(TRACE_LEVEL_ERROR, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 417 STRCMP_EQUAL("\x1b[31m[<TIME>][ERR ][mygr]: test\x1b[0m", buf);
kadonotakashi 0:8fdf9a60065b 418 }
kadonotakashi 0:8fdf9a60065b 419 char trace_suffix_str[] = "[END]";
kadonotakashi 0:8fdf9a60065b 420 char* trace_suffix()
kadonotakashi 0:8fdf9a60065b 421 {
kadonotakashi 0:8fdf9a60065b 422 return trace_suffix_str;
kadonotakashi 0:8fdf9a60065b 423 }
kadonotakashi 0:8fdf9a60065b 424 TEST(trace, suffix)
kadonotakashi 0:8fdf9a60065b 425 {
kadonotakashi 0:8fdf9a60065b 426 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 427 mbed_trace_prefix_function_set( &trace_prefix );
kadonotakashi 0:8fdf9a60065b 428 mbed_trace_suffix_function_set( &trace_suffix );
kadonotakashi 0:8fdf9a60065b 429 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "test");
kadonotakashi 0:8fdf9a60065b 430 STRCMP_EQUAL("[<TIME>][DBG ][mygr]: test[END]", buf);
kadonotakashi 0:8fdf9a60065b 431 }
kadonotakashi 0:8fdf9a60065b 432 TEST(trace, formatting)
kadonotakashi 0:8fdf9a60065b 433 {
kadonotakashi 0:8fdf9a60065b 434 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello %d %d %.1f", 12, 13, 5.5);
kadonotakashi 0:8fdf9a60065b 435 STRCMP_EQUAL("hello 12 13 5.5", buf);
kadonotakashi 0:8fdf9a60065b 436
kadonotakashi 0:8fdf9a60065b 437 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello %d %d %d %d %d %d", 12, 13, 5, 6, 8, 9);
kadonotakashi 0:8fdf9a60065b 438 STRCMP_EQUAL("hello 12 13 5 6 8 9", buf);
kadonotakashi 0:8fdf9a60065b 439
kadonotakashi 0:8fdf9a60065b 440 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "HOH %d HAH %d %d %d %d %d", 12, 13, 5, 6, 8, 9);
kadonotakashi 0:8fdf9a60065b 441 STRCMP_EQUAL("HOH 12 HAH 13 5 6 8 9", buf);
kadonotakashi 0:8fdf9a60065b 442 }
kadonotakashi 0:8fdf9a60065b 443 TEST(trace, filters_control)
kadonotakashi 0:8fdf9a60065b 444 {
kadonotakashi 0:8fdf9a60065b 445 mbed_trace_include_filters_set((char*)"hello");
kadonotakashi 0:8fdf9a60065b 446 STRCMP_EQUAL("hello", mbed_trace_include_filters_get());
kadonotakashi 0:8fdf9a60065b 447
kadonotakashi 0:8fdf9a60065b 448 mbed_trace_include_filters_set(0);
kadonotakashi 0:8fdf9a60065b 449 STRCMP_EQUAL("", mbed_trace_include_filters_get());
kadonotakashi 0:8fdf9a60065b 450
kadonotakashi 0:8fdf9a60065b 451 mbed_trace_exclude_filters_set((char*)"hello");
kadonotakashi 0:8fdf9a60065b 452 STRCMP_EQUAL("hello", mbed_trace_exclude_filters_get());
kadonotakashi 0:8fdf9a60065b 453
kadonotakashi 0:8fdf9a60065b 454 mbed_trace_exclude_filters_set(0);
kadonotakashi 0:8fdf9a60065b 455 STRCMP_EQUAL("", mbed_trace_exclude_filters_get());
kadonotakashi 0:8fdf9a60065b 456 }
kadonotakashi 0:8fdf9a60065b 457 TEST(trace, cmd_printer)
kadonotakashi 0:8fdf9a60065b 458 {
kadonotakashi 0:8fdf9a60065b 459 buf[0] = 0;
kadonotakashi 0:8fdf9a60065b 460 mbed_trace_config_set(TRACE_ACTIVE_LEVEL_ALL);
kadonotakashi 0:8fdf9a60065b 461 mbed_tracef(TRACE_LEVEL_CMD, "mygr", "default printer");
kadonotakashi 0:8fdf9a60065b 462 STRCMP_EQUAL("default printer", buf);
kadonotakashi 0:8fdf9a60065b 463
kadonotakashi 0:8fdf9a60065b 464 mbed_trace_cmdprint_function_set( myprint );
kadonotakashi 0:8fdf9a60065b 465 mbed_tracef(TRACE_LEVEL_CMD, "mygr", "custom printer");
kadonotakashi 0:8fdf9a60065b 466 STRCMP_EQUAL("\n", buf); // because there is two print calls, second one add line feeds
kadonotakashi 0:8fdf9a60065b 467 }
kadonotakashi 0:8fdf9a60065b 468 TEST(trace, no_printer)
kadonotakashi 0:8fdf9a60065b 469 {
kadonotakashi 0:8fdf9a60065b 470 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello");
kadonotakashi 0:8fdf9a60065b 471 STRCMP_EQUAL("hello", buf);
kadonotakashi 0:8fdf9a60065b 472
kadonotakashi 0:8fdf9a60065b 473 mbed_trace_print_function_set(NULL);
kadonotakashi 0:8fdf9a60065b 474 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "this shoudnt be printed because printer is missing");
kadonotakashi 0:8fdf9a60065b 475 STRCMP_EQUAL("hello", buf);
kadonotakashi 0:8fdf9a60065b 476 }
kadonotakashi 0:8fdf9a60065b 477 TEST(trace, uninitialized)
kadonotakashi 0:8fdf9a60065b 478 {
kadonotakashi 0:8fdf9a60065b 479 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "hello");
kadonotakashi 0:8fdf9a60065b 480 STRCMP_EQUAL("hello", buf);
kadonotakashi 0:8fdf9a60065b 481
kadonotakashi 0:8fdf9a60065b 482 mbed_trace_free();
kadonotakashi 0:8fdf9a60065b 483
kadonotakashi 0:8fdf9a60065b 484 mbed_tracef(TRACE_LEVEL_DEBUG, "mygr", "this shoudnt be printed because mtrace is not initialized");
kadonotakashi 0:8fdf9a60065b 485 STRCMP_EQUAL("hello", buf);
kadonotakashi 0:8fdf9a60065b 486 }
kadonotakashi 0:8fdf9a60065b 487