mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
Svc REST: Add a test for PatchAllocatedValues
This commit is contained in:
parent
30bd8198e3
commit
446a2c730d
@ -20,17 +20,18 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/google/go-cmp/cmp"
|
||||
"k8s.io/apimachinery/pkg/api/errors"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/apimachinery/pkg/util/diff"
|
||||
"k8s.io/apimachinery/pkg/util/intstr"
|
||||
genericapirequest "k8s.io/apiserver/pkg/endpoints/request"
|
||||
"k8s.io/apiserver/pkg/registry/rest"
|
||||
api "k8s.io/kubernetes/pkg/apis/core"
|
||||
_ "k8s.io/kubernetes/pkg/apis/core/install"
|
||||
|
||||
utilfeature "k8s.io/apiserver/pkg/util/feature"
|
||||
featuregatetesting "k8s.io/component-base/featuregate/testing"
|
||||
svctest "k8s.io/kubernetes/pkg/api/service/testing"
|
||||
api "k8s.io/kubernetes/pkg/apis/core"
|
||||
_ "k8s.io/kubernetes/pkg/apis/core/install"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
netutils "k8s.io/utils/net"
|
||||
utilpointer "k8s.io/utils/pointer"
|
||||
@ -1037,3 +1038,111 @@ func TestTrimFieldsForDualStackDowngrade(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestPatchAllocatedValues(t *testing.T) {
|
||||
testCases := []struct {
|
||||
name string
|
||||
before *api.Service
|
||||
update *api.Service
|
||||
expectSameClusterIPs bool
|
||||
expectSameNodePort bool
|
||||
expectSameHCNP bool
|
||||
}{{
|
||||
name: "all_patched",
|
||||
before: svctest.MakeService("foo",
|
||||
svctest.SetTypeLoadBalancer,
|
||||
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal),
|
||||
svctest.SetClusterIPs("10.0.0.93", "2000::76"),
|
||||
svctest.SetUniqueNodePorts,
|
||||
svctest.SetHealthCheckNodePort(31234)),
|
||||
update: svctest.MakeService("foo",
|
||||
svctest.SetTypeLoadBalancer,
|
||||
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)),
|
||||
expectSameClusterIPs: true,
|
||||
expectSameNodePort: true,
|
||||
expectSameHCNP: true,
|
||||
}, {
|
||||
name: "IPs_patched",
|
||||
before: svctest.MakeService("foo",
|
||||
svctest.SetTypeClusterIP,
|
||||
svctest.SetClusterIPs("10.0.0.93", "2000::76"),
|
||||
// these are not valid, but prove the test
|
||||
svctest.SetUniqueNodePorts,
|
||||
svctest.SetHealthCheckNodePort(31234)),
|
||||
update: svctest.MakeService("foo",
|
||||
svctest.SetTypeClusterIP),
|
||||
expectSameClusterIPs: true,
|
||||
}, {
|
||||
name: "NPs_patched",
|
||||
before: svctest.MakeService("foo",
|
||||
svctest.SetTypeNodePort,
|
||||
svctest.SetClusterIPs("10.0.0.93", "2000::76"),
|
||||
svctest.SetUniqueNodePorts,
|
||||
// this is not valid, but proves the test
|
||||
svctest.SetHealthCheckNodePort(31234)),
|
||||
update: svctest.MakeService("foo",
|
||||
svctest.SetTypeNodePort,
|
||||
svctest.SetClusterIPs("10.0.0.93", "2000::76")),
|
||||
expectSameClusterIPs: true,
|
||||
expectSameNodePort: true,
|
||||
}, {
|
||||
name: "HCNP_patched",
|
||||
before: svctest.MakeService("foo",
|
||||
svctest.SetTypeLoadBalancer,
|
||||
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal),
|
||||
svctest.SetClusterIPs("10.0.0.93", "2000::76"),
|
||||
svctest.SetUniqueNodePorts,
|
||||
svctest.SetHealthCheckNodePort(31234)),
|
||||
update: svctest.MakeService("foo",
|
||||
svctest.SetTypeLoadBalancer,
|
||||
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal),
|
||||
svctest.SetClusterIPs("10.0.0.93", "2000::76"),
|
||||
svctest.SetUniqueNodePorts),
|
||||
expectSameClusterIPs: true,
|
||||
expectSameNodePort: true,
|
||||
expectSameHCNP: true,
|
||||
}, {
|
||||
name: "nothing_patched",
|
||||
before: svctest.MakeService("foo",
|
||||
svctest.SetTypeExternalName,
|
||||
// these are not valid, but prove the test
|
||||
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal),
|
||||
svctest.SetClusterIPs("10.0.0.93", "2000::76"),
|
||||
svctest.SetUniqueNodePorts,
|
||||
svctest.SetHealthCheckNodePort(31234)),
|
||||
update: svctest.MakeService("foo",
|
||||
svctest.SetTypeExternalName,
|
||||
svctest.SetExternalTrafficPolicy(api.ServiceExternalTrafficPolicyTypeLocal)),
|
||||
}}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.name, func(t *testing.T) {
|
||||
update := tc.update.DeepCopy()
|
||||
PatchAllocatedValues(update, tc.before)
|
||||
|
||||
if b, u := tc.before.Spec.ClusterIP, update.Spec.ClusterIP; tc.expectSameClusterIPs && b != u {
|
||||
t.Errorf("expected clusterIP to be patched: %q != %q", b, u)
|
||||
} else if !tc.expectSameClusterIPs && b == u {
|
||||
t.Errorf("expected clusterIP to not be patched: %q == %q", b, u)
|
||||
}
|
||||
|
||||
if b, u := tc.before.Spec.ClusterIPs, update.Spec.ClusterIPs; tc.expectSameClusterIPs && !cmp.Equal(b, u) {
|
||||
t.Errorf("expected clusterIPs to be patched: %q != %q", b, u)
|
||||
} else if !tc.expectSameClusterIPs && cmp.Equal(b, u) {
|
||||
t.Errorf("expected clusterIPs to not be patched: %q == %q", b, u)
|
||||
}
|
||||
|
||||
if b, u := tc.before.Spec.Ports[0].NodePort, update.Spec.Ports[0].NodePort; tc.expectSameNodePort && b != u {
|
||||
t.Errorf("expected nodePort to be patched: %d != %d", b, u)
|
||||
} else if !tc.expectSameNodePort && b == u {
|
||||
t.Errorf("expected nodePort to not be patched: %d == %d", b, u)
|
||||
}
|
||||
|
||||
if b, u := tc.before.Spec.HealthCheckNodePort, update.Spec.HealthCheckNodePort; tc.expectSameHCNP && b != u {
|
||||
t.Errorf("expected healthCheckNodePort to be patched: %d != %d", b, u)
|
||||
} else if !tc.expectSameHCNP && b == u {
|
||||
t.Errorf("expected healthCheckNodePort to not be patched: %d == %d", b, u)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user