Skip to content

Commit

Permalink
services_controller_test: Test with LB groups enabled.
Browse files Browse the repository at this point in the history
That's what we actually deploy nowadays.

Signed-off-by: Dumitru Ceara <dceara@redhat.com>
  • Loading branch information
dceara committed Apr 5, 2023
1 parent 8a616fd commit b1fba8f
Showing 1 changed file with 74 additions and 62 deletions.
136 changes: 74 additions & 62 deletions go-controller/pkg/ovn/controller/services/services_controller_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ func newControllerWithDBSetup(dbSetup libovsdbtest.TestSetup) (*serviceControlle
controller.servicesSynced = alwaysReady
controller.endpointSlicesSynced = alwaysReady
controller.initTopLevelCache()
controller.useLBGroups = true
return &serviceController{
controller,
informerFactory.Core().V1().Services().Informer().GetStore(),
Expand Down Expand Up @@ -161,10 +162,11 @@ func TestSyncServices(t *testing.T) {
},
},
initialDb: []libovsdbtest.TestData{
nodeLogicalSwitch(nodeA),
nodeLogicalSwitch(nodeB),
nodeLogicalRouter(nodeA),
nodeLogicalRouter(nodeB),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName}),
lbGroup(types.ClusterLBGroupName),
},
expectedDb: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
Expand All @@ -177,10 +179,11 @@ func TestSyncServices(t *testing.T) {
},
ExternalIDs: serviceExternalIDs(namespacedServiceName(ns, serviceName)),
},
nodeLogicalSwitch(nodeA, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeB, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeA, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeB, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName}),
lbGroup(types.ClusterLBGroupName, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
},
},
{
Expand Down Expand Up @@ -220,12 +223,13 @@ func TestSyncServices(t *testing.T) {
},
ExternalIDs: serviceExternalIDs(namespacedServiceName(ns, serviceName)),
},
nodeLogicalSwitch(nodeA),
nodeLogicalSwitch(nodeB),
nodeLogicalSwitch("wrong-switch", loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeA, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeB, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter("node-c", loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch("wrong-switch", []string{}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter("node-c", []string{}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroup(types.ClusterLBGroupName),
},
expectedDb: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
Expand All @@ -238,12 +242,13 @@ func TestSyncServices(t *testing.T) {
},
ExternalIDs: serviceExternalIDs(namespacedServiceName(ns, serviceName)),
},
nodeLogicalSwitch(nodeA, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeB, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch("wrong-switch"),
nodeLogicalRouter(nodeA, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeB, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter("node-c"),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch("wrong-switch", []string{}),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName}),
nodeLogicalRouter("node-c", []string{}),
lbGroup(types.ClusterLBGroupName, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
},
},
{
Expand Down Expand Up @@ -296,10 +301,11 @@ func TestSyncServices(t *testing.T) {
},
ExternalIDs: serviceExternalIDs(namespacedServiceName(ns, serviceName)),
},
nodeLogicalSwitch(nodeA, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeB, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeA, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeB, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName}, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
lbGroup(types.ClusterLBGroupName),
},
expectedDb: []libovsdbtest.TestData{
&nbdb.LoadBalancer{
Expand All @@ -314,18 +320,15 @@ func TestSyncServices(t *testing.T) {
},
nodeRouterLoadBalancer(firstNode, nodePort, serviceName, ns, outport, nodeAEndpointIP, nodeBEndpointIP),
nodeRouterLoadBalancer(secondNode, nodePort, serviceName, ns, outport, nodeAEndpointIP, nodeBEndpointIP),
nodeLogicalSwitch(nodeA,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeA, ns, serviceName)),
nodeLogicalSwitch(nodeB,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeB, ns, serviceName)),
nodeLogicalRouter(nodeA,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeA, ns, serviceName)),
nodeLogicalRouter(nodeB,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeB, ns, serviceName)),
lbGroup(types.ClusterLBGroupName, loadBalancerClusterWideTCPServiceName(ns, serviceName)),
},
},
{
Expand Down Expand Up @@ -378,13 +381,11 @@ func TestSyncServices(t *testing.T) {
},
ExternalIDs: serviceExternalIDs(namespacedServiceName(ns, serviceName)),
},
nodeLogicalSwitch(nodeA,
loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalSwitch(nodeB,
loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeA,
loadBalancerClusterWideTCPServiceName(ns, serviceName)),
nodeLogicalRouter(nodeB,
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName}),
lbGroup(types.ClusterLBGroupName,
loadBalancerClusterWideTCPServiceName(ns, serviceName)),
},
expectedDb: []libovsdbtest.TestData{
Expand All @@ -400,18 +401,16 @@ func TestSyncServices(t *testing.T) {
},
nodeRouterLoadBalancer(firstNode, nodePort, serviceName, ns, outport, nodeAEndpointIP, nodeBEndpointIP),
nodeRouterLoadBalancer(secondNode, nodePort, serviceName, ns, outport, nodeAEndpointIP, nodeBEndpointIP),
nodeLogicalSwitch(nodeA,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeA, ns, serviceName)),
nodeLogicalSwitch(nodeB,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeB, ns, serviceName)),
nodeLogicalRouter(nodeA,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeA, ns, serviceName)),
nodeLogicalRouter(nodeB,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeB, ns, serviceName)),
lbGroup(types.ClusterLBGroupName,
loadBalancerClusterWideTCPServiceName(ns, serviceName)),
},
nodeToDelete: nodeConfig(nodeA, nodeAHostIP),
dbStateAfterDeleting: []libovsdbtest.TestData{
Expand All @@ -426,14 +425,14 @@ func TestSyncServices(t *testing.T) {
ExternalIDs: serviceExternalIDs(namespacedServiceName(ns, serviceName)),
},
nodeRouterLoadBalancer(secondNode, nodePort, serviceName, ns, outport, nodeAEndpointIP, nodeBEndpointIP),
nodeLogicalSwitch(nodeA),
nodeLogicalSwitch(nodeB,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalSwitch(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalSwitch(nodeB, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeB, ns, serviceName)),
nodeLogicalRouter(nodeA),
nodeLogicalRouter(nodeB,
loadBalancerClusterWideTCPServiceName(ns, serviceName),
nodeLogicalRouter(nodeA, []string{types.ClusterLBGroupName}),
nodeLogicalRouter(nodeB, []string{types.ClusterLBGroupName},
nodeSwitchRouterLoadBalancerName(nodeB, ns, serviceName)),
lbGroup(types.ClusterLBGroupName,
loadBalancerClusterWideTCPServiceName(ns, serviceName)),
},
},
}
Expand Down Expand Up @@ -498,26 +497,28 @@ func TestSyncServices(t *testing.T) {
}
}

func nodeLogicalSwitch(nodeName string, namespacedServiceNames ...string) *nbdb.LogicalSwitch {
func nodeLogicalSwitch(nodeName string, lbGroups []string, namespacedServiceNames ...string) *nbdb.LogicalSwitch {
ls := &nbdb.LogicalSwitch{
UUID: nodeSwitchName(nodeName),
Name: nodeSwitchName(nodeName),
UUID: nodeSwitchName(nodeName),
Name: nodeSwitchName(nodeName),
LoadBalancerGroup: lbGroups,
}
if len(namespacedServiceNames) > 0 {
ls.LoadBalancer = namespacedServiceNames
}
return ls
}

func nodeLogicalRouter(nodeName string, namespacedServiceNames ...string) *nbdb.LogicalRouter {
ls := &nbdb.LogicalRouter{
UUID: nodeGWRouterName(nodeName),
Name: nodeGWRouterName(nodeName),
func nodeLogicalRouter(nodeName string, lbGroups []string, namespacedServiceNames ...string) *nbdb.LogicalRouter {
lr := &nbdb.LogicalRouter{
UUID: nodeGWRouterName(nodeName),
Name: nodeGWRouterName(nodeName),
LoadBalancerGroup: lbGroups,
}
if len(namespacedServiceNames) > 0 {
ls.LoadBalancer = namespacedServiceNames
lr.LoadBalancer = namespacedServiceNames
}
return ls
return lr
}

func nodeSwitchName(nodeName string) string {
Expand All @@ -528,6 +529,17 @@ func nodeGWRouterName(nodeName string) string {
return fmt.Sprintf("gr-%s", nodeName)
}

func lbGroup(name string, namespacedServiceNames ...string) *nbdb.LoadBalancerGroup {
lbg := &nbdb.LoadBalancerGroup{
UUID: name,
Name: name,
}
if len(namespacedServiceNames) > 0 {
lbg.LoadBalancer = namespacedServiceNames
}
return lbg
}

func loadBalancerClusterWideTCPServiceName(ns string, serviceName string) string {
return fmt.Sprintf("Service_%s_TCP_cluster", namespacedServiceName(ns, serviceName))
}
Expand Down

0 comments on commit b1fba8f

Please sign in to comment.