Skip to content

Commit 5303b10

Browse files
authored
Merge pull request #11693 from mtomczykmobica/ONME-4398
UDPSOCKET_ECHOTEST change to tolerate duplicate packets
2 parents f27aec3 + 11864c7 commit 5303b10

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

TESTS/netsocket/udp/udpsocket_echotest.cpp

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,11 @@ static const int pkt_sizes[PKTS] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \
4646
100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, \
4747
1100, 1200
4848
};
49+
static bool pkt_received[PKTS] = {false, false, false, false, false, false, false, false, false, false, \
50+
false, false, false, false, false, false, false, false, false, false, \
51+
false, false
52+
};
53+
4954
Timer tc_exec_time;
5055
int time_allotted;
5156
}
@@ -68,6 +73,7 @@ void UDPSOCKET_ECHOTEST()
6873
int sent;
6974
int packets_sent = 0;
7075
int packets_recv = 0;
76+
bool received_duplicate_packet = false;
7177
for (unsigned int s_idx = 0; s_idx < sizeof(pkt_sizes) / sizeof(*pkt_sizes); ++s_idx) {
7278
int pkt_s = pkt_sizes[s_idx];
7379

@@ -85,7 +91,20 @@ void UDPSOCKET_ECHOTEST()
8591
printf("[Round#%02d - Sender] error, returned %d\n", s_idx, sent);
8692
continue;
8793
}
88-
recvd = sock.recvfrom(NULL, rx_buffer, pkt_s);
94+
95+
do {
96+
received_duplicate_packet = false;
97+
recvd = sock.recvfrom(NULL, rx_buffer, pkt_s);
98+
//Check if received duplicated packet
99+
for (unsigned int d_idx = 0; d_idx < PKTS; ++d_idx) {
100+
if (pkt_received[d_idx] && d_idx != s_idx && recvd == pkt_sizes[d_idx]) {
101+
printf("[Round#%02d - Receiver] info, received duplicate packet %d\n", s_idx, d_idx);
102+
received_duplicate_packet = true;
103+
break;
104+
}
105+
}
106+
} while (received_duplicate_packet);
107+
89108
if (recvd == pkt_s) {
90109
break;
91110
} else {
@@ -94,6 +113,7 @@ void UDPSOCKET_ECHOTEST()
94113
}
95114
if (memcmp(tx_buffer, rx_buffer, pkt_s) == 0) {
96115
packets_recv++;
116+
pkt_received[s_idx] = true;
97117
}
98118
// Make sure that at least one packet of every size was sent.
99119
TEST_ASSERT_TRUE(packets_sent > packets_sent_prev);

0 commit comments

Comments
 (0)