From 636693830fda3f4b08a87f079748475eb6c85d35 Mon Sep 17 00:00:00 2001 From: Michael Schurter Date: Tue, 20 Mar 2018 15:51:58 -0700 Subject: [PATCH] test: disable node drainer during tests Node drainer would throw off the index checks --- nomad/node_endpoint_test.go | 39 ++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/nomad/node_endpoint_test.go b/nomad/node_endpoint_test.go index 26888d830..4c278766c 100644 --- a/nomad/node_endpoint_test.go +++ b/nomad/node_endpoint_test.go @@ -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) }