From f6f0f7922a7cd5d4133027d19a174015954e45b9 Mon Sep 17 00:00:00 2001 From: knight42 Date: Sat, 5 Sep 2020 00:17:04 +0800 Subject: [PATCH] test(iptables): deflake TestRestoreAllGrabOldLock Signed-off-by: knight42 --- pkg/util/iptables/iptables_test.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/pkg/util/iptables/iptables_test.go b/pkg/util/iptables/iptables_test.go index 7a578419f51..ebe96747c3e 100644 --- a/pkg/util/iptables/iptables_test.go +++ b/pkg/util/iptables/iptables_test.go @@ -26,9 +26,11 @@ import ( "reflect" "strings" "testing" + "time" "k8s.io/apimachinery/pkg/util/sets" utilversion "k8s.io/apimachinery/pkg/util/version" + "k8s.io/apimachinery/pkg/util/wait" "k8s.io/utils/exec" fakeexec "k8s.io/utils/exec/testing" ) @@ -1109,11 +1111,23 @@ func TestRestoreAllGrabOldLock(t *testing.T) { runner := newInternal(&fexec, ProtocolIPv4, TestLockfilePath) defer os.Remove(TestLockfilePath) - // Grab the abstract @xtables socket - runLock, err := net.ListenUnix("unix", &net.UnixAddr{Name: "@xtables", Net: "unix"}) + var runLock *net.UnixListener + // Grab the abstract @xtables socket, will retry if the socket exists + err := wait.PollImmediate(time.Second, wait.ForeverTestTimeout, func() (done bool, err error) { + runLock, err = net.ListenUnix("unix", &net.UnixAddr{Name: "@xtables", Net: "unix"}) + if err != nil { + t.Logf("Failed to lock @xtables: %v, will retry.", err) + return false, nil + } + return true, nil + }) if err != nil { - t.Fatalf("expected to lock @xtables, got %v", err) + t.Fatal("Timed out locking @xtables") } + if runLock == nil { + t.Fatal("Unexpected nil runLock") + } + defer runLock.Close() err = runner.RestoreAll([]byte{}, NoFlushTables, RestoreCounters)