Fix UDPSOCKET_ECHOTEST to handle oversized packets

pull/12334/head
Ari Parkkila 2020-01-29 03:06:55 -08:00
parent 1234b3fc28
commit 72281a57b3
1 changed files with 18 additions and 2 deletions

View File

@ -86,6 +86,7 @@ void UDPSOCKET_ECHOTEST_impl(bool use_sendto)
fill_tx_buffer_ascii(tx_buffer, BUFF_SIZE); fill_tx_buffer_ascii(tx_buffer, BUFF_SIZE);
int packets_sent_prev = packets_sent; int packets_sent_prev = packets_sent;
bool is_oversized;
for (int retry_cnt = 0; retry_cnt <= 2; retry_cnt++) { for (int retry_cnt = 0; retry_cnt <= 2; retry_cnt++) {
memset(rx_buffer, 0, BUFF_SIZE); memset(rx_buffer, 0, BUFF_SIZE);
@ -94,8 +95,10 @@ void UDPSOCKET_ECHOTEST_impl(bool use_sendto)
} else { } else {
sent = sock.send(tx_buffer, pkt_s); sent = sock.send(tx_buffer, pkt_s);
} }
if (check_oversized_packets(sent, pkt_s)) { is_oversized = check_oversized_packets(sent, pkt_s);
if (is_oversized) {
TEST_IGNORE_MESSAGE("This device does not handle oversized packets"); TEST_IGNORE_MESSAGE("This device does not handle oversized packets");
break;
} else if (sent == pkt_s) { } else if (sent == pkt_s) {
packets_sent++; packets_sent++;
} else { } else {
@ -127,6 +130,9 @@ void UDPSOCKET_ECHOTEST_impl(bool use_sendto)
} }
} }
if (is_oversized) {
continue;
}
if (use_sendto) { if (use_sendto) {
// Verify received address is correct // Verify received address is correct
TEST_ASSERT(udp_addr == recv_addr); TEST_ASSERT(udp_addr == recv_addr);
@ -188,6 +194,8 @@ void UDPSOCKET_ECHOTEST_NONBLOCK_impl(bool use_sendto)
for (unsigned int s_idx = 0; s_idx < sizeof(pkt_sizes) / sizeof(*pkt_sizes); ++s_idx) { for (unsigned int s_idx = 0; s_idx < sizeof(pkt_sizes) / sizeof(*pkt_sizes); ++s_idx) {
int pkt_s = pkt_sizes[s_idx]; int pkt_s = pkt_sizes[s_idx];
int packets_sent_prev = packets_sent; int packets_sent_prev = packets_sent;
bool is_oversized;
for (int retry_cnt = 0; retry_cnt <= RETRIES; retry_cnt++) { for (int retry_cnt = 0; retry_cnt <= RETRIES; retry_cnt++) {
fill_tx_buffer_ascii(tx_buffer, pkt_s); fill_tx_buffer_ascii(tx_buffer, pkt_s);
@ -197,7 +205,11 @@ void UDPSOCKET_ECHOTEST_NONBLOCK_impl(bool use_sendto)
sent = sock->send(tx_buffer, pkt_s); sent = sock->send(tx_buffer, pkt_s);
} }
if (sent == pkt_s) { is_oversized = check_oversized_packets(sent, pkt_s);
if (is_oversized) {
TEST_IGNORE_MESSAGE("This device does not handle oversized packets");
break;
} else if (sent == pkt_s) {
packets_sent++; packets_sent++;
} else if (sent == NSAPI_ERROR_WOULD_BLOCK) { } else if (sent == NSAPI_ERROR_WOULD_BLOCK) {
if (tc_exec_time.read() >= time_allotted || if (tc_exec_time.read() >= time_allotted ||
@ -239,6 +251,10 @@ void UDPSOCKET_ECHOTEST_NONBLOCK_impl(bool use_sendto)
break; break;
} }
} }
if (is_oversized) {
continue;
}
// Make sure that at least one packet of every size was sent. // Make sure that at least one packet of every size was sent.
TEST_ASSERT_TRUE(packets_sent > packets_sent_prev); TEST_ASSERT_TRUE(packets_sent > packets_sent_prev);
if (memcmp(tx_buffer, rx_buffer, pkt_s) == 0) { if (memcmp(tx_buffer, rx_buffer, pkt_s) == 0) {