123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- /*
- Copyright 2017 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package util
- import "testing"
- type fakeClosable struct {
- closed bool
- }
- func (c *fakeClosable) Close() error {
- c.closed = true
- return nil
- }
- func TestLocalPortString(t *testing.T) {
- testCases := []struct {
- description string
- ip string
- port int
- protocol string
- expectedStr string
- }{
- {"IPv4 UDP", "1.2.3.4", 9999, "udp", "\"IPv4 UDP\" (1.2.3.4:9999/udp)"},
- {"IPv4 TCP", "5.6.7.8", 1053, "tcp", "\"IPv4 TCP\" (5.6.7.8:1053/tcp)"},
- {"IPv6 TCP", "2001:db8::1", 80, "tcp", "\"IPv6 TCP\" ([2001:db8::1]:80/tcp)"},
- {"IPv4 SCTP", "9.10.11.12", 7777, "sctp", "\"IPv4 SCTP\" (9.10.11.12:7777/sctp)"},
- {"IPv6 SCTP", "2001:db8::2", 80, "sctp", "\"IPv6 SCTP\" ([2001:db8::2]:80/sctp)"},
- }
- for _, tc := range testCases {
- lp := &LocalPort{
- Description: tc.description,
- IP: tc.ip,
- Port: tc.port,
- Protocol: tc.protocol,
- }
- str := lp.String()
- if str != tc.expectedStr {
- t.Errorf("Unexpected output for %s, expected: %s, got: %s", tc.description, tc.expectedStr, str)
- }
- }
- }
- 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)
- }
- }
- }
- }
|