From 34ce573e9992ecdbc06dff1b4e3d0e9baa8353dd Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 9 Mar 2018 08:49:52 -0500 Subject: [PATCH] Fix use of "-w" flag to iptables-restore iptables accepts "-w5" but iptables-restore requires "-w 5" --- pkg/util/iptables/iptables.go | 6 ++--- pkg/util/iptables/iptables_test.go | 36 ++++++++++++++---------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/pkg/util/iptables/iptables.go b/pkg/util/iptables/iptables.go index 292288d218b0..0fb03468fd64 100644 --- a/pkg/util/iptables/iptables.go +++ b/pkg/util/iptables/iptables.go @@ -124,7 +124,7 @@ const MinCheckVersion = "1.4.11" const WaitMinVersion = "1.4.20" const WaitSecondsMinVersion = "1.4.22" const WaitString = "-w" -const WaitSecondsString = "-w5" +const WaitSecondsValue = "5" const LockfilePath16x = "/run/xtables.lock" @@ -558,7 +558,7 @@ func getIPTablesWaitFlag(vstring string) []string { if version.LessThan(minVersion) { return []string{WaitString} } else { - return []string{WaitSecondsString} + return []string{WaitString, WaitSecondsValue} } } @@ -594,7 +594,7 @@ func getIPTablesRestoreWaitFlag(exec utilexec.Interface, protocol Protocol) []st return nil } - return []string{WaitSecondsString} + return []string{WaitString, WaitSecondsValue} } // getIPTablesRestoreVersionString runs "iptables-restore --version" to get the version string diff --git a/pkg/util/iptables/iptables_test.go b/pkg/util/iptables/iptables_test.go index d7a7358056fb..e16946806245 100644 --- a/pkg/util/iptables/iptables_test.go +++ b/pkg/util/iptables/iptables_test.go @@ -23,6 +23,7 @@ import ( "fmt" "net" "os" + "reflect" "strings" "testing" "time" @@ -681,21 +682,21 @@ COMMIT func TestIPTablesWaitFlag(t *testing.T) { testCases := []struct { Version string - Result string + Result []string }{ - {"0.55.55", ""}, - {"1.0.55", ""}, - {"1.4.19", ""}, - {"1.4.20", WaitString}, - {"1.4.21", WaitString}, - {"1.4.22", WaitSecondsString}, - {"1.5.0", WaitSecondsString}, - {"2.0.0", WaitSecondsString}, + {"0.55.55", nil}, + {"1.0.55", nil}, + {"1.4.19", nil}, + {"1.4.20", []string{WaitString}}, + {"1.4.21", []string{WaitString}}, + {"1.4.22", []string{WaitString, WaitSecondsValue}}, + {"1.5.0", []string{WaitString, WaitSecondsValue}}, + {"2.0.0", []string{WaitString, WaitSecondsValue}}, } for _, testCase := range testCases { result := getIPTablesWaitFlag(testCase.Version) - if strings.Join(result, "") != testCase.Result { + if !reflect.DeepEqual(result, testCase.Result) { t.Errorf("For %s expected %v got %v", testCase.Version, testCase.Result, result) } } @@ -730,7 +731,7 @@ func TestWaitFlagUnavailable(t *testing.T) { if fcmd.CombinedOutputCalls != 3 { t.Errorf("expected 3 CombinedOutput() calls, got %d", fcmd.CombinedOutputCalls) } - if sets.NewString(fcmd.CombinedOutputLog[2]...).HasAny(WaitString, WaitSecondsString) { + if sets.NewString(fcmd.CombinedOutputLog[2]...).Has(WaitString) { t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2]) } } @@ -765,7 +766,7 @@ func TestWaitFlagOld(t *testing.T) { if !sets.NewString(fcmd.CombinedOutputLog[2]...).HasAll("iptables", WaitString) { t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2]) } - if sets.NewString(fcmd.CombinedOutputLog[2]...).HasAny(WaitSecondsString) { + if sets.NewString(fcmd.CombinedOutputLog[2]...).Has(WaitSecondsValue) { t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2]) } } @@ -797,10 +798,7 @@ func TestWaitFlagNew(t *testing.T) { if fcmd.CombinedOutputCalls != 3 { t.Errorf("expected 3 CombinedOutput() calls, got %d", fcmd.CombinedOutputCalls) } - if !sets.NewString(fcmd.CombinedOutputLog[2]...).HasAll("iptables", WaitSecondsString) { - t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2]) - } - if sets.NewString(fcmd.CombinedOutputLog[2]...).HasAny(WaitString) { + if !sets.NewString(fcmd.CombinedOutputLog[2]...).HasAll("iptables", WaitString, WaitSecondsValue) { t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2]) } } @@ -1165,7 +1163,7 @@ func TestRestoreAllWait(t *testing.T) { } commandSet := sets.NewString(fcmd.CombinedOutputLog[2]...) - if !commandSet.HasAll("iptables-restore", WaitSecondsString, "--counters", "--noflush") { + if !commandSet.HasAll("iptables-restore", WaitString, WaitSecondsValue, "--counters", "--noflush") { t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2]) } @@ -1214,8 +1212,8 @@ func TestRestoreAllWaitOldIptablesRestore(t *testing.T) { if !commandSet.HasAll("iptables-restore", "--counters", "--noflush") { t.Errorf("wrong CombinedOutput() log, got %s", fcmd.CombinedOutputLog[2]) } - if commandSet.HasAny(WaitSecondsString) { - t.Errorf("wrong CombinedOutput() log (unexpected %s option), got %s", WaitSecondsString, fcmd.CombinedOutputLog[2]) + if commandSet.HasAll(WaitString, WaitSecondsValue) { + t.Errorf("wrong CombinedOutput() log (unexpected %s option), got %s", WaitString, fcmd.CombinedOutputLog[2]) } if fcmd.CombinedOutputCalls != 3 {