mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-04 15:05:20 +00:00
Refactor tests to match new versioned code structure
This commit is contained in:
@@ -23,13 +23,13 @@ import (
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/resource"
|
||||
versioned "k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/intstr"
|
||||
)
|
||||
|
||||
func roundTrip(t *testing.T, obj runtime.Object) runtime.Object {
|
||||
codec := api.Codecs.LegacyCodec(metav1.SchemeGroupVersion)
|
||||
codec := api.Codecs.LegacyCodec(v1.SchemeGroupVersion)
|
||||
data, err := runtime.Encode(codec, obj)
|
||||
if err != nil {
|
||||
t.Errorf("%v\n %#v", err, obj)
|
||||
@@ -51,15 +51,15 @@ func roundTrip(t *testing.T, obj runtime.Object) runtime.Object {
|
||||
|
||||
func TestSetDefaultReplicationController(t *testing.T) {
|
||||
tests := []struct {
|
||||
rc *metav1.ReplicationController
|
||||
rc *v1.ReplicationController
|
||||
expectLabels bool
|
||||
expectSelector bool
|
||||
}{
|
||||
{
|
||||
rc: &metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
rc: &v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -71,15 +71,15 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||
expectSelector: true,
|
||||
},
|
||||
{
|
||||
rc: &metav1.ReplicationController{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
rc: &v1.ReplicationController{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"bar": "foo",
|
||||
},
|
||||
},
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -91,18 +91,18 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||
expectSelector: true,
|
||||
},
|
||||
{
|
||||
rc: &metav1.ReplicationController{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
rc: &v1.ReplicationController{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"bar": "foo",
|
||||
},
|
||||
},
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Selector: map[string]string{
|
||||
"some": "other",
|
||||
},
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -114,13 +114,13 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||
expectSelector: false,
|
||||
},
|
||||
{
|
||||
rc: &metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
rc: &v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Selector: map[string]string{
|
||||
"some": "other",
|
||||
},
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -136,7 +136,7 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
rc := test.rc
|
||||
obj2 := roundTrip(t, runtime.Object(rc))
|
||||
rc2, ok := obj2.(*metav1.ReplicationController)
|
||||
rc2, ok := obj2.(*v1.ReplicationController)
|
||||
if !ok {
|
||||
t.Errorf("unexpected object: %v", rc2)
|
||||
t.FailNow()
|
||||
@@ -166,14 +166,14 @@ func newInt(val int32) *int32 {
|
||||
|
||||
func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||
tests := []struct {
|
||||
rc metav1.ReplicationController
|
||||
rc v1.ReplicationController
|
||||
expectReplicas int32
|
||||
}{
|
||||
{
|
||||
rc: metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
rc: v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -184,11 +184,11 @@ func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||
expectReplicas: 1,
|
||||
},
|
||||
{
|
||||
rc: metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
rc: v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Replicas: newInt(0),
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -199,11 +199,11 @@ func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||
expectReplicas: 0,
|
||||
},
|
||||
{
|
||||
rc: metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
rc: v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Replicas: newInt(3),
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -218,7 +218,7 @@ func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||
for _, test := range tests {
|
||||
rc := &test.rc
|
||||
obj2 := roundTrip(t, runtime.Object(rc))
|
||||
rc2, ok := obj2.(*metav1.ReplicationController)
|
||||
rc2, ok := obj2.(*v1.ReplicationController)
|
||||
if !ok {
|
||||
t.Errorf("unexpected object: %v", rc2)
|
||||
t.FailNow()
|
||||
@@ -247,14 +247,14 @@ func TestSetDefaultReplicationControllerImagePullPolicy(t *testing.T) {
|
||||
})
|
||||
|
||||
tests := []struct {
|
||||
rc metav1.ReplicationController
|
||||
expectPullPolicy metav1.PullPolicy
|
||||
rc v1.ReplicationController
|
||||
expectPullPolicy v1.PullPolicy
|
||||
}{
|
||||
{
|
||||
rc: metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
rc: v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Annotations: map[string]string{
|
||||
"pod.beta.kubernetes.io/init-containers": string(containersWithoutPullPolicy),
|
||||
},
|
||||
@@ -262,13 +262,13 @@ func TestSetDefaultReplicationControllerImagePullPolicy(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
expectPullPolicy: metav1.PullAlways,
|
||||
expectPullPolicy: v1.PullAlways,
|
||||
},
|
||||
{
|
||||
rc: metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
rc: v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Annotations: map[string]string{
|
||||
"pod.beta.kubernetes.io/init-containers": string(containersWithPullPolicy),
|
||||
},
|
||||
@@ -276,14 +276,14 @@ func TestSetDefaultReplicationControllerImagePullPolicy(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
expectPullPolicy: metav1.PullIfNotPresent,
|
||||
expectPullPolicy: v1.PullIfNotPresent,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
rc := &test.rc
|
||||
obj2 := roundTrip(t, runtime.Object(rc))
|
||||
rc2, ok := obj2.(*metav1.ReplicationController)
|
||||
rc2, ok := obj2.(*v1.ReplicationController)
|
||||
if !ok {
|
||||
t.Errorf("unexpected object: %v", rc2)
|
||||
t.FailNow()
|
||||
@@ -298,33 +298,33 @@ func TestSetDefaultReplicationControllerImagePullPolicy(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaultService(t *testing.T) {
|
||||
svc := &metav1.Service{}
|
||||
svc := &v1.Service{}
|
||||
obj2 := roundTrip(t, runtime.Object(svc))
|
||||
svc2 := obj2.(*metav1.Service)
|
||||
if svc2.Spec.SessionAffinity != metav1.ServiceAffinityNone {
|
||||
t.Errorf("Expected default session affinity type:%s, got: %s", metav1.ServiceAffinityNone, svc2.Spec.SessionAffinity)
|
||||
svc2 := obj2.(*v1.Service)
|
||||
if svc2.Spec.SessionAffinity != v1.ServiceAffinityNone {
|
||||
t.Errorf("Expected default session affinity type:%s, got: %s", v1.ServiceAffinityNone, svc2.Spec.SessionAffinity)
|
||||
}
|
||||
if svc2.Spec.Type != metav1.ServiceTypeClusterIP {
|
||||
t.Errorf("Expected default type:%s, got: %s", metav1.ServiceTypeClusterIP, svc2.Spec.Type)
|
||||
if svc2.Spec.Type != v1.ServiceTypeClusterIP {
|
||||
t.Errorf("Expected default type:%s, got: %s", v1.ServiceTypeClusterIP, svc2.Spec.Type)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultSecretVolumeSource(t *testing.T) {
|
||||
s := metav1.PodSpec{}
|
||||
s.Volumes = []metav1.Volume{
|
||||
s := v1.PodSpec{}
|
||||
s.Volumes = []v1.Volume{
|
||||
{
|
||||
VolumeSource: metav1.VolumeSource{
|
||||
Secret: &metav1.SecretVolumeSource{},
|
||||
VolumeSource: v1.VolumeSource{
|
||||
Secret: &v1.SecretVolumeSource{},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &metav1.Pod{
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
output := roundTrip(t, runtime.Object(pod))
|
||||
pod2 := output.(*metav1.Pod)
|
||||
pod2 := output.(*v1.Pod)
|
||||
defaultMode := pod2.Spec.Volumes[0].VolumeSource.Secret.DefaultMode
|
||||
expectedMode := metav1.SecretVolumeSourceDefaultMode
|
||||
expectedMode := v1.SecretVolumeSourceDefaultMode
|
||||
|
||||
if defaultMode == nil || *defaultMode != expectedMode {
|
||||
t.Errorf("Expected secret DefaultMode %v, got %v", expectedMode, defaultMode)
|
||||
@@ -332,21 +332,21 @@ func TestSetDefaultSecretVolumeSource(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaultConfigMapVolumeSource(t *testing.T) {
|
||||
s := metav1.PodSpec{}
|
||||
s.Volumes = []metav1.Volume{
|
||||
s := v1.PodSpec{}
|
||||
s.Volumes = []v1.Volume{
|
||||
{
|
||||
VolumeSource: metav1.VolumeSource{
|
||||
ConfigMap: &metav1.ConfigMapVolumeSource{},
|
||||
VolumeSource: v1.VolumeSource{
|
||||
ConfigMap: &v1.ConfigMapVolumeSource{},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &metav1.Pod{
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
output := roundTrip(t, runtime.Object(pod))
|
||||
pod2 := output.(*metav1.Pod)
|
||||
pod2 := output.(*v1.Pod)
|
||||
defaultMode := pod2.Spec.Volumes[0].VolumeSource.ConfigMap.DefaultMode
|
||||
expectedMode := metav1.ConfigMapVolumeSourceDefaultMode
|
||||
expectedMode := v1.ConfigMapVolumeSourceDefaultMode
|
||||
|
||||
if defaultMode == nil || *defaultMode != expectedMode {
|
||||
t.Errorf("Expected ConfigMap DefaultMode %v, got %v", expectedMode, defaultMode)
|
||||
@@ -354,21 +354,21 @@ func TestSetDefaultConfigMapVolumeSource(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaultDownwardAPIVolumeSource(t *testing.T) {
|
||||
s := metav1.PodSpec{}
|
||||
s.Volumes = []metav1.Volume{
|
||||
s := v1.PodSpec{}
|
||||
s.Volumes = []v1.Volume{
|
||||
{
|
||||
VolumeSource: metav1.VolumeSource{
|
||||
DownwardAPI: &metav1.DownwardAPIVolumeSource{},
|
||||
VolumeSource: v1.VolumeSource{
|
||||
DownwardAPI: &v1.DownwardAPIVolumeSource{},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &metav1.Pod{
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
output := roundTrip(t, runtime.Object(pod))
|
||||
pod2 := output.(*metav1.Pod)
|
||||
pod2 := output.(*v1.Pod)
|
||||
defaultMode := pod2.Spec.Volumes[0].VolumeSource.DownwardAPI.DefaultMode
|
||||
expectedMode := metav1.DownwardAPIVolumeSourceDefaultMode
|
||||
expectedMode := v1.DownwardAPIVolumeSourceDefaultMode
|
||||
|
||||
if defaultMode == nil || *defaultMode != expectedMode {
|
||||
t.Errorf("Expected DownwardAPI DefaultMode %v, got %v", expectedMode, defaultMode)
|
||||
@@ -376,50 +376,50 @@ func TestSetDefaultDownwardAPIVolumeSource(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaultSecret(t *testing.T) {
|
||||
s := &metav1.Secret{}
|
||||
s := &v1.Secret{}
|
||||
obj2 := roundTrip(t, runtime.Object(s))
|
||||
s2 := obj2.(*metav1.Secret)
|
||||
s2 := obj2.(*v1.Secret)
|
||||
|
||||
if s2.Type != metav1.SecretTypeOpaque {
|
||||
t.Errorf("Expected secret type %v, got %v", metav1.SecretTypeOpaque, s2.Type)
|
||||
if s2.Type != v1.SecretTypeOpaque {
|
||||
t.Errorf("Expected secret type %v, got %v", v1.SecretTypeOpaque, s2.Type)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultPersistentVolume(t *testing.T) {
|
||||
pv := &metav1.PersistentVolume{}
|
||||
pv := &v1.PersistentVolume{}
|
||||
obj2 := roundTrip(t, runtime.Object(pv))
|
||||
pv2 := obj2.(*metav1.PersistentVolume)
|
||||
pv2 := obj2.(*v1.PersistentVolume)
|
||||
|
||||
if pv2.Status.Phase != metav1.VolumePending {
|
||||
t.Errorf("Expected volume phase %v, got %v", metav1.VolumePending, pv2.Status.Phase)
|
||||
if pv2.Status.Phase != v1.VolumePending {
|
||||
t.Errorf("Expected volume phase %v, got %v", v1.VolumePending, pv2.Status.Phase)
|
||||
}
|
||||
if pv2.Spec.PersistentVolumeReclaimPolicy != metav1.PersistentVolumeReclaimRetain {
|
||||
t.Errorf("Expected pv reclaim policy %v, got %v", metav1.PersistentVolumeReclaimRetain, pv2.Spec.PersistentVolumeReclaimPolicy)
|
||||
if pv2.Spec.PersistentVolumeReclaimPolicy != v1.PersistentVolumeReclaimRetain {
|
||||
t.Errorf("Expected pv reclaim policy %v, got %v", v1.PersistentVolumeReclaimRetain, pv2.Spec.PersistentVolumeReclaimPolicy)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultPersistentVolumeClaim(t *testing.T) {
|
||||
pvc := &metav1.PersistentVolumeClaim{}
|
||||
pvc := &v1.PersistentVolumeClaim{}
|
||||
obj2 := roundTrip(t, runtime.Object(pvc))
|
||||
pvc2 := obj2.(*metav1.PersistentVolumeClaim)
|
||||
pvc2 := obj2.(*v1.PersistentVolumeClaim)
|
||||
|
||||
if pvc2.Status.Phase != metav1.ClaimPending {
|
||||
t.Errorf("Expected claim phase %v, got %v", metav1.ClaimPending, pvc2.Status.Phase)
|
||||
if pvc2.Status.Phase != v1.ClaimPending {
|
||||
t.Errorf("Expected claim phase %v, got %v", v1.ClaimPending, pvc2.Status.Phase)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaulEndpointsProtocol(t *testing.T) {
|
||||
in := &metav1.Endpoints{Subsets: []metav1.EndpointSubset{
|
||||
{Ports: []metav1.EndpointPort{{}, {Protocol: "UDP"}, {}}},
|
||||
in := &v1.Endpoints{Subsets: []v1.EndpointSubset{
|
||||
{Ports: []v1.EndpointPort{{}, {Protocol: "UDP"}, {}}},
|
||||
}}
|
||||
obj := roundTrip(t, runtime.Object(in))
|
||||
out := obj.(*metav1.Endpoints)
|
||||
out := obj.(*v1.Endpoints)
|
||||
|
||||
for i := range out.Subsets {
|
||||
for j := range out.Subsets[i].Ports {
|
||||
if in.Subsets[i].Ports[j].Protocol == "" {
|
||||
if out.Subsets[i].Ports[j].Protocol != metav1.ProtocolTCP {
|
||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolTCP, out.Subsets[i].Ports[j].Protocol)
|
||||
if out.Subsets[i].Ports[j].Protocol != v1.ProtocolTCP {
|
||||
t.Errorf("Expected protocol %s, got %s", v1.ProtocolTCP, out.Subsets[i].Ports[j].Protocol)
|
||||
}
|
||||
} else {
|
||||
if out.Subsets[i].Ports[j].Protocol != in.Subsets[i].Ports[j].Protocol {
|
||||
@@ -431,16 +431,16 @@ func TestSetDefaulEndpointsProtocol(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaulServiceTargetPort(t *testing.T) {
|
||||
in := &metav1.Service{Spec: metav1.ServiceSpec{Ports: []metav1.ServicePort{{Port: 1234}}}}
|
||||
in := &v1.Service{Spec: v1.ServiceSpec{Ports: []v1.ServicePort{{Port: 1234}}}}
|
||||
obj := roundTrip(t, runtime.Object(in))
|
||||
out := obj.(*metav1.Service)
|
||||
out := obj.(*v1.Service)
|
||||
if out.Spec.Ports[0].TargetPort != intstr.FromInt(1234) {
|
||||
t.Errorf("Expected TargetPort to be defaulted, got %v", out.Spec.Ports[0].TargetPort)
|
||||
}
|
||||
|
||||
in = &metav1.Service{Spec: metav1.ServiceSpec{Ports: []metav1.ServicePort{{Port: 1234, TargetPort: intstr.FromInt(5678)}}}}
|
||||
in = &v1.Service{Spec: v1.ServiceSpec{Ports: []v1.ServicePort{{Port: 1234, TargetPort: intstr.FromInt(5678)}}}}
|
||||
obj = roundTrip(t, runtime.Object(in))
|
||||
out = obj.(*metav1.Service)
|
||||
out = obj.(*v1.Service)
|
||||
if out.Spec.Ports[0].TargetPort != intstr.FromInt(5678) {
|
||||
t.Errorf("Expected TargetPort to be unchanged, got %v", out.Spec.Ports[0].TargetPort)
|
||||
}
|
||||
@@ -448,42 +448,42 @@ func TestSetDefaulServiceTargetPort(t *testing.T) {
|
||||
|
||||
func TestSetDefaultServicePort(t *testing.T) {
|
||||
// Unchanged if set.
|
||||
in := &metav1.Service{Spec: metav1.ServiceSpec{
|
||||
Ports: []metav1.ServicePort{
|
||||
in := &v1.Service{Spec: v1.ServiceSpec{
|
||||
Ports: []v1.ServicePort{
|
||||
{Protocol: "UDP", Port: 9376, TargetPort: intstr.FromString("p")},
|
||||
{Protocol: "UDP", Port: 8675, TargetPort: intstr.FromInt(309)},
|
||||
},
|
||||
}}
|
||||
out := roundTrip(t, runtime.Object(in)).(*metav1.Service)
|
||||
if out.Spec.Ports[0].Protocol != metav1.ProtocolUDP {
|
||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolUDP, out.Spec.Ports[0].Protocol)
|
||||
out := roundTrip(t, runtime.Object(in)).(*v1.Service)
|
||||
if out.Spec.Ports[0].Protocol != v1.ProtocolUDP {
|
||||
t.Errorf("Expected protocol %s, got %s", v1.ProtocolUDP, out.Spec.Ports[0].Protocol)
|
||||
}
|
||||
if out.Spec.Ports[0].TargetPort != intstr.FromString("p") {
|
||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[0].Port, out.Spec.Ports[0].TargetPort)
|
||||
}
|
||||
if out.Spec.Ports[1].Protocol != metav1.ProtocolUDP {
|
||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolUDP, out.Spec.Ports[1].Protocol)
|
||||
if out.Spec.Ports[1].Protocol != v1.ProtocolUDP {
|
||||
t.Errorf("Expected protocol %s, got %s", v1.ProtocolUDP, out.Spec.Ports[1].Protocol)
|
||||
}
|
||||
if out.Spec.Ports[1].TargetPort != intstr.FromInt(309) {
|
||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[1].Port, out.Spec.Ports[1].TargetPort)
|
||||
}
|
||||
|
||||
// Defaulted.
|
||||
in = &metav1.Service{Spec: metav1.ServiceSpec{
|
||||
Ports: []metav1.ServicePort{
|
||||
in = &v1.Service{Spec: v1.ServiceSpec{
|
||||
Ports: []v1.ServicePort{
|
||||
{Protocol: "", Port: 9376, TargetPort: intstr.FromString("")},
|
||||
{Protocol: "", Port: 8675, TargetPort: intstr.FromInt(0)},
|
||||
},
|
||||
}}
|
||||
out = roundTrip(t, runtime.Object(in)).(*metav1.Service)
|
||||
if out.Spec.Ports[0].Protocol != metav1.ProtocolTCP {
|
||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolTCP, out.Spec.Ports[0].Protocol)
|
||||
out = roundTrip(t, runtime.Object(in)).(*v1.Service)
|
||||
if out.Spec.Ports[0].Protocol != v1.ProtocolTCP {
|
||||
t.Errorf("Expected protocol %s, got %s", v1.ProtocolTCP, out.Spec.Ports[0].Protocol)
|
||||
}
|
||||
if out.Spec.Ports[0].TargetPort != intstr.FromInt(int(in.Spec.Ports[0].Port)) {
|
||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[0].Port, out.Spec.Ports[0].TargetPort)
|
||||
}
|
||||
if out.Spec.Ports[1].Protocol != metav1.ProtocolTCP {
|
||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolTCP, out.Spec.Ports[1].Protocol)
|
||||
if out.Spec.Ports[1].Protocol != v1.ProtocolTCP {
|
||||
t.Errorf("Expected protocol %s, got %s", v1.ProtocolTCP, out.Spec.Ports[1].Protocol)
|
||||
}
|
||||
if out.Spec.Ports[1].TargetPort != intstr.FromInt(int(in.Spec.Ports[1].Port)) {
|
||||
t.Errorf("Expected port %v, got %v", in.Spec.Ports[1].Port, out.Spec.Ports[1].TargetPort)
|
||||
@@ -491,33 +491,33 @@ func TestSetDefaultServicePort(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaultNamespace(t *testing.T) {
|
||||
s := &metav1.Namespace{}
|
||||
s := &v1.Namespace{}
|
||||
obj2 := roundTrip(t, runtime.Object(s))
|
||||
s2 := obj2.(*metav1.Namespace)
|
||||
s2 := obj2.(*v1.Namespace)
|
||||
|
||||
if s2.Status.Phase != metav1.NamespaceActive {
|
||||
t.Errorf("Expected phase %v, got %v", metav1.NamespaceActive, s2.Status.Phase)
|
||||
if s2.Status.Phase != v1.NamespaceActive {
|
||||
t.Errorf("Expected phase %v, got %v", v1.NamespaceActive, s2.Status.Phase)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultPodSpecHostNetwork(t *testing.T) {
|
||||
portNum := int32(8080)
|
||||
s := metav1.PodSpec{}
|
||||
s := v1.PodSpec{}
|
||||
s.HostNetwork = true
|
||||
s.Containers = []metav1.Container{
|
||||
s.Containers = []v1.Container{
|
||||
{
|
||||
Ports: []metav1.ContainerPort{
|
||||
Ports: []v1.ContainerPort{
|
||||
{
|
||||
ContainerPort: portNum,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &metav1.Pod{
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
obj2 := roundTrip(t, runtime.Object(pod))
|
||||
pod2 := obj2.(*metav1.Pod)
|
||||
pod2 := obj2.(*v1.Pod)
|
||||
s2 := pod2.Spec
|
||||
|
||||
hostPortNum := s2.Containers[0].Ports[0].HostPort
|
||||
@@ -528,10 +528,10 @@ func TestSetDefaultPodSpecHostNetwork(t *testing.T) {
|
||||
|
||||
func TestSetDefaultNodeExternalID(t *testing.T) {
|
||||
name := "node0"
|
||||
n := &metav1.Node{}
|
||||
n := &v1.Node{}
|
||||
n.Name = name
|
||||
obj2 := roundTrip(t, runtime.Object(n))
|
||||
n2 := obj2.(*metav1.Node)
|
||||
n2 := obj2.(*v1.Node)
|
||||
if n2.Spec.ExternalID != name {
|
||||
t.Errorf("Expected default External ID: %s, got: %s", name, n2.Spec.ExternalID)
|
||||
}
|
||||
@@ -541,18 +541,18 @@ func TestSetDefaultNodeExternalID(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||
capacity := metav1.ResourceList{
|
||||
metav1.ResourceCPU: resource.MustParse("1000m"),
|
||||
metav1.ResourceMemory: resource.MustParse("10G"),
|
||||
capacity := v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("1000m"),
|
||||
v1.ResourceMemory: resource.MustParse("10G"),
|
||||
}
|
||||
allocatable := metav1.ResourceList{
|
||||
metav1.ResourceCPU: resource.MustParse("500m"),
|
||||
metav1.ResourceMemory: resource.MustParse("5G"),
|
||||
allocatable := v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("500m"),
|
||||
v1.ResourceMemory: resource.MustParse("5G"),
|
||||
}
|
||||
tests := []struct {
|
||||
capacity metav1.ResourceList
|
||||
allocatable metav1.ResourceList
|
||||
expectedAllocatable metav1.ResourceList
|
||||
capacity v1.ResourceList
|
||||
allocatable v1.ResourceList
|
||||
expectedAllocatable v1.ResourceList
|
||||
}{{ // Everything set, no defaulting.
|
||||
capacity: capacity,
|
||||
allocatable: allocatable,
|
||||
@@ -571,18 +571,18 @@ func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||
expectedAllocatable: nil,
|
||||
}}
|
||||
|
||||
copyResourceList := func(rl metav1.ResourceList) metav1.ResourceList {
|
||||
copyResourceList := func(rl v1.ResourceList) v1.ResourceList {
|
||||
if rl == nil {
|
||||
return nil
|
||||
}
|
||||
copy := make(metav1.ResourceList, len(rl))
|
||||
copy := make(v1.ResourceList, len(rl))
|
||||
for k, v := range rl {
|
||||
copy[k] = *v.Copy()
|
||||
}
|
||||
return copy
|
||||
}
|
||||
|
||||
resourceListsEqual := func(a metav1.ResourceList, b metav1.ResourceList) bool {
|
||||
resourceListsEqual := func(a v1.ResourceList, b v1.ResourceList) bool {
|
||||
if len(a) != len(b) {
|
||||
return false
|
||||
}
|
||||
@@ -599,13 +599,13 @@ func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||
}
|
||||
|
||||
for i, testcase := range tests {
|
||||
node := metav1.Node{
|
||||
Status: metav1.NodeStatus{
|
||||
node := v1.Node{
|
||||
Status: v1.NodeStatus{
|
||||
Capacity: copyResourceList(testcase.capacity),
|
||||
Allocatable: copyResourceList(testcase.allocatable),
|
||||
},
|
||||
}
|
||||
node2 := roundTrip(t, runtime.Object(&node)).(*metav1.Node)
|
||||
node2 := roundTrip(t, runtime.Object(&node)).(*v1.Node)
|
||||
actual := node2.Status.Allocatable
|
||||
expected := testcase.expectedAllocatable
|
||||
if !resourceListsEqual(expected, actual) {
|
||||
@@ -615,24 +615,24 @@ func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetDefaultObjectFieldSelectorAPIVersion(t *testing.T) {
|
||||
s := metav1.PodSpec{
|
||||
Containers: []metav1.Container{
|
||||
s := v1.PodSpec{
|
||||
Containers: []v1.Container{
|
||||
{
|
||||
Env: []metav1.EnvVar{
|
||||
Env: []v1.EnvVar{
|
||||
{
|
||||
ValueFrom: &metav1.EnvVarSource{
|
||||
FieldRef: &metav1.ObjectFieldSelector{},
|
||||
ValueFrom: &v1.EnvVarSource{
|
||||
FieldRef: &v1.ObjectFieldSelector{},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &metav1.Pod{
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
obj2 := roundTrip(t, runtime.Object(pod))
|
||||
pod2 := obj2.(*metav1.Pod)
|
||||
pod2 := obj2.(*v1.Pod)
|
||||
s2 := pod2.Spec
|
||||
|
||||
apiVersion := s2.Containers[0].Env[0].ValueFrom.FieldRef.APIVersion
|
||||
@@ -643,88 +643,88 @@ func TestSetDefaultObjectFieldSelectorAPIVersion(t *testing.T) {
|
||||
|
||||
func TestSetMinimumScalePod(t *testing.T) {
|
||||
// verify we default if limits are specified (and that request=0 is preserved)
|
||||
s := metav1.PodSpec{}
|
||||
s.Containers = []metav1.Container{
|
||||
s := v1.PodSpec{}
|
||||
s.Containers = []v1.Container{
|
||||
{
|
||||
Resources: metav1.ResourceRequirements{
|
||||
Requests: metav1.ResourceList{
|
||||
metav1.ResourceMemory: resource.MustParse("1n"),
|
||||
Resources: v1.ResourceRequirements{
|
||||
Requests: v1.ResourceList{
|
||||
v1.ResourceMemory: resource.MustParse("1n"),
|
||||
},
|
||||
Limits: metav1.ResourceList{
|
||||
metav1.ResourceCPU: resource.MustParse("2n"),
|
||||
Limits: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("2n"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &metav1.Pod{
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
metav1.SetObjectDefaults_Pod(pod)
|
||||
v1.SetObjectDefaults_Pod(pod)
|
||||
|
||||
if expect := resource.MustParse("1m"); expect.Cmp(pod.Spec.Containers[0].Resources.Requests[metav1.ResourceMemory]) != 0 {
|
||||
if expect := resource.MustParse("1m"); expect.Cmp(pod.Spec.Containers[0].Resources.Requests[v1.ResourceMemory]) != 0 {
|
||||
t.Errorf("did not round resources: %#v", pod.Spec.Containers[0].Resources)
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultRequestsPod(t *testing.T) {
|
||||
// verify we default if limits are specified (and that request=0 is preserved)
|
||||
s := metav1.PodSpec{}
|
||||
s.Containers = []metav1.Container{
|
||||
s := v1.PodSpec{}
|
||||
s.Containers = []v1.Container{
|
||||
{
|
||||
Resources: metav1.ResourceRequirements{
|
||||
Requests: metav1.ResourceList{
|
||||
metav1.ResourceMemory: resource.MustParse("0"),
|
||||
Resources: v1.ResourceRequirements{
|
||||
Requests: v1.ResourceList{
|
||||
v1.ResourceMemory: resource.MustParse("0"),
|
||||
},
|
||||
Limits: metav1.ResourceList{
|
||||
metav1.ResourceCPU: resource.MustParse("100m"),
|
||||
metav1.ResourceMemory: resource.MustParse("1Gi"),
|
||||
Limits: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("100m"),
|
||||
v1.ResourceMemory: resource.MustParse("1Gi"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
pod := &metav1.Pod{
|
||||
pod := &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
output := roundTrip(t, runtime.Object(pod))
|
||||
pod2 := output.(*metav1.Pod)
|
||||
pod2 := output.(*v1.Pod)
|
||||
defaultRequest := pod2.Spec.Containers[0].Resources.Requests
|
||||
if requestValue := defaultRequest[metav1.ResourceCPU]; requestValue.String() != "100m" {
|
||||
if requestValue := defaultRequest[v1.ResourceCPU]; requestValue.String() != "100m" {
|
||||
t.Errorf("Expected request cpu: %s, got: %s", "100m", requestValue.String())
|
||||
}
|
||||
if requestValue := defaultRequest[metav1.ResourceMemory]; requestValue.String() != "0" {
|
||||
if requestValue := defaultRequest[v1.ResourceMemory]; requestValue.String() != "0" {
|
||||
t.Errorf("Expected request memory: %s, got: %s", "0", requestValue.String())
|
||||
}
|
||||
|
||||
// verify we do nothing if no limits are specified
|
||||
s = metav1.PodSpec{}
|
||||
s.Containers = []metav1.Container{{}}
|
||||
pod = &metav1.Pod{
|
||||
s = v1.PodSpec{}
|
||||
s.Containers = []v1.Container{{}}
|
||||
pod = &v1.Pod{
|
||||
Spec: s,
|
||||
}
|
||||
output = roundTrip(t, runtime.Object(pod))
|
||||
pod2 = output.(*metav1.Pod)
|
||||
pod2 = output.(*v1.Pod)
|
||||
defaultRequest = pod2.Spec.Containers[0].Resources.Requests
|
||||
if requestValue := defaultRequest[metav1.ResourceCPU]; requestValue.String() != "0" {
|
||||
if requestValue := defaultRequest[v1.ResourceCPU]; requestValue.String() != "0" {
|
||||
t.Errorf("Expected 0 request value, got: %s", requestValue.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestDefaultRequestIsNotSetForReplicationController(t *testing.T) {
|
||||
s := metav1.PodSpec{}
|
||||
s.Containers = []metav1.Container{
|
||||
s := v1.PodSpec{}
|
||||
s.Containers = []v1.Container{
|
||||
{
|
||||
Resources: metav1.ResourceRequirements{
|
||||
Limits: metav1.ResourceList{
|
||||
metav1.ResourceCPU: resource.MustParse("100m"),
|
||||
Resources: v1.ResourceRequirements{
|
||||
Limits: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("100m"),
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
rc := &metav1.ReplicationController{
|
||||
Spec: metav1.ReplicationControllerSpec{
|
||||
rc := &v1.ReplicationController{
|
||||
Spec: v1.ReplicationControllerSpec{
|
||||
Replicas: newInt(3),
|
||||
Template: &metav1.PodTemplateSpec{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Template: &v1.PodTemplateSpec{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Labels: map[string]string{
|
||||
"foo": "bar",
|
||||
},
|
||||
@@ -734,59 +734,59 @@ func TestDefaultRequestIsNotSetForReplicationController(t *testing.T) {
|
||||
},
|
||||
}
|
||||
output := roundTrip(t, runtime.Object(rc))
|
||||
rc2 := output.(*metav1.ReplicationController)
|
||||
rc2 := output.(*v1.ReplicationController)
|
||||
defaultRequest := rc2.Spec.Template.Spec.Containers[0].Resources.Requests
|
||||
requestValue := defaultRequest[metav1.ResourceCPU]
|
||||
requestValue := defaultRequest[v1.ResourceCPU]
|
||||
if requestValue.String() != "0" {
|
||||
t.Errorf("Expected 0 request value, got: %s", requestValue.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultLimitRangeItem(t *testing.T) {
|
||||
limitRange := &metav1.LimitRange{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
limitRange := &v1.LimitRange{
|
||||
ObjectMeta: v1.ObjectMeta{
|
||||
Name: "test-defaults",
|
||||
},
|
||||
Spec: metav1.LimitRangeSpec{
|
||||
Limits: []metav1.LimitRangeItem{{
|
||||
Type: metav1.LimitTypeContainer,
|
||||
Max: metav1.ResourceList{
|
||||
metav1.ResourceCPU: resource.MustParse("100m"),
|
||||
Spec: v1.LimitRangeSpec{
|
||||
Limits: []v1.LimitRangeItem{{
|
||||
Type: v1.LimitTypeContainer,
|
||||
Max: v1.ResourceList{
|
||||
v1.ResourceCPU: resource.MustParse("100m"),
|
||||
},
|
||||
Min: metav1.ResourceList{
|
||||
metav1.ResourceMemory: resource.MustParse("100Mi"),
|
||||
Min: v1.ResourceList{
|
||||
v1.ResourceMemory: resource.MustParse("100Mi"),
|
||||
},
|
||||
Default: metav1.ResourceList{},
|
||||
DefaultRequest: metav1.ResourceList{},
|
||||
Default: v1.ResourceList{},
|
||||
DefaultRequest: v1.ResourceList{},
|
||||
}},
|
||||
},
|
||||
}
|
||||
|
||||
output := roundTrip(t, runtime.Object(limitRange))
|
||||
limitRange2 := output.(*metav1.LimitRange)
|
||||
limitRange2 := output.(*v1.LimitRange)
|
||||
defaultLimit := limitRange2.Spec.Limits[0].Default
|
||||
defaultRequest := limitRange2.Spec.Limits[0].DefaultRequest
|
||||
|
||||
// verify that default cpu was set to the max
|
||||
defaultValue := defaultLimit[metav1.ResourceCPU]
|
||||
defaultValue := defaultLimit[v1.ResourceCPU]
|
||||
if defaultValue.String() != "100m" {
|
||||
t.Errorf("Expected default cpu: %s, got: %s", "100m", defaultValue.String())
|
||||
}
|
||||
// verify that default request was set to the limit
|
||||
requestValue := defaultRequest[metav1.ResourceCPU]
|
||||
requestValue := defaultRequest[v1.ResourceCPU]
|
||||
if requestValue.String() != "100m" {
|
||||
t.Errorf("Expected request cpu: %s, got: %s", "100m", requestValue.String())
|
||||
}
|
||||
// verify that if a min is provided, it will be the default if no limit is specified
|
||||
requestMinValue := defaultRequest[metav1.ResourceMemory]
|
||||
requestMinValue := defaultRequest[v1.ResourceMemory]
|
||||
if requestMinValue.String() != "100Mi" {
|
||||
t.Errorf("Expected request memory: %s, got: %s", "100Mi", requestMinValue.String())
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetDefaultProbe(t *testing.T) {
|
||||
originalProbe := metav1.Probe{}
|
||||
expectedProbe := metav1.Probe{
|
||||
originalProbe := v1.Probe{}
|
||||
expectedProbe := v1.Probe{
|
||||
InitialDelaySeconds: 0,
|
||||
TimeoutSeconds: 1,
|
||||
PeriodSeconds: 10,
|
||||
@@ -794,13 +794,13 @@ func TestSetDefaultProbe(t *testing.T) {
|
||||
FailureThreshold: 3,
|
||||
}
|
||||
|
||||
pod := &metav1.Pod{
|
||||
Spec: metav1.PodSpec{
|
||||
Containers: []metav1.Container{{LivenessProbe: &originalProbe}},
|
||||
pod := &v1.Pod{
|
||||
Spec: v1.PodSpec{
|
||||
Containers: []v1.Container{{LivenessProbe: &originalProbe}},
|
||||
},
|
||||
}
|
||||
|
||||
output := roundTrip(t, runtime.Object(pod)).(*metav1.Pod)
|
||||
output := roundTrip(t, runtime.Object(pod)).(*v1.Pod)
|
||||
actualProbe := *output.Spec.Containers[0].LivenessProbe
|
||||
if actualProbe != expectedProbe {
|
||||
t.Errorf("Expected probe: %+v\ngot: %+v\n", expectedProbe, actualProbe)
|
||||
|
||||
Reference in New Issue
Block a user