summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorTamir Duberstein <tamird@google.com>2018-09-21 12:32:20 -0700
committerShentubot <shentubot@google.com>2018-09-21 12:33:21 -0700
commit95f30ef67b014c3d2ae6564465bbae1f2543796b (patch)
treee3744a9771cd6aa895888b53e0fbc535942b9cbc
parent7fa57ee5798c878faef9a56847ce53420958cce3 (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.go29
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()