From 463305c389e8af07d1eb98be46df86224a39a3bc Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Sat, 12 Jan 2019 19:55:20 +0100 Subject: [PATCH] reduce flakiness of TestSwarmLockUnlockCluster and TestSwarmJoinPromoteLocked I noticed that this test failed, because the node was in status "pending". The test checks for the node's status immediately after it was restarted, so possibly it needs some time to unlock. 14:07:10 FAIL: docker_cli_swarm_test.go:1128: DockerSwarmSuite.TestSwarmLockUnlockCluster ... 14:07:10 docker_cli_swarm_test.go:1168: 14:07:10 checkSwarmLockedToUnlocked(c, d) 14:07:10 docker_cli_swarm_test.go:1017: 14:07:10 c.Assert(getNodeStatus(c, d), checker.Equals, swarm.LocalNodeStateActive) 14:07:10 ... obtained swarm.LocalNodeState = "pending" 14:07:10 ... expected swarm.LocalNodeState = "active" This patch adds a `waitAndAssert` for the node's status, with a 1 second timeout. Signed-off-by: Sebastiaan van Stijn (cherry picked from commit 973ca00d60712ef644b5b37abf7fa01078bb4ade) Signed-off-by: Sebastiaan van Stijn Upstream-commit: 954425f8bdb5db95355cb20be465d248f7c3b1f1 Component: engine --- .../engine/integration-cli/docker_cli_swarm_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/engine/integration-cli/docker_cli_swarm_test.go b/components/engine/integration-cli/docker_cli_swarm_test.go index 3f307d7b9e..a9f8f401c2 100644 --- a/components/engine/integration-cli/docker_cli_swarm_test.go +++ b/components/engine/integration-cli/docker_cli_swarm_test.go @@ -1014,7 +1014,7 @@ func checkSwarmLockedToUnlocked(c *check.C, d *daemon.Daemon) { waitAndAssert(c, defaultReconciliationTimeout, checkKeyIsEncrypted(d), checker.Equals, false) d.RestartNode(c) - c.Assert(getNodeStatus(c, d), checker.Equals, swarm.LocalNodeStateActive) + waitAndAssert(c, time.Second, d.CheckLocalNodeState, checker.Equals, swarm.LocalNodeStateActive) } func checkSwarmUnlockedToLocked(c *check.C, d *daemon.Daemon) { @@ -1022,7 +1022,7 @@ func checkSwarmUnlockedToLocked(c *check.C, d *daemon.Daemon) { waitAndAssert(c, defaultReconciliationTimeout, checkKeyIsEncrypted(d), checker.Equals, true) d.RestartNode(c) - c.Assert(getNodeStatus(c, d), checker.Equals, swarm.LocalNodeStateLocked) + waitAndAssert(c, time.Second, d.CheckLocalNodeState, checker.Equals, swarm.LocalNodeStateLocked) } func (s *DockerSwarmSuite) TestUnlockEngineAndUnlockedSwarm(c *check.C) { @@ -1197,7 +1197,7 @@ func (s *DockerSwarmSuite) TestSwarmJoinPromoteLocked(c *check.C) { // joined workers start off unlocked d2 := s.AddDaemon(c, true, false) d2.RestartNode(c) - c.Assert(getNodeStatus(c, d2), checker.Equals, swarm.LocalNodeStateActive) + waitAndAssert(c, time.Second, d2.CheckLocalNodeState, checker.Equals, swarm.LocalNodeStateActive) // promote worker outs, err = d1.Cmd("node", "promote", d2.NodeID()) @@ -1242,7 +1242,7 @@ func (s *DockerSwarmSuite) TestSwarmJoinPromoteLocked(c *check.C) { // by now, it should *never* be locked on restart d3.RestartNode(c) - c.Assert(getNodeStatus(c, d3), checker.Equals, swarm.LocalNodeStateActive) + waitAndAssert(c, time.Second, d3.CheckLocalNodeState, checker.Equals, swarm.LocalNodeStateActive) } func (s *DockerSwarmSuite) TestSwarmRotateUnlockKey(c *check.C) {