Skip to content

Commit 42f6a05

Browse files
alakaehref
authored andcommitted
Add more cases to TestActualState
1 parent 291ad01 commit 42f6a05

File tree

1 file changed

+99
-61
lines changed

1 file changed

+99
-61
lines changed

pkg/cloudscale_ccm/reconcile_test.go

Lines changed: 99 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -202,79 +202,117 @@ func TestDesiredService(t *testing.T) {
202202
func TestActualState(t *testing.T) {
203203
t.Parallel()
204204

205-
server := testkit.NewMockAPIServer()
206-
server.WithLoadBalancers([]cloudscale.LoadBalancer{
205+
testCases := []struct {
206+
name string
207+
annotations map[string]string
208+
}{
207209
{
208-
UUID: "00000000-0000-0000-0000-000000000000",
209-
Name: "k8test-service-test",
210-
},
211-
})
212-
server.On("/v1/load-balancers/pools", 200, []cloudscale.LoadBalancerPool{
213-
{
214-
Name: "tcp/80",
215-
UUID: "00000000-0000-0000-0000-000000000001",
216-
LoadBalancer: cloudscale.LoadBalancerStub{
217-
UUID: "00000000-0000-0000-0000-000000000000",
210+
name: "by UUID only",
211+
annotations: map[string]string{
212+
LoadBalancerUUID: "00000000-0000-0000-0000-000000000000",
218213
},
219214
},
220-
})
221-
server.On("/v1/load-balancers/pools/00000000-0000-0000-0000-000000000001"+
222-
"/members", 200, []cloudscale.LoadBalancerPoolMember{
223215
{
224-
Name: "10.0.0.1:8080",
225-
Pool: cloudscale.LoadBalancerPoolStub{
226-
UUID: "00000000-0000-0000-0000-000000000001",
216+
name: "by Name only",
217+
annotations: map[string]string{
218+
LoadBalancerName: "k8test-service-test",
227219
},
228220
},
229-
})
230-
server.On("/v1/load-balancers/listeners", 200,
231-
[]cloudscale.LoadBalancerListener{
232-
{
233-
Name: "tcp/80",
234-
Pool: &cloudscale.LoadBalancerPoolStub{
235-
UUID: "00000000-0000-0000-0000-000000000001",
236-
},
221+
{
222+
name: "by matching UUID and Name",
223+
annotations: map[string]string{
224+
LoadBalancerUUID: "00000000-0000-0000-0000-000000000000",
225+
LoadBalancerName: "k8test-service-test",
237226
},
238227
},
239-
)
240-
server.On("/v1/load-balancers/health-monitors", 200,
241-
[]cloudscale.LoadBalancerHealthMonitor{
242-
{
243-
Type: "tcp",
244-
Pool: cloudscale.LoadBalancerPoolStub{
245-
UUID: "00000000-0000-0000-0000-000000000001",
246-
},
228+
{
229+
name: "by none-matching UUID and Name, name has precedence",
230+
annotations: map[string]string{
231+
LoadBalancerUUID: "00000000-0000-ffff-0000-000000000000",
232+
LoadBalancerName: "k8test-service-test",
247233
},
248234
},
249-
)
250-
server.On("/v1/floating-ips", 200,
251-
[]cloudscale.FloatingIP{},
252-
)
253-
server.Start()
254-
defer server.Close()
255-
256-
mapper := lbMapper{client: server.Client()}
257-
258-
s := testkit.NewService("service").V1()
259-
s.Annotations = make(map[string]string)
260-
s.Annotations[LoadBalancerUUID] = "00000000-0000-0000-0000-000000000000"
261-
262-
i := newServiceInfo(s, "")
235+
}
263236

264-
actual, err := actualLbState(t.Context(), &mapper, i)
265-
assert.NoError(t, err)
237+
for _, tc := range testCases {
238+
t.Run(tc.name, func(t *testing.T) {
239+
t.Parallel()
266240

267-
assert.Equal(t, "k8test-service-test", actual.lb.Name)
268-
assert.Len(t, actual.pools, 1)
269-
assert.Len(t, actual.members, 1)
270-
assert.Len(t, actual.listeners, 1)
271-
assert.Len(t, actual.monitors, 1)
272-
273-
p := actual.pools[0]
274-
assert.Equal(t, "tcp/80", p.Name)
275-
assert.Equal(t, "10.0.0.1:8080", actual.members[p][0].Name)
276-
assert.Equal(t, "tcp/80", actual.listeners[p][0].Name)
277-
assert.Equal(t, "tcp", actual.monitors[p][0].Type)
241+
server := testkit.NewMockAPIServer()
242+
server.WithLoadBalancers([]cloudscale.LoadBalancer{
243+
{
244+
UUID: "00000000-0000-0000-0000-000000000000",
245+
Name: "k8test-service-test",
246+
},
247+
})
248+
server.On("/v1/load-balancers/pools", 200,
249+
[]cloudscale.LoadBalancerPool{
250+
{
251+
Name: "tcp/80",
252+
UUID: "00000000-0000-0000-0000-000000000001",
253+
LoadBalancer: cloudscale.LoadBalancerStub{
254+
UUID: "00000000-0000-0000-0000-000000000000",
255+
},
256+
},
257+
})
258+
server.On("/v1/load-balancers/pools/"+
259+
"00000000-0000-0000-0000-000000000001/members", 200,
260+
[]cloudscale.LoadBalancerPoolMember{
261+
{
262+
Name: "10.0.0.1:8080",
263+
Pool: cloudscale.LoadBalancerPoolStub{
264+
UUID: "00000000-0000-0000-0000-000000000001",
265+
},
266+
},
267+
})
268+
server.On("/v1/load-balancers/listeners", 200,
269+
[]cloudscale.LoadBalancerListener{
270+
{
271+
Name: "tcp/80",
272+
Pool: &cloudscale.LoadBalancerPoolStub{
273+
UUID: "00000000-0000-0000-0000-000000000001",
274+
},
275+
},
276+
},
277+
)
278+
server.On("/v1/load-balancers/health-monitors", 200,
279+
[]cloudscale.LoadBalancerHealthMonitor{
280+
{
281+
Type: "tcp",
282+
Pool: cloudscale.LoadBalancerPoolStub{
283+
UUID: "00000000-0000-0000-0000-000000000001",
284+
},
285+
},
286+
},
287+
)
288+
server.On("/v1/floating-ips", 200,
289+
[]cloudscale.FloatingIP{},
290+
)
291+
server.Start()
292+
defer server.Close()
293+
294+
mapper := lbMapper{client: server.Client()}
295+
296+
s := testkit.NewService("service").V1()
297+
s.Annotations = tc.annotations
298+
i := newServiceInfo(s, "")
299+
300+
actual, err := actualLbState(t.Context(), &mapper, i)
301+
assert.NoError(t, err)
302+
303+
assert.Equal(t, "k8test-service-test", actual.lb.Name)
304+
assert.Len(t, actual.pools, 1)
305+
assert.Len(t, actual.members, 1)
306+
assert.Len(t, actual.listeners, 1)
307+
assert.Len(t, actual.monitors, 1)
308+
309+
p := actual.pools[0]
310+
assert.Equal(t, "tcp/80", p.Name)
311+
assert.Equal(t, "10.0.0.1:8080", actual.members[p][0].Name)
312+
assert.Equal(t, "tcp/80", actual.listeners[p][0].Name)
313+
assert.Equal(t, "tcp", actual.monitors[p][0].Type)
314+
})
315+
}
278316
}
279317

280318
func TestNextLbActionsInvalidCalls(t *testing.T) {

0 commit comments

Comments
 (0)