test: disable node drainer during tests

Node drainer would throw off the index checks
This commit is contained in:
Michael Schurter
2018-03-20 15:51:58 -07:00
parent e8673b14ef
commit 636693830f

View File

@@ -2439,15 +2439,18 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
codec := rpcClient(t, s1)
testutil.WaitForLeader(t, s1.RPC)
// Disable drainer to prevent drain from completing during test
s1.nodeDrainer.SetEnabled(false, nil)
// Create the node
node := mock.Node()
// Node upsert triggers watches
time.AfterFunc(100*time.Millisecond, func() {
if err := state.UpsertNode(2, node); err != nil {
t.Fatalf("err: %v", err)
}
errCh := make(chan error, 1)
timer := time.AfterFunc(100*time.Millisecond, func() {
errCh <- state.UpsertNode(2, node)
})
defer timer.Stop()
req := &structs.NodeListRequest{
QueryOptions: structs.QueryOptions{
@@ -2461,6 +2464,10 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
t.Fatalf("err: %v", err)
}
if err := <-errCh; err != nil {
t.Fatalf("error from timer: %v", err)
}
if elapsed := time.Since(start); elapsed < 100*time.Millisecond {
t.Fatalf("should block (returned in %s) %#v", elapsed, resp)
}
@@ -2478,9 +2485,7 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
Deadline: 10 * time.Second,
},
}
if err := state.UpdateNodeDrain(3, node.ID, s, false); err != nil {
t.Fatalf("err: %v", err)
}
errCh <- state.UpdateNodeDrain(3, node.ID, s, false)
})
req.MinQueryIndex = 2
@@ -2490,6 +2495,10 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
t.Fatalf("err: %v", err)
}
if err := <-errCh; err != nil {
t.Fatalf("error from timer: %v", err)
}
if elapsed := time.Since(start); elapsed < 100*time.Millisecond {
t.Fatalf("should block (returned in %s) %#v", elapsed, resp2)
}
@@ -2502,9 +2511,7 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
// Node status update triggers watches
time.AfterFunc(100*time.Millisecond, func() {
if err := state.UpdateNodeStatus(40, node.ID, structs.NodeStatusDown); err != nil {
t.Fatalf("err: %v", err)
}
errCh <- state.UpdateNodeStatus(40, node.ID, structs.NodeStatusDown)
})
req.MinQueryIndex = 38
@@ -2514,6 +2521,10 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
t.Fatalf("err: %v", err)
}
if err := <-errCh; err != nil {
t.Fatalf("error from timer: %v", err)
}
if elapsed := time.Since(start); elapsed < 100*time.Millisecond {
t.Fatalf("should block (returned in %s) %#v", elapsed, resp3)
}
@@ -2526,9 +2537,7 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
// Node delete triggers watches.
time.AfterFunc(100*time.Millisecond, func() {
if err := state.DeleteNode(50, node.ID); err != nil {
t.Fatalf("err: %v", err)
}
errCh <- state.DeleteNode(50, node.ID)
})
req.MinQueryIndex = 45
@@ -2538,6 +2547,10 @@ func TestClientEndpoint_ListNodes_Blocking(t *testing.T) {
t.Fatalf("err: %v", err)
}
if err := <-errCh; err != nil {
t.Fatalf("error from timer: %v", err)
}
if elapsed := time.Since(start); elapsed < 100*time.Millisecond {
t.Fatalf("should block (returned in %s) %#v", elapsed, resp4)
}