From 0d36dc7000cde04f7f3511234e033f325b5ad606 Mon Sep 17 00:00:00 2001 From: Minhan Xia Date: Fri, 22 Apr 2016 16:13:06 -0700 Subject: [PATCH] added test for revertPorts --- pkg/proxy/iptables/proxier_test.go | 98 ++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/pkg/proxy/iptables/proxier_test.go b/pkg/proxy/iptables/proxier_test.go index f511925ba64..21e59590b2a 100644 --- a/pkg/proxy/iptables/proxier_test.go +++ b/pkg/proxy/iptables/proxier_test.go @@ -374,4 +374,102 @@ func TestDeleteServiceConnections(t *testing.T) { } } +type fakeClosable struct { + closed bool +} + +func (c *fakeClosable) Close() error { + c.closed = true + return nil +} + +func TestRevertPorts(t *testing.T) { + testCases := []struct { + replacementPorts []localPort + existingPorts []localPort + expectToBeClose []bool + }{ + { + replacementPorts: []localPort{ + {port: 5001}, + {port: 5002}, + {port: 5003}, + }, + existingPorts: []localPort{}, + expectToBeClose: []bool{true, true, true}, + }, + { + replacementPorts: []localPort{}, + existingPorts: []localPort{ + {port: 5001}, + {port: 5002}, + {port: 5003}, + }, + expectToBeClose: []bool{}, + }, + { + replacementPorts: []localPort{ + {port: 5001}, + {port: 5002}, + {port: 5003}, + }, + existingPorts: []localPort{ + {port: 5001}, + {port: 5002}, + {port: 5003}, + }, + expectToBeClose: []bool{false, false, false}, + }, + { + replacementPorts: []localPort{ + {port: 5001}, + {port: 5002}, + {port: 5003}, + }, + existingPorts: []localPort{ + {port: 5001}, + {port: 5003}, + }, + expectToBeClose: []bool{false, true, false}, + }, + { + replacementPorts: []localPort{ + {port: 5001}, + {port: 5002}, + {port: 5003}, + }, + existingPorts: []localPort{ + {port: 5001}, + {port: 5002}, + {port: 5003}, + {port: 5004}, + }, + expectToBeClose: []bool{false, false, false}, + }, + } + + for i, tc := range testCases { + replacementPortsMap := make(map[localPort]closeable) + for _, lp := range tc.replacementPorts { + replacementPortsMap[lp] = &fakeClosable{} + } + existingPortsMap := make(map[localPort]closeable) + for _, lp := range tc.existingPorts { + existingPortsMap[lp] = &fakeClosable{} + } + revertPorts(replacementPortsMap, existingPortsMap) + for j, expectation := range tc.expectToBeClose { + if replacementPortsMap[tc.replacementPorts[j]].(*fakeClosable).closed != expectation { + t.Errorf("Expect replacement localport %v to be %v in test case %v", tc.replacementPorts[j], expectation, i) + } + } + for _, lp := range tc.existingPorts { + if existingPortsMap[lp].(*fakeClosable).closed == true { + t.Errorf("Expect existing localport %v to be false in test case %v", lp, i) + } + } + } + +} + // TODO(thockin): add a test for syncProxyRules() or break it down further and test the pieces.