k8s.io/kubernetes@v1.29.3/pkg/proxy/ipvs/ipset/testing/fake_test.go (about) 1 /* 2 Copyright 2017 The Kubernetes Authors. 3 4 Licensed under the Apache License, Version 2.0 (the "License"); 5 you may not use this file except in compliance with the License. 6 You may obtain a copy of the License at 7 8 http://www.apache.org/licenses/LICENSE-2.0 9 10 Unless required by applicable law or agreed to in writing, software 11 distributed under the License is distributed on an "AS IS" BASIS, 12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 See the License for the specific language governing permissions and 14 limitations under the License. 15 */ 16 17 package testing 18 19 import ( 20 "testing" 21 22 "k8s.io/apimachinery/pkg/util/sets" 23 "k8s.io/kubernetes/pkg/proxy/ipvs/ipset" 24 ) 25 26 const testVersion = "v6.19" 27 28 func TestSetEntry(t *testing.T) { 29 fake := NewFake(testVersion) 30 version, err := fake.GetVersion() 31 if err != nil { 32 t.Errorf("Unexpected error: %v", err) 33 } 34 if version != testVersion { 35 t.Errorf("Unexpected version mismatch, expected: %s, got: %s", testVersion, version) 36 } 37 // create a set 38 set := &ipset.IPSet{ 39 Name: "foo", 40 SetType: ipset.HashIPPort, 41 HashFamily: ipset.ProtocolFamilyIPV4, 42 } 43 if err := fake.CreateSet(set, true); err != nil { 44 t.Errorf("Unexpected error: %v", err) 45 } 46 47 // add two entries 48 err = fake.AddEntry("192.168.1.1,tcp:8080", set, true) 49 if err != nil { 50 t.Errorf("Unexpected error: %v", err) 51 } 52 err = fake.AddEntry("192.168.1.2,tcp:8081", set, true) 53 if err != nil { 54 t.Errorf("Unexpected error: %v", err) 55 } 56 entries, err := fake.ListEntries(set.Name) 57 if err != nil { 58 t.Errorf("Unexpected error: %v", err) 59 } 60 if len(entries) != 2 { 61 t.Errorf("Expected 2 entries, got %d", len(entries)) 62 } 63 expectedEntries := sets.NewString("192.168.1.1,tcp:8080", "192.168.1.2,tcp:8081") 64 if !expectedEntries.Equal(sets.NewString(entries...)) { 65 t.Errorf("Unexpected entries mismatch, expected: %v, got: %v", expectedEntries, entries) 66 } 67 68 // test entries 69 found, err := fake.TestEntry("192.168.1.1,tcp:8080", set.Name) 70 if err != nil { 71 t.Errorf("Unexpected error: %v", err) 72 } 73 if !found { 74 t.Errorf("Unexpected entry 192.168.1.1,tcp:8080 not found") 75 } 76 77 found, err = fake.TestEntry("192.168.1.2,tcp:8081", set.Name) 78 if err != nil { 79 t.Errorf("Unexpected error: %v", err) 80 } 81 if !found { 82 t.Errorf("Unexpected entry 192.168.1.2,tcp:8081 not found") 83 } 84 85 // delete entry from a given set 86 if err := fake.DelEntry("192.168.1.1,tcp:8080", set.Name); err != nil { 87 t.Errorf("Unexpected error: %v", err) 88 } 89 entries, err = fake.ListEntries(set.Name) 90 if err != nil { 91 t.Errorf("Unexpected error: %v", err) 92 } 93 if len(entries) != 1 { 94 t.Errorf("Expected 1 entries, got %d", len(entries)) 95 } 96 expectedEntries = sets.NewString("192.168.1.2,tcp:8081") 97 if !expectedEntries.Equal(sets.NewString(entries...)) { 98 t.Errorf("Unexpected entries mismatch, expected: %v, got: %v", expectedEntries, entries) 99 } 100 101 // Flush set 102 if err := fake.FlushSet(set.Name); err != nil { 103 t.Errorf("Unexpected error: %v", err) 104 } 105 entries, err = fake.ListEntries(set.Name) 106 if err != nil { 107 t.Errorf("Unexpected error: %v", err) 108 } 109 if len(entries) != 0 { 110 t.Errorf("Expected 0 entries, got %d, entries: %v", len(entries), entries) 111 } 112 113 // create another set 114 set2 := &ipset.IPSet{ 115 Name: "bar", 116 SetType: ipset.HashIPPortIP, 117 HashFamily: ipset.ProtocolFamilyIPV6, 118 } 119 if err := fake.CreateSet(set2, true); err != nil { 120 t.Errorf("Unexpected error: %v", err) 121 } 122 123 setList, err := fake.ListSets() 124 if err != nil { 125 t.Errorf("Unexpected error: %v", err) 126 } 127 if len(setList) != 2 { 128 t.Errorf("Expected 2 sets, got %d", len(setList)) 129 } 130 expectedSets := sets.NewString("foo", "bar") 131 if !expectedSets.Equal(sets.NewString(setList...)) { 132 t.Errorf("Unexpected sets mismatch, expected: %v, got: %v", expectedSets, setList) 133 } 134 135 // Destroy a given set 136 if err := fake.DestroySet(set.Name); err != nil { 137 t.Errorf("Unexpected error: %v", err) 138 } 139 if fake.Sets[set.Name] != nil { 140 t.Errorf("Unexpected set: %v", fake.Sets[set.Name]) 141 } 142 if fake.Entries[set.Name] != nil { 143 t.Errorf("Unexpected entries: %v", fake.Entries[set.Name]) 144 } 145 146 // Destroy all sets 147 if err := fake.DestroyAllSets(); err != nil { 148 t.Errorf("Unexpected error: %v", err) 149 } 150 if len(fake.Sets) != 0 { 151 t.Errorf("Expected 0 sets, got %d, sets: %v", len(fake.Sets), fake.Sets) 152 } 153 if len(fake.Entries) != 0 { 154 t.Errorf("Expected 0 entries, got %d, entries: %v", len(fake.Entries), fake.Entries) 155 } 156 } 157 158 // TODO: Test ignoreExistErr=false