@@ -1532,7 +1532,7 @@ func TestUnknownNodes(t *testing.T) {
15321532 }
15331533
15341534 // Check that unknown zone did not cause endpoints to be removed
1535- out , err := retrieveExistingZoneNetworkEndpointMap (testNegName , zoneGetter , fakeCloud , meta .VersionGA , negtypes .L7Mode )
1535+ out , _ , err := retrieveExistingZoneNetworkEndpointMap (testNegName , zoneGetter , fakeCloud , meta .VersionGA , negtypes .L7Mode )
15361536 if err != nil {
15371537 t .Errorf ("errored retrieving existing network endpoints" )
15381538 }
@@ -1761,7 +1761,7 @@ func TestEnableDegradedMode(t *testing.T) {
17611761 (s .syncer .(* syncer )).stopped = false
17621762 tc .modify (s )
17631763
1764- out , err := retrieveExistingZoneNetworkEndpointMap (tc .negName , zoneGetter , fakeCloud , meta .VersionGA , negtypes .L7Mode )
1764+ out , _ , err := retrieveExistingZoneNetworkEndpointMap (tc .negName , zoneGetter , fakeCloud , meta .VersionGA , negtypes .L7Mode )
17651765 if err != nil {
17661766 t .Errorf ("errored retrieving existing network endpoints" )
17671767 }
@@ -1777,7 +1777,7 @@ func TestEnableDegradedMode(t *testing.T) {
17771777 t .Errorf ("after syncInternal, error state is %v, expected to be %v" , s .inErrorState (), tc .expectedInErrorState )
17781778 }
17791779 err = wait .PollImmediate (time .Second , 3 * time .Second , func () (bool , error ) {
1780- out , err = retrieveExistingZoneNetworkEndpointMap (tc .negName , zoneGetter , fakeCloud , meta .VersionGA , negtypes .L7Mode )
1780+ out , _ , err = retrieveExistingZoneNetworkEndpointMap (tc .negName , zoneGetter , fakeCloud , meta .VersionGA , negtypes .L7Mode )
17811781 if err != nil {
17821782 return false , err
17831783 }
@@ -1910,6 +1910,109 @@ func TestGetEndpointPodLabelMap(t *testing.T) {
19101910 }
19111911}
19121912
1913+ func TestCollectLabelStats (t * testing.T ) {
1914+ t .Parallel ()
1915+
1916+ testIP1 := "1.2.3.4"
1917+ testIP2 := "1.2.3.5"
1918+ testIP3 := "1.2.3.6"
1919+ testIP4 := "1.2.3.7"
1920+ testPort := int64 (80 )
1921+ endpoint1 := negtypes.NetworkEndpoint {IP : testIP1 , Node : negtypes .TestInstance1 , Port : strconv .Itoa (int (testPort ))}
1922+ endpoint2 := negtypes.NetworkEndpoint {IP : testIP2 , Node : negtypes .TestInstance2 , Port : strconv .Itoa (int (testPort ))}
1923+ endpoint3 := negtypes.NetworkEndpoint {IP : testIP3 , Node : negtypes .TestInstance3 , Port : strconv .Itoa (int (testPort ))}
1924+ endpoint4 := negtypes.NetworkEndpoint {IP : testIP4 , Node : negtypes .TestInstance4 , Port : strconv .Itoa (int (testPort ))}
1925+
1926+ for _ , tc := range []struct {
1927+ desc string
1928+ curLabelMap labels.EndpointPodLabelMap
1929+ addLabelMap labels.EndpointPodLabelMap
1930+ targetEndpointMap map [string ]negtypes.NetworkEndpointSet
1931+ expect metrics.LabelPropagationStats
1932+ }{
1933+ {
1934+ desc : "Empty inputs" ,
1935+ curLabelMap : labels.EndpointPodLabelMap {},
1936+ addLabelMap : labels.EndpointPodLabelMap {},
1937+ targetEndpointMap : map [string ]negtypes.NetworkEndpointSet {},
1938+ expect : metrics.LabelPropagationStats {
1939+ EndpointsWithAnnotation : 0 ,
1940+ NumberOfEndpoints : 0 ,
1941+ },
1942+ },
1943+ {
1944+ desc : "No new endpoints to be added" ,
1945+ curLabelMap : labels.EndpointPodLabelMap {
1946+ endpoint1 : labels.PodLabelMap {
1947+ "foo" : "bar" ,
1948+ },
1949+ },
1950+ addLabelMap : labels.EndpointPodLabelMap {},
1951+ targetEndpointMap : map [string ]negtypes.NetworkEndpointSet {
1952+ testZone1 : negtypes .NewNetworkEndpointSet (
1953+ endpoint1 ,
1954+ endpoint2 ,
1955+ ),
1956+ },
1957+ expect : metrics.LabelPropagationStats {
1958+ EndpointsWithAnnotation : 1 ,
1959+ NumberOfEndpoints : 2 ,
1960+ },
1961+ },
1962+ {
1963+ desc : "Some endpoints to be added" ,
1964+ curLabelMap : labels.EndpointPodLabelMap {
1965+ endpoint1 : labels.PodLabelMap {
1966+ "foo" : "bar" ,
1967+ },
1968+ },
1969+ addLabelMap : labels.EndpointPodLabelMap {
1970+ endpoint3 : labels.PodLabelMap {
1971+ "foo" : "bar" ,
1972+ },
1973+ },
1974+ targetEndpointMap : map [string ]negtypes.NetworkEndpointSet {
1975+ testZone1 : negtypes .NewNetworkEndpointSet (
1976+ endpoint1 ,
1977+ endpoint2 ,
1978+ ),
1979+ testZone2 : negtypes .NewNetworkEndpointSet (
1980+ endpoint3 ,
1981+ endpoint4 ,
1982+ ),
1983+ },
1984+ expect : metrics.LabelPropagationStats {
1985+ EndpointsWithAnnotation : 2 ,
1986+ NumberOfEndpoints : 4 ,
1987+ },
1988+ },
1989+ {
1990+ desc : "Only newly added endpoints" ,
1991+ curLabelMap : labels.EndpointPodLabelMap {},
1992+ addLabelMap : labels.EndpointPodLabelMap {
1993+ endpoint3 : labels.PodLabelMap {
1994+ "foo" : "bar" ,
1995+ },
1996+ },
1997+ targetEndpointMap : map [string ]negtypes.NetworkEndpointSet {
1998+ testZone2 : negtypes .NewNetworkEndpointSet (
1999+ endpoint3 ,
2000+ endpoint4 ,
2001+ ),
2002+ },
2003+ expect : metrics.LabelPropagationStats {
2004+ EndpointsWithAnnotation : 1 ,
2005+ NumberOfEndpoints : 2 ,
2006+ },
2007+ },
2008+ } {
2009+ out := collectLabelStats (tc .curLabelMap , tc .addLabelMap , tc .targetEndpointMap )
2010+ if diff := cmp .Diff (out , tc .expect ); diff != "" {
2011+ t .Errorf ("For test case %s: (-want +got): \n %s" , tc .desc , diff )
2012+ }
2013+ }
2014+ }
2015+
19132016func newL4ILBTestTransactionSyncer (fakeGCE negtypes.NetworkEndpointGroupCloud , mode negtypes.EndpointsCalculatorMode ) (negtypes.NegSyncer , * transactionSyncer ) {
19142017 negsyncer , ts := newTestTransactionSyncer (fakeGCE , negtypes .VmIpEndpointType , false )
19152018 ts .endpointsCalculator = GetEndpointsCalculator (ts .nodeLister , ts .podLister , ts .zoneGetter , ts .NegSyncerKey , mode , klog .TODO (), ts .enableDualStackNEG )
0 commit comments