From d3c18ce780777f28e78913bfe48fc27ecf77c5e6 Mon Sep 17 00:00:00 2001 From: Daniel Bennett Date: Fri, 12 May 2023 13:47:21 -0500 Subject: [PATCH] retry untracked container check --- drivers/docker/reconcile_dangling_test.go | 24 ++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/drivers/docker/reconcile_dangling_test.go b/drivers/docker/reconcile_dangling_test.go index c9a0449c019c..7a6dc5eb11d5 100644 --- a/drivers/docker/reconcile_dangling_test.go +++ b/drivers/docker/reconcile_dangling_test.go @@ -14,6 +14,7 @@ import ( docker "github.com/fsouza/go-dockerclient" "github.com/hashicorp/go-set" "github.com/shoenig/test/must" + "github.com/shoenig/test/wait" "github.com/hashicorp/nomad/ci" "github.com/hashicorp/nomad/client/testutil" @@ -245,18 +246,27 @@ func TestDanglingContainerRemoval_Stopped(t *testing.T) { tracked := reconciler.trackedContainers() must.NotContains[string](t, container.ID, tracked) - untracked, err := reconciler.untrackedContainers(set.New[string](0), time.Now()) + checkUntracked := func() error { + untracked, err := reconciler.untrackedContainers(set.New[string](0), time.Now()) + must.NoError(t, err) + if untracked.Contains(container.ID) { + err = fmt.Errorf("container ID %s in untracked set: %v", container.ID, untracked.Slice()) + t.Errorf("had a sad: %s", err) + } + return err + } - must.NoError(t, err) - must.NotContains[string](t, container.ID, untracked) + // retry because it's slower on windows :\ + must.Wait(t, wait.InitialSuccess( + wait.ErrorFunc(checkUntracked), + wait.Timeout(5*time.Second), + wait.Gap(100*time.Millisecond), + )) // if we start container again, it'll be marked as untracked must.NoError(t, dockerClient.StartContainer(container.ID, nil)) - untracked, err = reconciler.untrackedContainers(set.New[string](0), time.Now()) + untracked, err := reconciler.untrackedContainers(set.New[string](0), time.Now()) must.NoError(t, err) - for _, d := range untracked.Slice() { - t.Logf("danglin: %#v", d) - } must.Contains[string](t, container.ID, untracked) }