1
2
3
4
19
20 package testing
21
22 import (
23 "testing"
24
25 utilipvs "k8s.io/kubernetes/pkg/proxy/ipvs/util"
26 netutils "k8s.io/utils/net"
27 )
28
29 func TestVirtualServer(t *testing.T) {
30
31 fake := NewFake()
32
33 vs1 := &utilipvs.VirtualServer{
34 Address: netutils.ParseIPSloppy("1.2.3.4"),
35 Port: uint16(80),
36 Protocol: string("TCP"),
37 Flags: utilipvs.FlagHashed,
38 }
39 err := fake.AddVirtualServer(vs1)
40 if err != nil {
41 t.Errorf("Fail to add virtual server, error: %v", err)
42 }
43
44 got1, err := fake.GetVirtualServer(vs1)
45 if err != nil {
46 t.Errorf("Fail to get virtual server, error: %v", err)
47 }
48 if !vs1.Equal(got1) {
49 t.Errorf("Expect virtual server: %v, got: %v", vs1, got1)
50 }
51
52 vs12 := &utilipvs.VirtualServer{
53 Address: netutils.ParseIPSloppy("1.2.3.4"),
54 Port: uint16(80),
55 Protocol: string("TCP"),
56 Flags: utilipvs.FlagPersistent,
57 }
58 err = fake.UpdateVirtualServer(vs12)
59 if err != nil {
60 t.Errorf("Fail to update virtual server, error: %v", err)
61 }
62
63 got12, err := fake.GetVirtualServer(vs1)
64 if err != nil {
65 t.Errorf("Fail to get virtual server, error: %v", err)
66 }
67 if !got12.Equal(vs12) {
68 t.Errorf("Expect virtual server: %v, got: %v", vs12, got12)
69 }
70
71 vs2 := &utilipvs.VirtualServer{
72 Address: netutils.ParseIPSloppy("10::40"),
73 Port: uint16(8080),
74 Protocol: string("UDP"),
75 }
76 err = fake.AddVirtualServer(vs2)
77 if err != nil {
78 t.Errorf("Unexpected error when add virtual server, error: %v", err)
79 }
80
81 vs3 := &utilipvs.VirtualServer{
82 Address: netutils.ParseIPSloppy("10::40"),
83 Port: uint16(7777),
84 Protocol: string("SCTP"),
85 }
86 err = fake.AddVirtualServer(vs3)
87 if err != nil {
88 t.Errorf("Unexpected error when add virtual server, error: %v", err)
89 }
90
91 list, err := fake.GetVirtualServers()
92 if err != nil {
93 t.Errorf("Fail to list virtual servers, error: %v", err)
94 }
95 if len(list) != 3 {
96 t.Errorf("Expect 2 virtual servers, got: %d", len(list))
97 }
98
99 err = fake.DeleteVirtualServer(vs1)
100 if err != nil {
101 t.Errorf("Fail to delete virtual server: %v, error: %v", vs1, err)
102 }
103
104 got, _ := fake.GetVirtualServer(vs1)
105 if got != nil {
106 t.Errorf("Expect nil, got: %v", got)
107 }
108
109 err = fake.Flush()
110 if err != nil {
111 t.Errorf("Fail to flush virtual servers, error: %v", err)
112 }
113
114 list, err = fake.GetVirtualServers()
115 if err != nil {
116 t.Errorf("Fail to list virtual servers, error: %v", err)
117 }
118 if len(list) != 0 {
119 t.Errorf("Expect 0 virtual servers, got: %d", len(list))
120 }
121 }
122
123 func TestRealServer(t *testing.T) {
124
125 fake := NewFake()
126
127 vs := &utilipvs.VirtualServer{
128 Address: netutils.ParseIPSloppy("10.20.30.40"),
129 Port: uint16(80),
130 Protocol: string("TCP"),
131 }
132 rss := []*utilipvs.RealServer{
133 {Address: netutils.ParseIPSloppy("172.16.2.1"), Port: 8080, Weight: 1},
134 {Address: netutils.ParseIPSloppy("172.16.2.2"), Port: 8080, Weight: 2},
135 {Address: netutils.ParseIPSloppy("172.16.2.3"), Port: 8080, Weight: 3},
136 }
137 err := fake.AddVirtualServer(vs)
138 if err != nil {
139 t.Errorf("Fail to add virtual server, error: %v", err)
140 }
141
142 for i := range rss {
143 if err = fake.AddRealServer(vs, rss[i]); err != nil {
144 t.Errorf("Fail to add real server, error: %v", err)
145 }
146 }
147
148
149 rssLen := len(rss)
150 for i := range rss {
151
152 list, err := fake.GetRealServers(vs)
153 if err != nil {
154 t.Errorf("Fail to get real servers of the virtual server, error: %v", err)
155 }
156 if len(list) != rssLen {
157 t.Errorf("Expect %d virtual servers, got: %d", len(rss), len(list))
158 }
159 rsToDel := list[i]
160 if err = fake.DeleteRealServer(vs, rsToDel); err != nil {
161 t.Errorf("Fail to delete real server of the virtual server, error: %v", err)
162 } else {
163 dests, err := fake.GetRealServers(vs)
164 if err != nil {
165 t.Errorf("Fail to get real servers of the virtual server, error: %v", err)
166 }
167 for _, dest := range dests {
168 if toRealServerKey(dest).String() == toRealServerKey(rsToDel).String() {
169 t.Errorf("Expect real server %q be deleted.", rsToDel.String())
170 }
171 }
172 if err = fake.AddRealServer(vs, rsToDel); err != nil {
173 t.Errorf("Fail to add real server, error: %v", err)
174 }
175 }
176 }
177
178 rs := &utilipvs.RealServer{
179 Address: netutils.ParseIPSloppy("172.16.2.4"),
180 Port: uint16(8080),
181 Weight: 1,
182 }
183 if err = fake.DeleteRealServer(vs, rs); err == nil {
184 t.Errorf("Delete real server that not exist, Expect error, got nil")
185 }
186
187 err = fake.DeleteVirtualServer(vs)
188 if err != nil {
189 t.Errorf("Fail to delete virtual server, error: %v", err)
190 }
191 _, err = fake.GetRealServers(vs)
192 if err == nil {
193 t.Errorf("Expect error, got nil")
194 }
195 }
196
View as plain text