21
21
#include " unity/unity.h"
22
22
#include " utest/utest.h"
23
23
24
+ #define PAYLOAD_LENGTH 36
25
+
24
26
using namespace utest ::v1;
25
27
28
+ // Fill a buffer with a slice of the ASCII alphabet.
29
+ void fill_buffer (char * buffer, unsigned int length, unsigned int index) {
30
+ unsigned int start = length * index;
31
+ for (int i = 0 ; i < length - 1 ; i++) {
32
+ buffer[i] = ' a' + ((start + i) % 26 );
33
+ }
34
+ buffer[length - 1 ] = ' \0 ' ;
35
+ }
36
+
26
37
// Echo server (echo payload to host)
27
38
template <int N>
28
39
void test_case_echo_server_x () {
29
40
char _key[11 ] = {};
30
- char _value[128 ] = {};
41
+ char _tx_value[PAYLOAD_LENGTH + 1 ] = {};
42
+ char _rx_value[PAYLOAD_LENGTH + 1 ] = {};
31
43
const int echo_count = N;
32
- const char _key_const[] = " echo_count" ;
44
+ const char _echo_count_key_const[] = " echo_count" ;
45
+ const char _echo_key_const[] = " echo" ;
33
46
int expected_key = 1 ;
34
47
35
- greentea_send_kv (_key_const, echo_count);
48
+ // Send up the echo count
49
+ greentea_send_kv (_echo_count_key_const, echo_count);
36
50
// Handshake with host
37
51
do {
38
- greentea_parse_kv (_key, _value, sizeof (_key), sizeof (_value));
39
- expected_key = strcmp (_key_const, _key);
52
+ greentea_parse_kv (_key, _rx_value, sizeof (_key), sizeof (_rx_value));
53
+ // Ensure the key received is "echo_count" and not some old data
54
+ expected_key = strcmp (_echo_count_key_const, _key);
40
55
} while (expected_key);
41
- TEST_ASSERT_EQUAL_INT (echo_count, atoi (_value ));
56
+ TEST_ASSERT_EQUAL_INT (echo_count, atoi (_rx_value ));
42
57
43
58
for (int i=0 ; i < echo_count; ++i) {
44
- greentea_parse_kv (_key, _value, sizeof (_key), sizeof (_value));
45
- greentea_send_kv (_key, _value);
59
+ fill_buffer (_tx_value, PAYLOAD_LENGTH, i);
60
+ greentea_send_kv (_echo_key_const, _tx_value);
61
+ do {
62
+ greentea_parse_kv (_key, _rx_value, sizeof (_key), sizeof (_rx_value));
63
+ // Ensure the key received is "echo" and not some old data
64
+ expected_key = strcmp (_echo_key_const, _key);
65
+ } while (expected_key);
66
+ TEST_ASSERT (strncmp (_tx_value, _rx_value, PAYLOAD_LENGTH) == 0 );
46
67
}
47
68
}
48
69
@@ -56,7 +77,7 @@ Case cases[] = {
56
77
};
57
78
58
79
utest::v1::status_t greentea_test_setup (const size_t number_of_cases) {
59
- GREENTEA_SETUP (30 , " echo " );
80
+ GREENTEA_SETUP (30 , " device_echo " );
60
81
return greentea_test_setup_handler (number_of_cases);
61
82
}
62
83
0 commit comments