mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-01 10:48:15 +00:00
proxy: refactor UpdateEndpointsMapResult
Signed-off-by: Daman Arora <aroradaman@gmail.com>
This commit is contained in:
@@ -3564,22 +3564,20 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
// previousEndpoints and currentEndpoints are used to call appropriate
|
||||
// handlers OnEndpoints* (based on whether corresponding values are nil
|
||||
// or non-nil) and must be of equal length.
|
||||
name string
|
||||
previousEndpoints []*discovery.EndpointSlice
|
||||
currentEndpoints []*discovery.EndpointSlice
|
||||
oldEndpoints map[proxy.ServicePortName][]endpointExpectation
|
||||
expectedResult map[proxy.ServicePortName][]endpointExpectation
|
||||
expectedDeletedUDPEndpoints []proxy.ServiceEndpoint
|
||||
expectedNewlyActiveUDPServices map[proxy.ServicePortName]bool
|
||||
expectedLocalEndpoints map[types.NamespacedName]int
|
||||
name string
|
||||
previousEndpoints []*discovery.EndpointSlice
|
||||
currentEndpoints []*discovery.EndpointSlice
|
||||
oldEndpoints map[proxy.ServicePortName][]endpointExpectation
|
||||
expectedResult map[proxy.ServicePortName][]endpointExpectation
|
||||
expectedConntrackCleanupRequired bool
|
||||
expectedLocalEndpoints map[types.NamespacedName]int
|
||||
}{{
|
||||
// Case[0]: nothing
|
||||
name: "nothing",
|
||||
oldEndpoints: map[proxy.ServicePortName][]endpointExpectation{},
|
||||
expectedResult: map[proxy.ServicePortName][]endpointExpectation{},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
name: "nothing",
|
||||
oldEndpoints: map[proxy.ServicePortName][]endpointExpectation{},
|
||||
expectedResult: map[proxy.ServicePortName][]endpointExpectation{},
|
||||
expectedConntrackCleanupRequired: false,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
}, {
|
||||
// Case[1]: no change, named port, local
|
||||
name: "no change, named port, local",
|
||||
@@ -3595,8 +3593,7 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:11", isLocal: true},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedConntrackCleanupRequired: false,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{
|
||||
makeNSN("ns1", "ep1"): 1,
|
||||
},
|
||||
@@ -3621,9 +3618,8 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.2:12", isLocal: false},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
expectedConntrackCleanupRequired: false,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
}, {
|
||||
// Case[3]: no change, multiple subsets, multiple ports, local
|
||||
name: "no change, multiple subsets, multiple ports, local",
|
||||
@@ -3651,8 +3647,7 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.3:13", isLocal: false},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedConntrackCleanupRequired: false,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{
|
||||
makeNSN("ns1", "ep1"): 1,
|
||||
},
|
||||
@@ -3713,8 +3708,7 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.2.2.2:22", isLocal: true},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedConntrackCleanupRequired: false,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{
|
||||
makeNSN("ns1", "ep1"): 2,
|
||||
makeNSN("ns2", "ep2"): 1,
|
||||
@@ -3730,10 +3724,7 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:11", isLocal: true},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{
|
||||
makeServicePortName("ns1", "ep1", "p11", v1.ProtocolUDP): true,
|
||||
},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{
|
||||
makeNSN("ns1", "ep1"): 1,
|
||||
},
|
||||
@@ -3747,13 +3738,9 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:11", isLocal: true},
|
||||
},
|
||||
},
|
||||
expectedResult: map[proxy.ServicePortName][]endpointExpectation{},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{{
|
||||
Endpoint: "10.1.1.1:11",
|
||||
ServicePortName: makeServicePortName("ns1", "ep1", "p11", v1.ProtocolUDP),
|
||||
}},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedResult: map[proxy.ServicePortName][]endpointExpectation{},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
}, {
|
||||
// Case[7]: add an IP and port
|
||||
name: "add an IP and port",
|
||||
@@ -3774,10 +3761,7 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.2:12", isLocal: true},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{
|
||||
makeServicePortName("ns1", "ep1", "p12", v1.ProtocolUDP): true,
|
||||
},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{
|
||||
makeNSN("ns1", "ep1"): 1,
|
||||
},
|
||||
@@ -3801,18 +3785,8 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:11", isLocal: false},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{{
|
||||
Endpoint: "10.1.1.2:11",
|
||||
ServicePortName: makeServicePortName("ns1", "ep1", "p11", v1.ProtocolUDP),
|
||||
}, {
|
||||
Endpoint: "10.1.1.1:12",
|
||||
ServicePortName: makeServicePortName("ns1", "ep1", "p12", v1.ProtocolUDP),
|
||||
}, {
|
||||
Endpoint: "10.1.1.2:12",
|
||||
ServicePortName: makeServicePortName("ns1", "ep1", "p12", v1.ProtocolUDP),
|
||||
}},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
}, {
|
||||
// Case[9]: add a subset
|
||||
name: "add a subset",
|
||||
@@ -3831,10 +3805,7 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.2:12", isLocal: true},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{
|
||||
makeServicePortName("ns1", "ep1", "p12", v1.ProtocolUDP): true,
|
||||
},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{
|
||||
makeNSN("ns1", "ep1"): 1,
|
||||
},
|
||||
@@ -3856,12 +3827,8 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:11", isLocal: false},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{{
|
||||
Endpoint: "10.1.1.2:12",
|
||||
ServicePortName: makeServicePortName("ns1", "ep1", "p12", v1.ProtocolUDP),
|
||||
}},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
}, {
|
||||
// Case[11]: rename a port
|
||||
name: "rename a port",
|
||||
@@ -3877,14 +3844,8 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:11", isLocal: false},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{{
|
||||
Endpoint: "10.1.1.1:11",
|
||||
ServicePortName: makeServicePortName("ns1", "ep1", "p11", v1.ProtocolUDP),
|
||||
}},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{
|
||||
makeServicePortName("ns1", "ep1", "p11-2", v1.ProtocolUDP): true,
|
||||
},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
}, {
|
||||
// Case[12]: renumber a port
|
||||
name: "renumber a port",
|
||||
@@ -3900,12 +3861,8 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:22", isLocal: false},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{{
|
||||
Endpoint: "10.1.1.1:11",
|
||||
ServicePortName: makeServicePortName("ns1", "ep1", "p11", v1.ProtocolUDP),
|
||||
}},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
}, {
|
||||
// Case[13]: complex add and remove
|
||||
name: "complex add and remove",
|
||||
@@ -3948,27 +3905,7 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.4.4.4:44", isLocal: true},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{{
|
||||
Endpoint: "10.2.2.2:22",
|
||||
ServicePortName: makeServicePortName("ns2", "ep2", "p22", v1.ProtocolUDP),
|
||||
}, {
|
||||
Endpoint: "10.2.2.22:22",
|
||||
ServicePortName: makeServicePortName("ns2", "ep2", "p22", v1.ProtocolUDP),
|
||||
}, {
|
||||
Endpoint: "10.2.2.3:23",
|
||||
ServicePortName: makeServicePortName("ns2", "ep2", "p23", v1.ProtocolUDP),
|
||||
}, {
|
||||
Endpoint: "10.4.4.5:44",
|
||||
ServicePortName: makeServicePortName("ns4", "ep4", "p44", v1.ProtocolUDP),
|
||||
}, {
|
||||
Endpoint: "10.4.4.6:45",
|
||||
ServicePortName: makeServicePortName("ns4", "ep4", "p45", v1.ProtocolUDP),
|
||||
}},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{
|
||||
makeServicePortName("ns1", "ep1", "p12", v1.ProtocolUDP): true,
|
||||
makeServicePortName("ns1", "ep1", "p122", v1.ProtocolUDP): true,
|
||||
makeServicePortName("ns3", "ep3", "p33", v1.ProtocolUDP): true,
|
||||
},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{
|
||||
makeNSN("ns4", "ep4"): 1,
|
||||
},
|
||||
@@ -3983,11 +3920,8 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
{endpoint: "10.1.1.1:11", isLocal: false},
|
||||
},
|
||||
},
|
||||
expectedDeletedUDPEndpoints: []proxy.ServiceEndpoint{},
|
||||
expectedNewlyActiveUDPServices: map[proxy.ServicePortName]bool{
|
||||
makeServicePortName("ns1", "ep1", "p11", v1.ProtocolUDP): true,
|
||||
},
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
expectedConntrackCleanupRequired: true,
|
||||
expectedLocalEndpoints: map[types.NamespacedName]int{},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -4026,34 +3960,8 @@ func TestUpdateEndpointsMap(t *testing.T) {
|
||||
result := fp.endpointsMap.Update(fp.endpointsChanges)
|
||||
newMap := fp.endpointsMap
|
||||
checkEndpointExpectations(t, tci, newMap, tc.expectedResult)
|
||||
if len(result.DeletedUDPEndpoints) != len(tc.expectedDeletedUDPEndpoints) {
|
||||
t.Errorf("[%d] expected %d staleEndpoints, got %d: %v", tci, len(tc.expectedDeletedUDPEndpoints), len(result.DeletedUDPEndpoints), result.DeletedUDPEndpoints)
|
||||
}
|
||||
for _, x := range tc.expectedDeletedUDPEndpoints {
|
||||
found := false
|
||||
for _, stale := range result.DeletedUDPEndpoints {
|
||||
if stale == x {
|
||||
found = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Errorf("[%d] expected staleEndpoints[%v], but didn't find it: %v", tci, x, result.DeletedUDPEndpoints)
|
||||
}
|
||||
}
|
||||
if len(result.NewlyActiveUDPServices) != len(tc.expectedNewlyActiveUDPServices) {
|
||||
t.Errorf("[%d] expected %d staleServiceNames, got %d: %v", tci, len(tc.expectedNewlyActiveUDPServices), len(result.NewlyActiveUDPServices), result.NewlyActiveUDPServices)
|
||||
}
|
||||
for svcName := range tc.expectedNewlyActiveUDPServices {
|
||||
found := false
|
||||
for _, stale := range result.NewlyActiveUDPServices {
|
||||
if stale == svcName {
|
||||
found = true
|
||||
}
|
||||
}
|
||||
if !found {
|
||||
t.Errorf("[%d] expected staleServiceNames[%v], but didn't find it: %v", tci, svcName, result.NewlyActiveUDPServices)
|
||||
}
|
||||
if result.ConntrackCleanupRequired != tc.expectedConntrackCleanupRequired {
|
||||
t.Errorf("[%d] expected conntrackCleanupRequired to be %t, got %t", tci, tc.expectedConntrackCleanupRequired, result.ConntrackCleanupRequired)
|
||||
}
|
||||
localReadyEndpoints := fp.endpointsMap.LocalReadyEndpoints()
|
||||
if !reflect.DeepEqual(localReadyEndpoints, tc.expectedLocalEndpoints) {
|
||||
|
||||
Reference in New Issue
Block a user