Skip to content

Commit 9bde4c7

Browse files
authored
Remove uses of package time from unit tests (where feasible) (digitalocean#178)
* rpc_test: remove use of time package in unit test Let the test runner decide if a test times out or not. Using time generally complicates unit tests. I.e., use go test -timeout 10s ... * domain_test: remove more uses of time pkg * qmp/socket_test: remove more uses of time pkg
1 parent aff3378 commit 9bde4c7

File tree

3 files changed

+7
-36
lines changed

3 files changed

+7
-36
lines changed

qemu/domain_test.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -554,12 +554,8 @@ func TestEvents(t *testing.T) {
554554
t.Error(err)
555555
}
556556

557-
select {
558-
case <-events:
559-
close(stop)
560-
case <-time.After(time.Millisecond * 20):
561-
t.Error("expected event")
562-
}
557+
<-events
558+
close(stop)
563559
}
564560

565561
// Test when a listener connects, but disconnects without
@@ -582,8 +578,6 @@ func TestEventsDerelictListener(t *testing.T) {
582578
if err != nil {
583579
t.Error(err)
584580
}
585-
586-
time.Sleep(200 * time.Millisecond)
587581
close(stop)
588582

589583
t.Log("Attempting to drain events2")
@@ -677,15 +671,13 @@ func (t *testMonitor) Events(ctx context.Context) (<-chan qmp.Event, error) {
677671
return
678672
case c <- qmp.Event{Event: blockJobError}:
679673
}
680-
time.Sleep(10 * time.Millisecond)
681674
continue
682675
}
683676

684677
select {
685678
case <-ctx.Done():
686679
case c <- qmp.Event{Event: events[i]}:
687680
}
688-
time.Sleep(10 * time.Millisecond)
689681

690682
i = (i + 1) % len(events)
691683
}

qmp/rpc_test.go

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import (
1818
"context"
1919
"encoding/json"
2020
"testing"
21-
"time"
2221

2322
"github.com/digitalocean/go-libvirt"
2423
"github.com/digitalocean/go-libvirt/libvirttest"
@@ -182,19 +181,13 @@ func TestLibvirtRPCMonitorEvents(t *testing.T) {
182181
}
183182

184183
go func() {
185-
var e Event
186-
select {
187-
case e = <-stream:
188-
case <-time.After(time.Second * 1):
189-
t.Error("expected event, received timeout")
190-
}
184+
defer close(done)
185+
got := <-stream
191186

192187
expected := "drive-ide0-0-0"
193-
if e.Data["device"] != expected {
194-
t.Errorf("expected device %q, got %q", expected, e.Data["device"])
188+
if got.Data["device"] != expected {
189+
t.Errorf("expected device %q, got %q", expected, got.Data["device"])
195190
}
196-
197-
done <- struct{}{}
198191
}()
199192

200193
// send an event to the listener goroutine

qmp/socket_test.go

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,13 @@ import (
2020
"errors"
2121
"fmt"
2222
"io"
23-
"io/ioutil"
2423
"net"
2524
"os"
2625
"path/filepath"
2726
"reflect"
2827
"strings"
2928
"sync"
3029
"testing"
31-
"time"
3230
)
3331

3432
func TestSocketMonitorConnectDisconnect(t *testing.T) {
@@ -37,20 +35,10 @@ func TestSocketMonitorConnectDisconnect(t *testing.T) {
3735
}
3836

3937
func TestSocketMonitorListen(t *testing.T) {
40-
dir, err := ioutil.TempDir(os.TempDir(), "go-qemu-test")
41-
if err != nil {
42-
t.Fatalf("failed to create temporary directory: %v", err)
43-
}
44-
defer os.RemoveAll(dir)
38+
dir := t.TempDir()
4539

4640
sock := filepath.Join(dir, "listener.sock")
4741

48-
// Fail the test if the socket takes too long to be ready.
49-
timer := time.AfterFunc(3*time.Second, func() {
50-
panic("took too long to connect to QMP listener")
51-
})
52-
defer timer.Stop()
53-
5442
// Ensure that goroutine client stops.
5543
var wg sync.WaitGroup
5644
wg.Add(1)
@@ -63,8 +51,6 @@ func TestSocketMonitorListen(t *testing.T) {
6351
if _, err := os.Stat(sock); err == nil {
6452
break
6553
}
66-
67-
time.Sleep(100 * time.Millisecond)
6854
}
6955

7056
// Attempt to dial the socket before the timeout expires.

0 commit comments

Comments
 (0)