mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	cmd/kube-proxy: refactor options test
Signed-off-by: Daman Arora <aroradaman@gmail.com>
This commit is contained in:
		@@ -179,81 +179,83 @@ nodePortAddresses:
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, tc := range testCases {
 | 
			
		||||
		expBindAddr := tc.bindAddress
 | 
			
		||||
		if tc.bindAddress[0] == '"' {
 | 
			
		||||
			// Surrounding double quotes will get stripped by the yaml parser.
 | 
			
		||||
			expBindAddr = expBindAddr[1 : len(tc.bindAddress)-1]
 | 
			
		||||
		}
 | 
			
		||||
		expected := &kubeproxyconfig.KubeProxyConfiguration{
 | 
			
		||||
			BindAddress: expBindAddr,
 | 
			
		||||
			ClientConnection: componentbaseconfig.ClientConnectionConfiguration{
 | 
			
		||||
				AcceptContentTypes: "abc",
 | 
			
		||||
				Burst:              100,
 | 
			
		||||
				ContentType:        "content-type",
 | 
			
		||||
				Kubeconfig:         "/path/to/kubeconfig",
 | 
			
		||||
				QPS:                7,
 | 
			
		||||
			},
 | 
			
		||||
			ClusterCIDR:      tc.clusterCIDR,
 | 
			
		||||
			ConfigSyncPeriod: metav1.Duration{Duration: 15 * time.Second},
 | 
			
		||||
			Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
				MaxPerCore:            ptr.To[int32](2),
 | 
			
		||||
				Min:                   ptr.To[int32](1),
 | 
			
		||||
				TCPCloseWaitTimeout:   &metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
				TCPEstablishedTimeout: &metav1.Duration{Duration: 20 * time.Second},
 | 
			
		||||
			},
 | 
			
		||||
			FeatureGates:       map[string]bool{},
 | 
			
		||||
			HealthzBindAddress: tc.healthzBindAddress,
 | 
			
		||||
			HostnameOverride:   "foo",
 | 
			
		||||
			IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
 | 
			
		||||
				MasqueradeAll:      true,
 | 
			
		||||
				MasqueradeBit:      ptr.To[int32](17),
 | 
			
		||||
				LocalhostNodePorts: ptr.To(true),
 | 
			
		||||
				MinSyncPeriod:      metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
				SyncPeriod:         metav1.Duration{Duration: 60 * time.Second},
 | 
			
		||||
			},
 | 
			
		||||
			IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
				MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
				SyncPeriod:    metav1.Duration{Duration: 60 * time.Second},
 | 
			
		||||
				ExcludeCIDRs:  []string{"10.20.30.40/16", "fd00:1::0/64"},
 | 
			
		||||
			},
 | 
			
		||||
			NFTables: kubeproxyconfig.KubeProxyNFTablesConfiguration{
 | 
			
		||||
				MasqueradeAll: true,
 | 
			
		||||
				MasqueradeBit: ptr.To[int32](18),
 | 
			
		||||
				MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
				SyncPeriod:    metav1.Duration{Duration: 60 * time.Second},
 | 
			
		||||
			},
 | 
			
		||||
			MetricsBindAddress: tc.metricsBindAddress,
 | 
			
		||||
			Mode:               kubeproxyconfig.ProxyMode(tc.mode),
 | 
			
		||||
			OOMScoreAdj:        ptr.To[int32](17),
 | 
			
		||||
			PortRange:          "2-7",
 | 
			
		||||
			NodePortAddresses:  []string{"10.20.30.40/16", "fd00:1::0/64"},
 | 
			
		||||
			DetectLocalMode:    kubeproxyconfig.LocalModeClusterCIDR,
 | 
			
		||||
			DetectLocal: kubeproxyconfig.DetectLocalConfiguration{
 | 
			
		||||
				BridgeInterface:     string("cbr0"),
 | 
			
		||||
				InterfaceNamePrefix: string("veth"),
 | 
			
		||||
			},
 | 
			
		||||
			Logging: logsapi.LoggingConfiguration{
 | 
			
		||||
				Format:         "text",
 | 
			
		||||
				FlushFrequency: logsapi.TimeOrMetaDuration{Duration: metav1.Duration{Duration: 5 * time.Second}, SerializeAsString: true},
 | 
			
		||||
			},
 | 
			
		||||
		}
 | 
			
		||||
		t.Run(tc.name, func(t *testing.T) {
 | 
			
		||||
			expBindAddr := tc.bindAddress
 | 
			
		||||
			if tc.bindAddress[0] == '"' {
 | 
			
		||||
				// Surrounding double quotes will get stripped by the yaml parser.
 | 
			
		||||
				expBindAddr = expBindAddr[1 : len(tc.bindAddress)-1]
 | 
			
		||||
			}
 | 
			
		||||
			expected := &kubeproxyconfig.KubeProxyConfiguration{
 | 
			
		||||
				BindAddress: expBindAddr,
 | 
			
		||||
				ClientConnection: componentbaseconfig.ClientConnectionConfiguration{
 | 
			
		||||
					AcceptContentTypes: "abc",
 | 
			
		||||
					Burst:              100,
 | 
			
		||||
					ContentType:        "content-type",
 | 
			
		||||
					Kubeconfig:         "/path/to/kubeconfig",
 | 
			
		||||
					QPS:                7,
 | 
			
		||||
				},
 | 
			
		||||
				ClusterCIDR:      tc.clusterCIDR,
 | 
			
		||||
				ConfigSyncPeriod: metav1.Duration{Duration: 15 * time.Second},
 | 
			
		||||
				Conntrack: kubeproxyconfig.KubeProxyConntrackConfiguration{
 | 
			
		||||
					MaxPerCore:            ptr.To[int32](2),
 | 
			
		||||
					Min:                   ptr.To[int32](1),
 | 
			
		||||
					TCPCloseWaitTimeout:   &metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					TCPEstablishedTimeout: &metav1.Duration{Duration: 20 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				FeatureGates:       map[string]bool{},
 | 
			
		||||
				HealthzBindAddress: tc.healthzBindAddress,
 | 
			
		||||
				HostnameOverride:   "foo",
 | 
			
		||||
				IPTables: kubeproxyconfig.KubeProxyIPTablesConfiguration{
 | 
			
		||||
					MasqueradeAll:      true,
 | 
			
		||||
					MasqueradeBit:      ptr.To[int32](17),
 | 
			
		||||
					LocalhostNodePorts: ptr.To(true),
 | 
			
		||||
					MinSyncPeriod:      metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					SyncPeriod:         metav1.Duration{Duration: 60 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				IPVS: kubeproxyconfig.KubeProxyIPVSConfiguration{
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 60 * time.Second},
 | 
			
		||||
					ExcludeCIDRs:  []string{"10.20.30.40/16", "fd00:1::0/64"},
 | 
			
		||||
				},
 | 
			
		||||
				NFTables: kubeproxyconfig.KubeProxyNFTablesConfiguration{
 | 
			
		||||
					MasqueradeAll: true,
 | 
			
		||||
					MasqueradeBit: ptr.To[int32](18),
 | 
			
		||||
					MinSyncPeriod: metav1.Duration{Duration: 10 * time.Second},
 | 
			
		||||
					SyncPeriod:    metav1.Duration{Duration: 60 * time.Second},
 | 
			
		||||
				},
 | 
			
		||||
				MetricsBindAddress: tc.metricsBindAddress,
 | 
			
		||||
				Mode:               kubeproxyconfig.ProxyMode(tc.mode),
 | 
			
		||||
				OOMScoreAdj:        ptr.To[int32](17),
 | 
			
		||||
				PortRange:          "2-7",
 | 
			
		||||
				NodePortAddresses:  []string{"10.20.30.40/16", "fd00:1::0/64"},
 | 
			
		||||
				DetectLocalMode:    kubeproxyconfig.LocalModeClusterCIDR,
 | 
			
		||||
				DetectLocal: kubeproxyconfig.DetectLocalConfiguration{
 | 
			
		||||
					BridgeInterface:     "cbr0",
 | 
			
		||||
					InterfaceNamePrefix: "veth",
 | 
			
		||||
				},
 | 
			
		||||
				Logging: logsapi.LoggingConfiguration{
 | 
			
		||||
					Format:         "text",
 | 
			
		||||
					FlushFrequency: logsapi.TimeOrMetaDuration{Duration: metav1.Duration{Duration: 5 * time.Second}, SerializeAsString: true},
 | 
			
		||||
				},
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
		options := NewOptions()
 | 
			
		||||
			options := NewOptions()
 | 
			
		||||
 | 
			
		||||
		baseYAML := fmt.Sprintf(
 | 
			
		||||
			yamlTemplate, tc.bindAddress, tc.clusterCIDR,
 | 
			
		||||
			tc.healthzBindAddress, tc.metricsBindAddress, tc.mode)
 | 
			
		||||
			baseYAML := fmt.Sprintf(
 | 
			
		||||
				yamlTemplate, tc.bindAddress, tc.clusterCIDR,
 | 
			
		||||
				tc.healthzBindAddress, tc.metricsBindAddress, tc.mode)
 | 
			
		||||
 | 
			
		||||
		// Append additional configuration to the base yaml template
 | 
			
		||||
		yaml := fmt.Sprintf("%s\n%s", baseYAML, tc.extraConfig)
 | 
			
		||||
			// Append additional configuration to the base yaml template
 | 
			
		||||
			yaml := fmt.Sprintf("%s\n%s", baseYAML, tc.extraConfig)
 | 
			
		||||
 | 
			
		||||
		config, err := options.loadConfig([]byte(yaml))
 | 
			
		||||
			config, err := options.loadConfig([]byte(yaml))
 | 
			
		||||
 | 
			
		||||
		require.NoError(t, err, "unexpected error for %s: %v", tc.name, err)
 | 
			
		||||
			require.NoError(t, err, "unexpected error for %s: %v", tc.name, err)
 | 
			
		||||
 | 
			
		||||
		if diff := cmp.Diff(config, expected); diff != "" {
 | 
			
		||||
			t.Fatalf("unexpected config for %s, diff = %s", tc.name, diff)
 | 
			
		||||
		}
 | 
			
		||||
			if diff := cmp.Diff(config, expected); diff != "" {
 | 
			
		||||
				t.Fatalf("unexpected config, diff = %s", diff)
 | 
			
		||||
			}
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -557,21 +559,13 @@ func TestAddressFromDeprecatedFlags(t *testing.T) {
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for i := range testCases {
 | 
			
		||||
		gotHealthz := addressFromDeprecatedFlags(testCases[i].healthzBindAddress, testCases[i].healthzPort)
 | 
			
		||||
		gotMetrics := addressFromDeprecatedFlags(testCases[i].metricsBindAddress, testCases[i].metricsPort)
 | 
			
		||||
 | 
			
		||||
		errFn := func(name, except, got string) {
 | 
			
		||||
			t.Errorf("case %s: expected %v, got %v", name, except, got)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if gotHealthz != testCases[i].expHealthz {
 | 
			
		||||
			errFn(testCases[i].name, testCases[i].expHealthz, gotHealthz)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if gotMetrics != testCases[i].expMetrics {
 | 
			
		||||
			errFn(testCases[i].name, testCases[i].expMetrics, gotMetrics)
 | 
			
		||||
		}
 | 
			
		||||
	for _, tc := range testCases {
 | 
			
		||||
		t.Run(tc.name, func(t *testing.T) {
 | 
			
		||||
			gotHealthz := addressFromDeprecatedFlags(tc.healthzBindAddress, tc.healthzPort)
 | 
			
		||||
			gotMetrics := addressFromDeprecatedFlags(tc.metricsBindAddress, tc.metricsPort)
 | 
			
		||||
 | 
			
		||||
			require.Equal(t, tc.expHealthz, gotHealthz)
 | 
			
		||||
			require.Equal(t, tc.expMetrics, gotMetrics)
 | 
			
		||||
		})
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user