@@ -74,28 +74,33 @@ void UDPSOCKET_ECHOTEST()
74
74
int pkt_s = pkt_sizes[s_idx];
75
75
76
76
fill_tx_buffer_ascii (tx_buffer, BUFF_SIZE);
77
+ int packets_sent_prev = packets_sent;
77
78
78
79
for (int retry_cnt = 0 ; retry_cnt <= 2 ; retry_cnt++) {
79
80
memset (rx_buffer, 0 , BUFF_SIZE);
80
81
sent = sock.sendto (udp_addr, tx_buffer, pkt_s);
81
82
if (check_oversized_packets (sent, pkt_s)) {
82
83
TEST_IGNORE_MESSAGE (" This device does not handle oversized packets" );
83
- } else if (sent > 0 ) {
84
+ } else if (sent == pkt_s ) {
84
85
packets_sent++;
85
- }
86
- if (sent != pkt_s) {
86
+ } else {
87
87
printf (" [Round#%02d - Sender] error, returned %d\n " , s_idx, sent);
88
88
continue ;
89
89
}
90
90
recvd = sock.recvfrom (NULL , rx_buffer, pkt_s);
91
91
if (recvd == pkt_s) {
92
92
break ;
93
+ } else {
94
+ printf (" [Round#%02d - Receiver] error, returned %d\n " , s_idx, recvd);
93
95
}
94
96
}
95
97
if (memcmp (tx_buffer, rx_buffer, pkt_s) == 0 ) {
96
98
packets_recv++;
97
99
}
100
+ // Make sure that at least one packet of every size was sent.
101
+ TEST_ASSERT_TRUE (packets_sent > packets_sent_prev);
98
102
}
103
+
99
104
// Packet loss up to 30% tolerated
100
105
if (packets_sent > 0 ) {
101
106
double loss_ratio = 1 - ((double )packets_recv / (double )packets_sent);
@@ -154,6 +159,7 @@ void UDPSOCKET_ECHOTEST_NONBLOCK()
154
159
155
160
for (int s_idx = 0 ; s_idx < sizeof (pkt_sizes) / sizeof (*pkt_sizes); ++s_idx) {
156
161
int pkt_s = pkt_sizes[s_idx];
162
+ int packets_sent_prev = packets_sent;
157
163
158
164
thread = new Thread (osPriorityNormal,
159
165
OS_STACK_SIZE,
@@ -165,16 +171,15 @@ void UDPSOCKET_ECHOTEST_NONBLOCK()
165
171
fill_tx_buffer_ascii (tx_buffer, pkt_s);
166
172
167
173
sent = sock.sendto (udp_addr, tx_buffer, pkt_s);
168
- if (sent > 0 ) {
174
+ if (sent == pkt_s ) {
169
175
packets_sent++;
170
- }
171
- if (sent == NSAPI_ERROR_WOULD_BLOCK) {
176
+ } else if (sent == NSAPI_ERROR_WOULD_BLOCK) {
172
177
if (tc_exec_time.read () >= time_allotted ||
173
178
osSignalWait (SIGNAL_SIGIO_TX, SIGIO_TIMEOUT).status == osEventTimeout) {
174
179
continue ;
175
180
}
176
181
--retry_cnt;
177
- } else if (sent != pkt_s) {
182
+ } else {
178
183
printf (" [Round#%02d - Sender] error, returned %d\n " , s_idx, sent);
179
184
continue ;
180
185
}
@@ -183,6 +188,8 @@ void UDPSOCKET_ECHOTEST_NONBLOCK()
183
188
}
184
189
break ;
185
190
}
191
+ // Make sure that at least one packet of every size was sent.
192
+ TEST_ASSERT_TRUE (packets_sent > packets_sent_prev);
186
193
thread->join ();
187
194
delete thread;
188
195
if (memcmp (tx_buffer, rx_buffer, pkt_s) == 0 ) {
0 commit comments