ST / ST_Events-old

Dependents:   HelloWorld_CCA01M1 HelloWorld_CCA02M1 CI-data-logger-server HelloWorld_CCA02M1 ... more

This is a fork of the events subdirectory of https://github.com/ARMmbed/mbed-os.

Note, you must import this library with import name: events!!!

Committer:
Seppo Takalo
Date:
Mon Oct 03 14:40:33 2016 +0300
Revision:
201:dd058cec5f28
Squashed 'features/FEATURE_COMMON_PAL/mbed-trace/' content from commit b17e969

git-subtree-dir: features/FEATURE_COMMON_PAL/mbed-trace
git-subtree-split: b17e96970777cdc61ba143bdd6ffc7b640aa6311

Who changed what in which revision?

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