Skip to content

Commit

Permalink
Fix unit test with assumed congestion avoidance
Browse files Browse the repository at this point in the history
test_tcp_fast_rexmit_wraparound correctness relied on the congestion
window being in congestion avoidance so that only a single TCP_MSS
segment is sent upon ACKing the first segment.

It's not known whether the test was relying tcp_alloc() to set ssthresh
to 0 and thus start in congestion avoidance or if the test was working by
accident until changes in b90a54f

This fixes the test by enforcing the requirement of starting in
congestion avoidance

Signed-off-by: goldsimon <[email protected]>
(cherry picked from commit 8bf402f)
  • Loading branch information
jcunningham10 authored and goldsimon committed Mar 13, 2017
1 parent 0381849 commit c31bd40
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion test/unit/tcp/test_tcp.c
Original file line number Diff line number Diff line change
Expand Up @@ -422,6 +422,8 @@ START_TEST(test_tcp_fast_rexmit_wraparound)
pcb->mss = TCP_MSS;
/* disable initial congestion window (we don't send a SYN here...) */
pcb->cwnd = 2*TCP_MSS;
/* start in congestion advoidance */
pcb->ssthresh = pcb->cwnd;

/* send 6 mss-sized segments */
for (i = 0; i < 6; i++) {
Expand All @@ -442,7 +444,9 @@ START_TEST(test_tcp_fast_rexmit_wraparound)
/* ACK the first segment */
p = tcp_create_rx_segment(pcb, NULL, 0, 0, TCP_MSS, TCP_ACK);
test_tcp_input(p, &netif);
/* ensure this didn't trigger a retransmission */
/* ensure this didn't trigger a retransmission. Only one
segment should be transmitted because cwnd opened up by
TCP_MSS and a fraction since we are in congestion avoidance */
EXPECT(txcounters.num_tx_calls == 1);
EXPECT(txcounters.num_tx_bytes == TCP_MSS + 40U);
memset(&txcounters, 0, sizeof(txcounters));
Expand Down

0 comments on commit c31bd40

Please sign in to comment.