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