diff options
author | Tamir Duberstein <tamird@google.com> | 2018-09-21 12:32:20 -0700 |
---|---|---|
committer | Shentubot <shentubot@google.com> | 2018-09-21 12:33:21 -0700 |
commit | 95f30ef67b014c3d2ae6564465bbae1f2543796b (patch) | |
tree | e3744a9771cd6aa895888b53e0fbc535942b9cbc | |
parent | 7fa57ee5798c878faef9a56847ce53420958cce3 (diff) |
Deflake TestSimpleReceive
...by increasing the allotted timeout and using direct comparison rather than
reflect.DeepEqual (which should be faster).
PiperOrigin-RevId: 214027024
Change-Id: I0a2690e65c7e14b4cc118c7312dbbf5267dc78bc
-rw-r--r-- | pkg/tcpip/link/sharedmem/sharedmem_test.go | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/pkg/tcpip/link/sharedmem/sharedmem_test.go b/pkg/tcpip/link/sharedmem/sharedmem_test.go index 9a6b7d929..ad987d382 100644 --- a/pkg/tcpip/link/sharedmem/sharedmem_test.go +++ b/pkg/tcpip/link/sharedmem/sharedmem_test.go @@ -21,7 +21,6 @@ import ( "io/ioutil" "math/rand" "os" - "reflect" "strings" "sync" "syscall" @@ -589,8 +588,8 @@ func TestSimpleReceive(t *testing.T) { // Check that buffers have been posted. limit := c.ep.rx.q.PostedBuffersLimit() - timeout := time.After(2 * time.Second) for i := uint64(0); i < limit; i++ { + timeout := time.After(2 * time.Second) bi := queue.DecodeRxBufferHeader(pollPull(t, &c.rxq.tx, timeout, "Timeout waiting for all buffers to be posted")) if want := i * bufferSize; want != bi.Offset { @@ -615,6 +614,7 @@ func TestSimpleReceive(t *testing.T) { // Complete random packets 1000 times. for iters := 1000; iters > 0; iters-- { + timeout := time.After(2 * time.Second) // Prepare a random packet. shuffle(idx) n := 1 + rand.Intn(10) @@ -642,15 +642,14 @@ func TestSimpleReceive(t *testing.T) { c.packets = c.packets[:0] c.mu.Unlock() - contents = contents[header.EthernetMinimumSize:] - if !bytes.Equal(contents, rcvd) { + if contents := contents[header.EthernetMinimumSize:]; !bytes.Equal(contents, rcvd) { t.Fatalf("Unexpected buffer contents: got %x, want %x", rcvd, contents) } // Check that buffers have been reposted. for i := range bufs { bi := queue.DecodeRxBufferHeader(pollPull(t, &c.rxq.tx, timeout, "Timeout waiting for buffers to be reposted")) - if !reflect.DeepEqual(bi, bufs[i]) { + if bi != bufs[i] { t.Fatalf("Unexpected buffer reposted: got %x, want %x", bi, bufs[i]) } } @@ -668,15 +667,15 @@ func TestRxBuffersReposted(t *testing.T) { // Receive all posted buffers. limit := c.ep.rx.q.PostedBuffersLimit() buffers := make([]queue.RxBuffer, 0, limit) - timeout := time.After(2 * time.Second) for i := limit; i > 0; i-- { + timeout := time.After(2 * time.Second) buffers = append(buffers, queue.DecodeRxBufferHeader(pollPull(t, &c.rxq.tx, timeout, "Timeout waiting for all buffers"))) } c.rxq.tx.Flush() // Check that all buffers are reposted when individually completed. - timeout = time.After(2 * time.Second) for i := range buffers { + timeout := time.After(2 * time.Second) // Complete the buffer. c.pushRxCompletion(buffers[i].Size, buffers[i:][:1]) c.rxq.rx.Flush() @@ -684,28 +683,26 @@ func TestRxBuffersReposted(t *testing.T) { // Wait for it to be reposted. bi := queue.DecodeRxBufferHeader(pollPull(t, &c.rxq.tx, timeout, "Timeout waiting for buffer to be reposted")) - if !reflect.DeepEqual(bi, buffers[i]) { + if bi != buffers[i] { t.Fatalf("Different buffer posted: got %v, want %v", bi, buffers[i]) } } c.rxq.tx.Flush() // Check that all buffers are reposted when completed in pairs. - timeout = time.After(2 * time.Second) for i := 0; i < len(buffers)/2; i++ { + timeout := time.After(2 * time.Second) // Complete with two buffers. c.pushRxCompletion(2*bufferSize, buffers[2*i:][:2]) c.rxq.rx.Flush() syscall.Write(c.rxCfg.EventFD, []byte{1, 0, 0, 0, 0, 0, 0, 0}) // Wait for them to be reposted. - bi := queue.DecodeRxBufferHeader(pollPull(t, &c.rxq.tx, timeout, "Timeout waiting for buffer to be reposted")) - if !reflect.DeepEqual(bi, buffers[2*i]) { - t.Fatalf("Different buffer posted: got %v, want %v", bi, buffers[2*i]) - } - bi = queue.DecodeRxBufferHeader(pollPull(t, &c.rxq.tx, timeout, "Timeout waiting for buffer to be reposted")) - if !reflect.DeepEqual(bi, buffers[2*i+1]) { - t.Fatalf("Different buffer posted: got %v, want %v", bi, buffers[2*i+1]) + for j := 0; j < 2; j++ { + bi := queue.DecodeRxBufferHeader(pollPull(t, &c.rxq.tx, timeout, "Timeout waiting for buffer to be reposted")) + if bi != buffers[2*i+j] { + t.Fatalf("Different buffer posted: got %v, want %v", bi, buffers[2*i+j]) + } } } c.rxq.tx.Flush() |