mirror of https://github.com/k3s-io/k3s
Refactor tests to match new versioned code structure
parent
e5019de260
commit
c5d755dbec
|
@ -156,6 +156,7 @@ pkg/client/listers/storage/internalversion
|
||||||
pkg/client/listers/storage/v1beta1
|
pkg/client/listers/storage/v1beta1
|
||||||
pkg/client/metrics
|
pkg/client/metrics
|
||||||
pkg/client/metrics/prometheus
|
pkg/client/metrics/prometheus
|
||||||
|
pkg/client/restclient/watch
|
||||||
pkg/client/testing/core
|
pkg/client/testing/core
|
||||||
pkg/client/typed/discovery
|
pkg/client/typed/discovery
|
||||||
pkg/client/unversioned
|
pkg/client/unversioned
|
||||||
|
@ -281,6 +282,7 @@ pkg/volume/util/nestedpendingoperations
|
||||||
pkg/volume/util/operationexecutor
|
pkg/volume/util/operationexecutor
|
||||||
pkg/volume/util/types
|
pkg/volume/util/types
|
||||||
pkg/volume/util/volumehelper
|
pkg/volume/util/volumehelper
|
||||||
|
pkg/watch
|
||||||
pkg/watch/json
|
pkg/watch/json
|
||||||
pkg/watch/versioned
|
pkg/watch/versioned
|
||||||
plugin/cmd/kube-scheduler
|
plugin/cmd/kube-scheduler
|
||||||
|
|
|
@ -24,7 +24,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"k8s.io/kubernetes/pkg/api/resource"
|
||||||
versioned "k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/diff"
|
"k8s.io/kubernetes/pkg/util/diff"
|
||||||
|
@ -36,7 +36,7 @@ func TestPodLogOptions(t *testing.T) {
|
||||||
tailLines := int64(2)
|
tailLines := int64(2)
|
||||||
limitBytes := int64(3)
|
limitBytes := int64(3)
|
||||||
|
|
||||||
versionedLogOptions := &metav1.PodLogOptions{
|
versionedLogOptions := &v1.PodLogOptions{
|
||||||
Container: "mycontainer",
|
Container: "mycontainer",
|
||||||
Follow: true,
|
Follow: true,
|
||||||
Previous: true,
|
Previous: true,
|
||||||
|
@ -71,7 +71,7 @@ func TestPodLogOptions(t *testing.T) {
|
||||||
|
|
||||||
// unversioned -> query params
|
// unversioned -> query params
|
||||||
{
|
{
|
||||||
actualParameters, err := codec.EncodeParameters(unversionedLogOptions, metav1.SchemeGroupVersion)
|
actualParameters, err := codec.EncodeParameters(unversionedLogOptions, v1.SchemeGroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@ func TestPodLogOptions(t *testing.T) {
|
||||||
|
|
||||||
// versioned -> query params
|
// versioned -> query params
|
||||||
{
|
{
|
||||||
actualParameters, err := codec.EncodeParameters(versionedLogOptions, metav1.SchemeGroupVersion)
|
actualParameters, err := codec.EncodeParameters(versionedLogOptions, v1.SchemeGroupVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -93,8 +93,8 @@ func TestPodLogOptions(t *testing.T) {
|
||||||
|
|
||||||
// query params -> versioned
|
// query params -> versioned
|
||||||
{
|
{
|
||||||
convertedLogOptions := &metav1.PodLogOptions{}
|
convertedLogOptions := &v1.PodLogOptions{}
|
||||||
err := codec.DecodeParameters(expectedParameters, metav1.SchemeGroupVersion, convertedLogOptions)
|
err := codec.DecodeParameters(expectedParameters, v1.SchemeGroupVersion, convertedLogOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -106,7 +106,7 @@ func TestPodLogOptions(t *testing.T) {
|
||||||
// query params -> unversioned
|
// query params -> unversioned
|
||||||
{
|
{
|
||||||
convertedLogOptions := &api.PodLogOptions{}
|
convertedLogOptions := &api.PodLogOptions{}
|
||||||
err := codec.DecodeParameters(expectedParameters, metav1.SchemeGroupVersion, convertedLogOptions)
|
err := codec.DecodeParameters(expectedParameters, v1.SchemeGroupVersion, convertedLogOptions)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -126,7 +126,7 @@ func TestPodSpecConversion(t *testing.T) {
|
||||||
i := &api.PodSpec{
|
i := &api.PodSpec{
|
||||||
ServiceAccountName: name,
|
ServiceAccountName: name,
|
||||||
}
|
}
|
||||||
v := metav1.PodSpec{}
|
v := v1.PodSpec{}
|
||||||
if err := api.Scheme.Convert(i, &v, nil); err != nil {
|
if err := api.Scheme.Convert(i, &v, nil); err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ func TestPodSpecConversion(t *testing.T) {
|
||||||
// Test v1 -> internal. Either DeprecatedServiceAccount, ServiceAccountName,
|
// Test v1 -> internal. Either DeprecatedServiceAccount, ServiceAccountName,
|
||||||
// or both should translate to ServiceAccountName. ServiceAccountName wins
|
// or both should translate to ServiceAccountName. ServiceAccountName wins
|
||||||
// if both are set.
|
// if both are set.
|
||||||
testCases := []*metav1.PodSpec{
|
testCases := []*v1.PodSpec{
|
||||||
// New
|
// New
|
||||||
{ServiceAccountName: name},
|
{ServiceAccountName: name},
|
||||||
// Alias
|
// Alias
|
||||||
|
@ -167,14 +167,14 @@ func TestResourceListConversion(t *testing.T) {
|
||||||
bigMilliQuantity.Add(resource.MustParse("12345m"))
|
bigMilliQuantity.Add(resource.MustParse("12345m"))
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
input metav1.ResourceList
|
input v1.ResourceList
|
||||||
expected api.ResourceList
|
expected api.ResourceList
|
||||||
}{
|
}{
|
||||||
{ // No changes necessary.
|
{ // No changes necessary.
|
||||||
input: metav1.ResourceList{
|
input: v1.ResourceList{
|
||||||
metav1.ResourceMemory: resource.MustParse("30M"),
|
v1.ResourceMemory: resource.MustParse("30M"),
|
||||||
metav1.ResourceCPU: resource.MustParse("100m"),
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
metav1.ResourceStorage: resource.MustParse("1G"),
|
v1.ResourceStorage: resource.MustParse("1G"),
|
||||||
},
|
},
|
||||||
expected: api.ResourceList{
|
expected: api.ResourceList{
|
||||||
api.ResourceMemory: resource.MustParse("30M"),
|
api.ResourceMemory: resource.MustParse("30M"),
|
||||||
|
@ -183,9 +183,9 @@ func TestResourceListConversion(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ // Nano-scale values should be rounded up to milli-scale.
|
{ // Nano-scale values should be rounded up to milli-scale.
|
||||||
input: metav1.ResourceList{
|
input: v1.ResourceList{
|
||||||
metav1.ResourceCPU: resource.MustParse("3.000023m"),
|
v1.ResourceCPU: resource.MustParse("3.000023m"),
|
||||||
metav1.ResourceMemory: resource.MustParse("500.000050m"),
|
v1.ResourceMemory: resource.MustParse("500.000050m"),
|
||||||
},
|
},
|
||||||
expected: api.ResourceList{
|
expected: api.ResourceList{
|
||||||
api.ResourceCPU: resource.MustParse("4m"),
|
api.ResourceCPU: resource.MustParse("4m"),
|
||||||
|
@ -193,9 +193,9 @@ func TestResourceListConversion(t *testing.T) {
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{ // Large values should still be accurate.
|
{ // Large values should still be accurate.
|
||||||
input: metav1.ResourceList{
|
input: v1.ResourceList{
|
||||||
metav1.ResourceCPU: *bigMilliQuantity.Copy(),
|
v1.ResourceCPU: *bigMilliQuantity.Copy(),
|
||||||
metav1.ResourceStorage: *bigMilliQuantity.Copy(),
|
v1.ResourceStorage: *bigMilliQuantity.Copy(),
|
||||||
},
|
},
|
||||||
expected: api.ResourceList{
|
expected: api.ResourceList{
|
||||||
api.ResourceCPU: *bigMilliQuantity.Copy(),
|
api.ResourceCPU: *bigMilliQuantity.Copy(),
|
||||||
|
|
|
@ -23,13 +23,13 @@ import (
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/resource"
|
"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/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
)
|
)
|
||||||
|
|
||||||
func roundTrip(t *testing.T, obj runtime.Object) runtime.Object {
|
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)
|
data, err := runtime.Encode(codec, obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%v\n %#v", err, obj)
|
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) {
|
func TestSetDefaultReplicationController(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
rc *metav1.ReplicationController
|
rc *v1.ReplicationController
|
||||||
expectLabels bool
|
expectLabels bool
|
||||||
expectSelector bool
|
expectSelector bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
rc: &metav1.ReplicationController{
|
rc: &v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -71,15 +71,15 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||||
expectSelector: true,
|
expectSelector: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
rc: &metav1.ReplicationController{
|
rc: &v1.ReplicationController{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"bar": "foo",
|
"bar": "foo",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -91,18 +91,18 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||||
expectSelector: true,
|
expectSelector: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
rc: &metav1.ReplicationController{
|
rc: &v1.ReplicationController{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"bar": "foo",
|
"bar": "foo",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
"some": "other",
|
"some": "other",
|
||||||
},
|
},
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -114,13 +114,13 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||||
expectSelector: false,
|
expectSelector: false,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
rc: &metav1.ReplicationController{
|
rc: &v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Selector: map[string]string{
|
Selector: map[string]string{
|
||||||
"some": "other",
|
"some": "other",
|
||||||
},
|
},
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -136,7 +136,7 @@ func TestSetDefaultReplicationController(t *testing.T) {
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
rc := test.rc
|
rc := test.rc
|
||||||
obj2 := roundTrip(t, runtime.Object(rc))
|
obj2 := roundTrip(t, runtime.Object(rc))
|
||||||
rc2, ok := obj2.(*metav1.ReplicationController)
|
rc2, ok := obj2.(*v1.ReplicationController)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Errorf("unexpected object: %v", rc2)
|
t.Errorf("unexpected object: %v", rc2)
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
|
@ -166,14 +166,14 @@ func newInt(val int32) *int32 {
|
||||||
|
|
||||||
func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
rc metav1.ReplicationController
|
rc v1.ReplicationController
|
||||||
expectReplicas int32
|
expectReplicas int32
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
rc: metav1.ReplicationController{
|
rc: v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -184,11 +184,11 @@ func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||||
expectReplicas: 1,
|
expectReplicas: 1,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
rc: metav1.ReplicationController{
|
rc: v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Replicas: newInt(0),
|
Replicas: newInt(0),
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -199,11 +199,11 @@ func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||||
expectReplicas: 0,
|
expectReplicas: 0,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
rc: metav1.ReplicationController{
|
rc: v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Replicas: newInt(3),
|
Replicas: newInt(3),
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -218,7 +218,7 @@ func TestSetDefaultReplicationControllerReplicas(t *testing.T) {
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
rc := &test.rc
|
rc := &test.rc
|
||||||
obj2 := roundTrip(t, runtime.Object(rc))
|
obj2 := roundTrip(t, runtime.Object(rc))
|
||||||
rc2, ok := obj2.(*metav1.ReplicationController)
|
rc2, ok := obj2.(*v1.ReplicationController)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Errorf("unexpected object: %v", rc2)
|
t.Errorf("unexpected object: %v", rc2)
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
|
@ -247,14 +247,14 @@ func TestSetDefaultReplicationControllerImagePullPolicy(t *testing.T) {
|
||||||
})
|
})
|
||||||
|
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
rc metav1.ReplicationController
|
rc v1.ReplicationController
|
||||||
expectPullPolicy metav1.PullPolicy
|
expectPullPolicy v1.PullPolicy
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
rc: metav1.ReplicationController{
|
rc: v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Annotations: map[string]string{
|
Annotations: map[string]string{
|
||||||
"pod.beta.kubernetes.io/init-containers": string(containersWithoutPullPolicy),
|
"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{
|
rc: v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Annotations: map[string]string{
|
Annotations: map[string]string{
|
||||||
"pod.beta.kubernetes.io/init-containers": string(containersWithPullPolicy),
|
"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 {
|
for _, test := range tests {
|
||||||
rc := &test.rc
|
rc := &test.rc
|
||||||
obj2 := roundTrip(t, runtime.Object(rc))
|
obj2 := roundTrip(t, runtime.Object(rc))
|
||||||
rc2, ok := obj2.(*metav1.ReplicationController)
|
rc2, ok := obj2.(*v1.ReplicationController)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Errorf("unexpected object: %v", rc2)
|
t.Errorf("unexpected object: %v", rc2)
|
||||||
t.FailNow()
|
t.FailNow()
|
||||||
|
@ -298,33 +298,33 @@ func TestSetDefaultReplicationControllerImagePullPolicy(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultService(t *testing.T) {
|
func TestSetDefaultService(t *testing.T) {
|
||||||
svc := &metav1.Service{}
|
svc := &v1.Service{}
|
||||||
obj2 := roundTrip(t, runtime.Object(svc))
|
obj2 := roundTrip(t, runtime.Object(svc))
|
||||||
svc2 := obj2.(*metav1.Service)
|
svc2 := obj2.(*v1.Service)
|
||||||
if svc2.Spec.SessionAffinity != metav1.ServiceAffinityNone {
|
if svc2.Spec.SessionAffinity != v1.ServiceAffinityNone {
|
||||||
t.Errorf("Expected default session affinity type:%s, got: %s", metav1.ServiceAffinityNone, svc2.Spec.SessionAffinity)
|
t.Errorf("Expected default session affinity type:%s, got: %s", v1.ServiceAffinityNone, svc2.Spec.SessionAffinity)
|
||||||
}
|
}
|
||||||
if svc2.Spec.Type != metav1.ServiceTypeClusterIP {
|
if svc2.Spec.Type != v1.ServiceTypeClusterIP {
|
||||||
t.Errorf("Expected default type:%s, got: %s", metav1.ServiceTypeClusterIP, svc2.Spec.Type)
|
t.Errorf("Expected default type:%s, got: %s", v1.ServiceTypeClusterIP, svc2.Spec.Type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultSecretVolumeSource(t *testing.T) {
|
func TestSetDefaultSecretVolumeSource(t *testing.T) {
|
||||||
s := metav1.PodSpec{}
|
s := v1.PodSpec{}
|
||||||
s.Volumes = []metav1.Volume{
|
s.Volumes = []v1.Volume{
|
||||||
{
|
{
|
||||||
VolumeSource: metav1.VolumeSource{
|
VolumeSource: v1.VolumeSource{
|
||||||
Secret: &metav1.SecretVolumeSource{},
|
Secret: &v1.SecretVolumeSource{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: s,
|
Spec: s,
|
||||||
}
|
}
|
||||||
output := roundTrip(t, runtime.Object(pod))
|
output := roundTrip(t, runtime.Object(pod))
|
||||||
pod2 := output.(*metav1.Pod)
|
pod2 := output.(*v1.Pod)
|
||||||
defaultMode := pod2.Spec.Volumes[0].VolumeSource.Secret.DefaultMode
|
defaultMode := pod2.Spec.Volumes[0].VolumeSource.Secret.DefaultMode
|
||||||
expectedMode := metav1.SecretVolumeSourceDefaultMode
|
expectedMode := v1.SecretVolumeSourceDefaultMode
|
||||||
|
|
||||||
if defaultMode == nil || *defaultMode != expectedMode {
|
if defaultMode == nil || *defaultMode != expectedMode {
|
||||||
t.Errorf("Expected secret DefaultMode %v, got %v", expectedMode, defaultMode)
|
t.Errorf("Expected secret DefaultMode %v, got %v", expectedMode, defaultMode)
|
||||||
|
@ -332,21 +332,21 @@ func TestSetDefaultSecretVolumeSource(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultConfigMapVolumeSource(t *testing.T) {
|
func TestSetDefaultConfigMapVolumeSource(t *testing.T) {
|
||||||
s := metav1.PodSpec{}
|
s := v1.PodSpec{}
|
||||||
s.Volumes = []metav1.Volume{
|
s.Volumes = []v1.Volume{
|
||||||
{
|
{
|
||||||
VolumeSource: metav1.VolumeSource{
|
VolumeSource: v1.VolumeSource{
|
||||||
ConfigMap: &metav1.ConfigMapVolumeSource{},
|
ConfigMap: &v1.ConfigMapVolumeSource{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: s,
|
Spec: s,
|
||||||
}
|
}
|
||||||
output := roundTrip(t, runtime.Object(pod))
|
output := roundTrip(t, runtime.Object(pod))
|
||||||
pod2 := output.(*metav1.Pod)
|
pod2 := output.(*v1.Pod)
|
||||||
defaultMode := pod2.Spec.Volumes[0].VolumeSource.ConfigMap.DefaultMode
|
defaultMode := pod2.Spec.Volumes[0].VolumeSource.ConfigMap.DefaultMode
|
||||||
expectedMode := metav1.ConfigMapVolumeSourceDefaultMode
|
expectedMode := v1.ConfigMapVolumeSourceDefaultMode
|
||||||
|
|
||||||
if defaultMode == nil || *defaultMode != expectedMode {
|
if defaultMode == nil || *defaultMode != expectedMode {
|
||||||
t.Errorf("Expected ConfigMap DefaultMode %v, got %v", expectedMode, defaultMode)
|
t.Errorf("Expected ConfigMap DefaultMode %v, got %v", expectedMode, defaultMode)
|
||||||
|
@ -354,21 +354,21 @@ func TestSetDefaultConfigMapVolumeSource(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultDownwardAPIVolumeSource(t *testing.T) {
|
func TestSetDefaultDownwardAPIVolumeSource(t *testing.T) {
|
||||||
s := metav1.PodSpec{}
|
s := v1.PodSpec{}
|
||||||
s.Volumes = []metav1.Volume{
|
s.Volumes = []v1.Volume{
|
||||||
{
|
{
|
||||||
VolumeSource: metav1.VolumeSource{
|
VolumeSource: v1.VolumeSource{
|
||||||
DownwardAPI: &metav1.DownwardAPIVolumeSource{},
|
DownwardAPI: &v1.DownwardAPIVolumeSource{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: s,
|
Spec: s,
|
||||||
}
|
}
|
||||||
output := roundTrip(t, runtime.Object(pod))
|
output := roundTrip(t, runtime.Object(pod))
|
||||||
pod2 := output.(*metav1.Pod)
|
pod2 := output.(*v1.Pod)
|
||||||
defaultMode := pod2.Spec.Volumes[0].VolumeSource.DownwardAPI.DefaultMode
|
defaultMode := pod2.Spec.Volumes[0].VolumeSource.DownwardAPI.DefaultMode
|
||||||
expectedMode := metav1.DownwardAPIVolumeSourceDefaultMode
|
expectedMode := v1.DownwardAPIVolumeSourceDefaultMode
|
||||||
|
|
||||||
if defaultMode == nil || *defaultMode != expectedMode {
|
if defaultMode == nil || *defaultMode != expectedMode {
|
||||||
t.Errorf("Expected DownwardAPI DefaultMode %v, got %v", expectedMode, defaultMode)
|
t.Errorf("Expected DownwardAPI DefaultMode %v, got %v", expectedMode, defaultMode)
|
||||||
|
@ -376,50 +376,50 @@ func TestSetDefaultDownwardAPIVolumeSource(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultSecret(t *testing.T) {
|
func TestSetDefaultSecret(t *testing.T) {
|
||||||
s := &metav1.Secret{}
|
s := &v1.Secret{}
|
||||||
obj2 := roundTrip(t, runtime.Object(s))
|
obj2 := roundTrip(t, runtime.Object(s))
|
||||||
s2 := obj2.(*metav1.Secret)
|
s2 := obj2.(*v1.Secret)
|
||||||
|
|
||||||
if s2.Type != metav1.SecretTypeOpaque {
|
if s2.Type != v1.SecretTypeOpaque {
|
||||||
t.Errorf("Expected secret type %v, got %v", metav1.SecretTypeOpaque, s2.Type)
|
t.Errorf("Expected secret type %v, got %v", v1.SecretTypeOpaque, s2.Type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultPersistentVolume(t *testing.T) {
|
func TestSetDefaultPersistentVolume(t *testing.T) {
|
||||||
pv := &metav1.PersistentVolume{}
|
pv := &v1.PersistentVolume{}
|
||||||
obj2 := roundTrip(t, runtime.Object(pv))
|
obj2 := roundTrip(t, runtime.Object(pv))
|
||||||
pv2 := obj2.(*metav1.PersistentVolume)
|
pv2 := obj2.(*v1.PersistentVolume)
|
||||||
|
|
||||||
if pv2.Status.Phase != metav1.VolumePending {
|
if pv2.Status.Phase != v1.VolumePending {
|
||||||
t.Errorf("Expected volume phase %v, got %v", metav1.VolumePending, pv2.Status.Phase)
|
t.Errorf("Expected volume phase %v, got %v", v1.VolumePending, pv2.Status.Phase)
|
||||||
}
|
}
|
||||||
if pv2.Spec.PersistentVolumeReclaimPolicy != metav1.PersistentVolumeReclaimRetain {
|
if pv2.Spec.PersistentVolumeReclaimPolicy != v1.PersistentVolumeReclaimRetain {
|
||||||
t.Errorf("Expected pv reclaim policy %v, got %v", metav1.PersistentVolumeReclaimRetain, pv2.Spec.PersistentVolumeReclaimPolicy)
|
t.Errorf("Expected pv reclaim policy %v, got %v", v1.PersistentVolumeReclaimRetain, pv2.Spec.PersistentVolumeReclaimPolicy)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultPersistentVolumeClaim(t *testing.T) {
|
func TestSetDefaultPersistentVolumeClaim(t *testing.T) {
|
||||||
pvc := &metav1.PersistentVolumeClaim{}
|
pvc := &v1.PersistentVolumeClaim{}
|
||||||
obj2 := roundTrip(t, runtime.Object(pvc))
|
obj2 := roundTrip(t, runtime.Object(pvc))
|
||||||
pvc2 := obj2.(*metav1.PersistentVolumeClaim)
|
pvc2 := obj2.(*v1.PersistentVolumeClaim)
|
||||||
|
|
||||||
if pvc2.Status.Phase != metav1.ClaimPending {
|
if pvc2.Status.Phase != v1.ClaimPending {
|
||||||
t.Errorf("Expected claim phase %v, got %v", metav1.ClaimPending, pvc2.Status.Phase)
|
t.Errorf("Expected claim phase %v, got %v", v1.ClaimPending, pvc2.Status.Phase)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaulEndpointsProtocol(t *testing.T) {
|
func TestSetDefaulEndpointsProtocol(t *testing.T) {
|
||||||
in := &metav1.Endpoints{Subsets: []metav1.EndpointSubset{
|
in := &v1.Endpoints{Subsets: []v1.EndpointSubset{
|
||||||
{Ports: []metav1.EndpointPort{{}, {Protocol: "UDP"}, {}}},
|
{Ports: []v1.EndpointPort{{}, {Protocol: "UDP"}, {}}},
|
||||||
}}
|
}}
|
||||||
obj := roundTrip(t, runtime.Object(in))
|
obj := roundTrip(t, runtime.Object(in))
|
||||||
out := obj.(*metav1.Endpoints)
|
out := obj.(*v1.Endpoints)
|
||||||
|
|
||||||
for i := range out.Subsets {
|
for i := range out.Subsets {
|
||||||
for j := range out.Subsets[i].Ports {
|
for j := range out.Subsets[i].Ports {
|
||||||
if in.Subsets[i].Ports[j].Protocol == "" {
|
if in.Subsets[i].Ports[j].Protocol == "" {
|
||||||
if out.Subsets[i].Ports[j].Protocol != metav1.ProtocolTCP {
|
if out.Subsets[i].Ports[j].Protocol != v1.ProtocolTCP {
|
||||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolTCP, out.Subsets[i].Ports[j].Protocol)
|
t.Errorf("Expected protocol %s, got %s", v1.ProtocolTCP, out.Subsets[i].Ports[j].Protocol)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if out.Subsets[i].Ports[j].Protocol != in.Subsets[i].Ports[j].Protocol {
|
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) {
|
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))
|
obj := roundTrip(t, runtime.Object(in))
|
||||||
out := obj.(*metav1.Service)
|
out := obj.(*v1.Service)
|
||||||
if out.Spec.Ports[0].TargetPort != intstr.FromInt(1234) {
|
if out.Spec.Ports[0].TargetPort != intstr.FromInt(1234) {
|
||||||
t.Errorf("Expected TargetPort to be defaulted, got %v", out.Spec.Ports[0].TargetPort)
|
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))
|
obj = roundTrip(t, runtime.Object(in))
|
||||||
out = obj.(*metav1.Service)
|
out = obj.(*v1.Service)
|
||||||
if out.Spec.Ports[0].TargetPort != intstr.FromInt(5678) {
|
if out.Spec.Ports[0].TargetPort != intstr.FromInt(5678) {
|
||||||
t.Errorf("Expected TargetPort to be unchanged, got %v", out.Spec.Ports[0].TargetPort)
|
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) {
|
func TestSetDefaultServicePort(t *testing.T) {
|
||||||
// Unchanged if set.
|
// Unchanged if set.
|
||||||
in := &metav1.Service{Spec: metav1.ServiceSpec{
|
in := &v1.Service{Spec: v1.ServiceSpec{
|
||||||
Ports: []metav1.ServicePort{
|
Ports: []v1.ServicePort{
|
||||||
{Protocol: "UDP", Port: 9376, TargetPort: intstr.FromString("p")},
|
{Protocol: "UDP", Port: 9376, TargetPort: intstr.FromString("p")},
|
||||||
{Protocol: "UDP", Port: 8675, TargetPort: intstr.FromInt(309)},
|
{Protocol: "UDP", Port: 8675, TargetPort: intstr.FromInt(309)},
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
out := roundTrip(t, runtime.Object(in)).(*metav1.Service)
|
out := roundTrip(t, runtime.Object(in)).(*v1.Service)
|
||||||
if out.Spec.Ports[0].Protocol != metav1.ProtocolUDP {
|
if out.Spec.Ports[0].Protocol != v1.ProtocolUDP {
|
||||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolUDP, out.Spec.Ports[0].Protocol)
|
t.Errorf("Expected protocol %s, got %s", v1.ProtocolUDP, out.Spec.Ports[0].Protocol)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[0].TargetPort != intstr.FromString("p") {
|
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)
|
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 {
|
if out.Spec.Ports[1].Protocol != v1.ProtocolUDP {
|
||||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolUDP, out.Spec.Ports[1].Protocol)
|
t.Errorf("Expected protocol %s, got %s", v1.ProtocolUDP, out.Spec.Ports[1].Protocol)
|
||||||
}
|
}
|
||||||
if out.Spec.Ports[1].TargetPort != intstr.FromInt(309) {
|
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)
|
t.Errorf("Expected port %v, got %v", in.Spec.Ports[1].Port, out.Spec.Ports[1].TargetPort)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Defaulted.
|
// Defaulted.
|
||||||
in = &metav1.Service{Spec: metav1.ServiceSpec{
|
in = &v1.Service{Spec: v1.ServiceSpec{
|
||||||
Ports: []metav1.ServicePort{
|
Ports: []v1.ServicePort{
|
||||||
{Protocol: "", Port: 9376, TargetPort: intstr.FromString("")},
|
{Protocol: "", Port: 9376, TargetPort: intstr.FromString("")},
|
||||||
{Protocol: "", Port: 8675, TargetPort: intstr.FromInt(0)},
|
{Protocol: "", Port: 8675, TargetPort: intstr.FromInt(0)},
|
||||||
},
|
},
|
||||||
}}
|
}}
|
||||||
out = roundTrip(t, runtime.Object(in)).(*metav1.Service)
|
out = roundTrip(t, runtime.Object(in)).(*v1.Service)
|
||||||
if out.Spec.Ports[0].Protocol != metav1.ProtocolTCP {
|
if out.Spec.Ports[0].Protocol != v1.ProtocolTCP {
|
||||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolTCP, out.Spec.Ports[0].Protocol)
|
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)) {
|
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)
|
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 {
|
if out.Spec.Ports[1].Protocol != v1.ProtocolTCP {
|
||||||
t.Errorf("Expected protocol %s, got %s", metav1.ProtocolTCP, out.Spec.Ports[1].Protocol)
|
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)) {
|
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)
|
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) {
|
func TestSetDefaultNamespace(t *testing.T) {
|
||||||
s := &metav1.Namespace{}
|
s := &v1.Namespace{}
|
||||||
obj2 := roundTrip(t, runtime.Object(s))
|
obj2 := roundTrip(t, runtime.Object(s))
|
||||||
s2 := obj2.(*metav1.Namespace)
|
s2 := obj2.(*v1.Namespace)
|
||||||
|
|
||||||
if s2.Status.Phase != metav1.NamespaceActive {
|
if s2.Status.Phase != v1.NamespaceActive {
|
||||||
t.Errorf("Expected phase %v, got %v", metav1.NamespaceActive, s2.Status.Phase)
|
t.Errorf("Expected phase %v, got %v", v1.NamespaceActive, s2.Status.Phase)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultPodSpecHostNetwork(t *testing.T) {
|
func TestSetDefaultPodSpecHostNetwork(t *testing.T) {
|
||||||
portNum := int32(8080)
|
portNum := int32(8080)
|
||||||
s := metav1.PodSpec{}
|
s := v1.PodSpec{}
|
||||||
s.HostNetwork = true
|
s.HostNetwork = true
|
||||||
s.Containers = []metav1.Container{
|
s.Containers = []v1.Container{
|
||||||
{
|
{
|
||||||
Ports: []metav1.ContainerPort{
|
Ports: []v1.ContainerPort{
|
||||||
{
|
{
|
||||||
ContainerPort: portNum,
|
ContainerPort: portNum,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: s,
|
Spec: s,
|
||||||
}
|
}
|
||||||
obj2 := roundTrip(t, runtime.Object(pod))
|
obj2 := roundTrip(t, runtime.Object(pod))
|
||||||
pod2 := obj2.(*metav1.Pod)
|
pod2 := obj2.(*v1.Pod)
|
||||||
s2 := pod2.Spec
|
s2 := pod2.Spec
|
||||||
|
|
||||||
hostPortNum := s2.Containers[0].Ports[0].HostPort
|
hostPortNum := s2.Containers[0].Ports[0].HostPort
|
||||||
|
@ -528,10 +528,10 @@ func TestSetDefaultPodSpecHostNetwork(t *testing.T) {
|
||||||
|
|
||||||
func TestSetDefaultNodeExternalID(t *testing.T) {
|
func TestSetDefaultNodeExternalID(t *testing.T) {
|
||||||
name := "node0"
|
name := "node0"
|
||||||
n := &metav1.Node{}
|
n := &v1.Node{}
|
||||||
n.Name = name
|
n.Name = name
|
||||||
obj2 := roundTrip(t, runtime.Object(n))
|
obj2 := roundTrip(t, runtime.Object(n))
|
||||||
n2 := obj2.(*metav1.Node)
|
n2 := obj2.(*v1.Node)
|
||||||
if n2.Spec.ExternalID != name {
|
if n2.Spec.ExternalID != name {
|
||||||
t.Errorf("Expected default External ID: %s, got: %s", name, n2.Spec.ExternalID)
|
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) {
|
func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||||
capacity := metav1.ResourceList{
|
capacity := v1.ResourceList{
|
||||||
metav1.ResourceCPU: resource.MustParse("1000m"),
|
v1.ResourceCPU: resource.MustParse("1000m"),
|
||||||
metav1.ResourceMemory: resource.MustParse("10G"),
|
v1.ResourceMemory: resource.MustParse("10G"),
|
||||||
}
|
}
|
||||||
allocatable := metav1.ResourceList{
|
allocatable := v1.ResourceList{
|
||||||
metav1.ResourceCPU: resource.MustParse("500m"),
|
v1.ResourceCPU: resource.MustParse("500m"),
|
||||||
metav1.ResourceMemory: resource.MustParse("5G"),
|
v1.ResourceMemory: resource.MustParse("5G"),
|
||||||
}
|
}
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
capacity metav1.ResourceList
|
capacity v1.ResourceList
|
||||||
allocatable metav1.ResourceList
|
allocatable v1.ResourceList
|
||||||
expectedAllocatable metav1.ResourceList
|
expectedAllocatable v1.ResourceList
|
||||||
}{{ // Everything set, no defaulting.
|
}{{ // Everything set, no defaulting.
|
||||||
capacity: capacity,
|
capacity: capacity,
|
||||||
allocatable: allocatable,
|
allocatable: allocatable,
|
||||||
|
@ -571,18 +571,18 @@ func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||||
expectedAllocatable: nil,
|
expectedAllocatable: nil,
|
||||||
}}
|
}}
|
||||||
|
|
||||||
copyResourceList := func(rl metav1.ResourceList) metav1.ResourceList {
|
copyResourceList := func(rl v1.ResourceList) v1.ResourceList {
|
||||||
if rl == nil {
|
if rl == nil {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
copy := make(metav1.ResourceList, len(rl))
|
copy := make(v1.ResourceList, len(rl))
|
||||||
for k, v := range rl {
|
for k, v := range rl {
|
||||||
copy[k] = *v.Copy()
|
copy[k] = *v.Copy()
|
||||||
}
|
}
|
||||||
return 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) {
|
if len(a) != len(b) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
@ -599,13 +599,13 @@ func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, testcase := range tests {
|
for i, testcase := range tests {
|
||||||
node := metav1.Node{
|
node := v1.Node{
|
||||||
Status: metav1.NodeStatus{
|
Status: v1.NodeStatus{
|
||||||
Capacity: copyResourceList(testcase.capacity),
|
Capacity: copyResourceList(testcase.capacity),
|
||||||
Allocatable: copyResourceList(testcase.allocatable),
|
Allocatable: copyResourceList(testcase.allocatable),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
node2 := roundTrip(t, runtime.Object(&node)).(*metav1.Node)
|
node2 := roundTrip(t, runtime.Object(&node)).(*v1.Node)
|
||||||
actual := node2.Status.Allocatable
|
actual := node2.Status.Allocatable
|
||||||
expected := testcase.expectedAllocatable
|
expected := testcase.expectedAllocatable
|
||||||
if !resourceListsEqual(expected, actual) {
|
if !resourceListsEqual(expected, actual) {
|
||||||
|
@ -615,24 +615,24 @@ func TestSetDefaultNodeStatusAllocatable(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultObjectFieldSelectorAPIVersion(t *testing.T) {
|
func TestSetDefaultObjectFieldSelectorAPIVersion(t *testing.T) {
|
||||||
s := metav1.PodSpec{
|
s := v1.PodSpec{
|
||||||
Containers: []metav1.Container{
|
Containers: []v1.Container{
|
||||||
{
|
{
|
||||||
Env: []metav1.EnvVar{
|
Env: []v1.EnvVar{
|
||||||
{
|
{
|
||||||
ValueFrom: &metav1.EnvVarSource{
|
ValueFrom: &v1.EnvVarSource{
|
||||||
FieldRef: &metav1.ObjectFieldSelector{},
|
FieldRef: &v1.ObjectFieldSelector{},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: s,
|
Spec: s,
|
||||||
}
|
}
|
||||||
obj2 := roundTrip(t, runtime.Object(pod))
|
obj2 := roundTrip(t, runtime.Object(pod))
|
||||||
pod2 := obj2.(*metav1.Pod)
|
pod2 := obj2.(*v1.Pod)
|
||||||
s2 := pod2.Spec
|
s2 := pod2.Spec
|
||||||
|
|
||||||
apiVersion := s2.Containers[0].Env[0].ValueFrom.FieldRef.APIVersion
|
apiVersion := s2.Containers[0].Env[0].ValueFrom.FieldRef.APIVersion
|
||||||
|
@ -643,88 +643,88 @@ func TestSetDefaultObjectFieldSelectorAPIVersion(t *testing.T) {
|
||||||
|
|
||||||
func TestSetMinimumScalePod(t *testing.T) {
|
func TestSetMinimumScalePod(t *testing.T) {
|
||||||
// verify we default if limits are specified (and that request=0 is preserved)
|
// verify we default if limits are specified (and that request=0 is preserved)
|
||||||
s := metav1.PodSpec{}
|
s := v1.PodSpec{}
|
||||||
s.Containers = []metav1.Container{
|
s.Containers = []v1.Container{
|
||||||
{
|
{
|
||||||
Resources: metav1.ResourceRequirements{
|
Resources: v1.ResourceRequirements{
|
||||||
Requests: metav1.ResourceList{
|
Requests: v1.ResourceList{
|
||||||
metav1.ResourceMemory: resource.MustParse("1n"),
|
v1.ResourceMemory: resource.MustParse("1n"),
|
||||||
},
|
},
|
||||||
Limits: metav1.ResourceList{
|
Limits: v1.ResourceList{
|
||||||
metav1.ResourceCPU: resource.MustParse("2n"),
|
v1.ResourceCPU: resource.MustParse("2n"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: s,
|
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)
|
t.Errorf("did not round resources: %#v", pod.Spec.Containers[0].Resources)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultRequestsPod(t *testing.T) {
|
func TestSetDefaultRequestsPod(t *testing.T) {
|
||||||
// verify we default if limits are specified (and that request=0 is preserved)
|
// verify we default if limits are specified (and that request=0 is preserved)
|
||||||
s := metav1.PodSpec{}
|
s := v1.PodSpec{}
|
||||||
s.Containers = []metav1.Container{
|
s.Containers = []v1.Container{
|
||||||
{
|
{
|
||||||
Resources: metav1.ResourceRequirements{
|
Resources: v1.ResourceRequirements{
|
||||||
Requests: metav1.ResourceList{
|
Requests: v1.ResourceList{
|
||||||
metav1.ResourceMemory: resource.MustParse("0"),
|
v1.ResourceMemory: resource.MustParse("0"),
|
||||||
},
|
},
|
||||||
Limits: metav1.ResourceList{
|
Limits: v1.ResourceList{
|
||||||
metav1.ResourceCPU: resource.MustParse("100m"),
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
metav1.ResourceMemory: resource.MustParse("1Gi"),
|
v1.ResourceMemory: resource.MustParse("1Gi"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: s,
|
Spec: s,
|
||||||
}
|
}
|
||||||
output := roundTrip(t, runtime.Object(pod))
|
output := roundTrip(t, runtime.Object(pod))
|
||||||
pod2 := output.(*metav1.Pod)
|
pod2 := output.(*v1.Pod)
|
||||||
defaultRequest := pod2.Spec.Containers[0].Resources.Requests
|
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())
|
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())
|
t.Errorf("Expected request memory: %s, got: %s", "0", requestValue.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// verify we do nothing if no limits are specified
|
// verify we do nothing if no limits are specified
|
||||||
s = metav1.PodSpec{}
|
s = v1.PodSpec{}
|
||||||
s.Containers = []metav1.Container{{}}
|
s.Containers = []v1.Container{{}}
|
||||||
pod = &metav1.Pod{
|
pod = &v1.Pod{
|
||||||
Spec: s,
|
Spec: s,
|
||||||
}
|
}
|
||||||
output = roundTrip(t, runtime.Object(pod))
|
output = roundTrip(t, runtime.Object(pod))
|
||||||
pod2 = output.(*metav1.Pod)
|
pod2 = output.(*v1.Pod)
|
||||||
defaultRequest = pod2.Spec.Containers[0].Resources.Requests
|
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())
|
t.Errorf("Expected 0 request value, got: %s", requestValue.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestDefaultRequestIsNotSetForReplicationController(t *testing.T) {
|
func TestDefaultRequestIsNotSetForReplicationController(t *testing.T) {
|
||||||
s := metav1.PodSpec{}
|
s := v1.PodSpec{}
|
||||||
s.Containers = []metav1.Container{
|
s.Containers = []v1.Container{
|
||||||
{
|
{
|
||||||
Resources: metav1.ResourceRequirements{
|
Resources: v1.ResourceRequirements{
|
||||||
Limits: metav1.ResourceList{
|
Limits: v1.ResourceList{
|
||||||
metav1.ResourceCPU: resource.MustParse("100m"),
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
rc := &metav1.ReplicationController{
|
rc := &v1.ReplicationController{
|
||||||
Spec: metav1.ReplicationControllerSpec{
|
Spec: v1.ReplicationControllerSpec{
|
||||||
Replicas: newInt(3),
|
Replicas: newInt(3),
|
||||||
Template: &metav1.PodTemplateSpec{
|
Template: &v1.PodTemplateSpec{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Labels: map[string]string{
|
Labels: map[string]string{
|
||||||
"foo": "bar",
|
"foo": "bar",
|
||||||
},
|
},
|
||||||
|
@ -734,59 +734,59 @@ func TestDefaultRequestIsNotSetForReplicationController(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
output := roundTrip(t, runtime.Object(rc))
|
output := roundTrip(t, runtime.Object(rc))
|
||||||
rc2 := output.(*metav1.ReplicationController)
|
rc2 := output.(*v1.ReplicationController)
|
||||||
defaultRequest := rc2.Spec.Template.Spec.Containers[0].Resources.Requests
|
defaultRequest := rc2.Spec.Template.Spec.Containers[0].Resources.Requests
|
||||||
requestValue := defaultRequest[metav1.ResourceCPU]
|
requestValue := defaultRequest[v1.ResourceCPU]
|
||||||
if requestValue.String() != "0" {
|
if requestValue.String() != "0" {
|
||||||
t.Errorf("Expected 0 request value, got: %s", requestValue.String())
|
t.Errorf("Expected 0 request value, got: %s", requestValue.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultLimitRangeItem(t *testing.T) {
|
func TestSetDefaultLimitRangeItem(t *testing.T) {
|
||||||
limitRange := &metav1.LimitRange{
|
limitRange := &v1.LimitRange{
|
||||||
ObjectMeta: metav1.ObjectMeta{
|
ObjectMeta: v1.ObjectMeta{
|
||||||
Name: "test-defaults",
|
Name: "test-defaults",
|
||||||
},
|
},
|
||||||
Spec: metav1.LimitRangeSpec{
|
Spec: v1.LimitRangeSpec{
|
||||||
Limits: []metav1.LimitRangeItem{{
|
Limits: []v1.LimitRangeItem{{
|
||||||
Type: metav1.LimitTypeContainer,
|
Type: v1.LimitTypeContainer,
|
||||||
Max: metav1.ResourceList{
|
Max: v1.ResourceList{
|
||||||
metav1.ResourceCPU: resource.MustParse("100m"),
|
v1.ResourceCPU: resource.MustParse("100m"),
|
||||||
},
|
},
|
||||||
Min: metav1.ResourceList{
|
Min: v1.ResourceList{
|
||||||
metav1.ResourceMemory: resource.MustParse("100Mi"),
|
v1.ResourceMemory: resource.MustParse("100Mi"),
|
||||||
},
|
},
|
||||||
Default: metav1.ResourceList{},
|
Default: v1.ResourceList{},
|
||||||
DefaultRequest: metav1.ResourceList{},
|
DefaultRequest: v1.ResourceList{},
|
||||||
}},
|
}},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
output := roundTrip(t, runtime.Object(limitRange))
|
output := roundTrip(t, runtime.Object(limitRange))
|
||||||
limitRange2 := output.(*metav1.LimitRange)
|
limitRange2 := output.(*v1.LimitRange)
|
||||||
defaultLimit := limitRange2.Spec.Limits[0].Default
|
defaultLimit := limitRange2.Spec.Limits[0].Default
|
||||||
defaultRequest := limitRange2.Spec.Limits[0].DefaultRequest
|
defaultRequest := limitRange2.Spec.Limits[0].DefaultRequest
|
||||||
|
|
||||||
// verify that default cpu was set to the max
|
// verify that default cpu was set to the max
|
||||||
defaultValue := defaultLimit[metav1.ResourceCPU]
|
defaultValue := defaultLimit[v1.ResourceCPU]
|
||||||
if defaultValue.String() != "100m" {
|
if defaultValue.String() != "100m" {
|
||||||
t.Errorf("Expected default cpu: %s, got: %s", "100m", defaultValue.String())
|
t.Errorf("Expected default cpu: %s, got: %s", "100m", defaultValue.String())
|
||||||
}
|
}
|
||||||
// verify that default request was set to the limit
|
// verify that default request was set to the limit
|
||||||
requestValue := defaultRequest[metav1.ResourceCPU]
|
requestValue := defaultRequest[v1.ResourceCPU]
|
||||||
if requestValue.String() != "100m" {
|
if requestValue.String() != "100m" {
|
||||||
t.Errorf("Expected request cpu: %s, got: %s", "100m", requestValue.String())
|
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
|
// 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" {
|
if requestMinValue.String() != "100Mi" {
|
||||||
t.Errorf("Expected request memory: %s, got: %s", "100Mi", requestMinValue.String())
|
t.Errorf("Expected request memory: %s, got: %s", "100Mi", requestMinValue.String())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestSetDefaultProbe(t *testing.T) {
|
func TestSetDefaultProbe(t *testing.T) {
|
||||||
originalProbe := metav1.Probe{}
|
originalProbe := v1.Probe{}
|
||||||
expectedProbe := metav1.Probe{
|
expectedProbe := v1.Probe{
|
||||||
InitialDelaySeconds: 0,
|
InitialDelaySeconds: 0,
|
||||||
TimeoutSeconds: 1,
|
TimeoutSeconds: 1,
|
||||||
PeriodSeconds: 10,
|
PeriodSeconds: 10,
|
||||||
|
@ -794,13 +794,13 @@ func TestSetDefaultProbe(t *testing.T) {
|
||||||
FailureThreshold: 3,
|
FailureThreshold: 3,
|
||||||
}
|
}
|
||||||
|
|
||||||
pod := &metav1.Pod{
|
pod := &v1.Pod{
|
||||||
Spec: metav1.PodSpec{
|
Spec: v1.PodSpec{
|
||||||
Containers: []metav1.Container{{LivenessProbe: &originalProbe}},
|
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
|
actualProbe := *output.Spec.Containers[0].LivenessProbe
|
||||||
if actualProbe != expectedProbe {
|
if actualProbe != expectedProbe {
|
||||||
t.Errorf("Expected probe: %+v\ngot: %+v\n", expectedProbe, actualProbe)
|
t.Errorf("Expected probe: %+v\ngot: %+v\n", expectedProbe, actualProbe)
|
||||||
|
|
|
@ -17,6 +17,7 @@ limitations under the License.
|
||||||
package v1
|
package v1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -26,7 +27,25 @@ const GroupName = "meta.k8s.io"
|
||||||
// SchemeGroupVersion is group version used to register these objects
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: ""}
|
var SchemeGroupVersion = schema.GroupVersion{Group: "", Version: ""}
|
||||||
|
|
||||||
|
// WatchEventKind is name reserved for serializing watch events.
|
||||||
|
const WatchEventKind = "WatchEvent"
|
||||||
|
|
||||||
// Kind takes an unqualified kind and returns a Group qualified GroupKind
|
// Kind takes an unqualified kind and returns a Group qualified GroupKind
|
||||||
func Kind(kind string) schema.GroupKind {
|
func Kind(kind string) schema.GroupKind {
|
||||||
return SchemeGroupVersion.WithKind(kind).GroupKind()
|
return SchemeGroupVersion.WithKind(kind).GroupKind()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// AddToGroupVersion registers common meta types into schemas.
|
||||||
|
func AddToGroupVersion(scheme *runtime.Scheme, groupVersion schema.GroupVersion) {
|
||||||
|
scheme.AddKnownTypeWithName(groupVersion.WithKind(WatchEventKind), &Event{})
|
||||||
|
scheme.AddKnownTypeWithName(
|
||||||
|
schema.GroupVersion{Group: groupVersion.Group, Version: runtime.APIVersionInternal}.WithKind(WatchEventKind),
|
||||||
|
&InternalEvent{},
|
||||||
|
)
|
||||||
|
scheme.AddConversionFuncs(
|
||||||
|
Convert_versioned_Event_to_watch_Event,
|
||||||
|
Convert_versioned_InternalEvent_to_versioned_Event,
|
||||||
|
Convert_watch_Event_to_versioned_Event,
|
||||||
|
Convert_versioned_Event_to_versioned_InternalEvent,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
|
@ -26,7 +26,7 @@ import (
|
||||||
// Event represents a single event to a watched resource.
|
// Event represents a single event to a watched resource.
|
||||||
//
|
//
|
||||||
// +protobuf=true
|
// +protobuf=true
|
||||||
// +k8s:openapi-gen=true
|
// +k8s:openapi-gen=false
|
||||||
type Event struct {
|
type Event struct {
|
||||||
Type string `json:"type" protobuf:"bytes,1,opt,name=type"`
|
Type string `json:"type" protobuf:"bytes,1,opt,name=type"`
|
||||||
|
|
||||||
|
@ -74,6 +74,7 @@ func Convert_versioned_Event_to_versioned_InternalEvent(in *Event, out *Internal
|
||||||
}
|
}
|
||||||
|
|
||||||
// InternalEvent makes watch.Event versioned
|
// InternalEvent makes watch.Event versioned
|
||||||
|
// +protobuf=false
|
||||||
type InternalEvent watch.Event
|
type InternalEvent watch.Event
|
||||||
|
|
||||||
func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
func (e *InternalEvent) GetObjectKind() schema.ObjectKind { return schema.EmptyObjectKind }
|
||||||
|
|
|
@ -65,6 +65,7 @@ go_test(
|
||||||
"//pkg/api/v1:go_default_library",
|
"//pkg/api/v1:go_default_library",
|
||||||
"//pkg/apimachinery/registered:go_default_library",
|
"//pkg/apimachinery/registered:go_default_library",
|
||||||
"//pkg/apis/meta/v1:go_default_library",
|
"//pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//pkg/client/restclient/watch:go_default_library",
|
||||||
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
"//pkg/client/unversioned/clientcmd/api:go_default_library",
|
||||||
"//pkg/labels:go_default_library",
|
"//pkg/labels:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
|
|
|
@ -37,6 +37,7 @@ import (
|
||||||
pathvalidation "k8s.io/kubernetes/pkg/api/validation/path"
|
pathvalidation "k8s.io/kubernetes/pkg/api/validation/path"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/metrics"
|
"k8s.io/kubernetes/pkg/client/metrics"
|
||||||
|
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
||||||
"k8s.io/kubernetes/pkg/fields"
|
"k8s.io/kubernetes/pkg/fields"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
|
@ -46,7 +47,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/util/net"
|
"k8s.io/kubernetes/pkg/util/net"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
"k8s.io/kubernetes/pkg/watch/versioned"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -683,7 +683,7 @@ func (r *Request) Watch() (watch.Interface, error) {
|
||||||
}
|
}
|
||||||
framer := r.serializers.Framer.NewFrameReader(resp.Body)
|
framer := r.serializers.Framer.NewFrameReader(resp.Body)
|
||||||
decoder := streaming.NewDecoder(framer, r.serializers.StreamingSerializer)
|
decoder := streaming.NewDecoder(framer, r.serializers.StreamingSerializer)
|
||||||
return watch.NewStreamWatcher(versioned.NewDecoder(decoder, r.serializers.Decoder)), nil
|
return watch.NewStreamWatcher(restclientwatch.NewDecoder(decoder, r.serializers.Decoder)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// updateURLMetrics is a convenience function for pushing metrics.
|
// updateURLMetrics is a convenience function for pushing metrics.
|
||||||
|
|
|
@ -39,6 +39,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
|
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
|
@ -50,7 +51,6 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/util/intstr"
|
"k8s.io/kubernetes/pkg/util/intstr"
|
||||||
utiltesting "k8s.io/kubernetes/pkg/util/testing"
|
utiltesting "k8s.io/kubernetes/pkg/util/testing"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
"k8s.io/kubernetes/pkg/watch/versioned"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestNewRequestSetsAccept(t *testing.T) {
|
func TestNewRequestSetsAccept(t *testing.T) {
|
||||||
|
@ -1571,7 +1571,7 @@ func TestWatch(t *testing.T) {
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
flusher.Flush()
|
flusher.Flush()
|
||||||
|
|
||||||
encoder := versioned.NewEncoder(streaming.NewEncoder(w, testapi.Default.Codec()), testapi.Default.Codec())
|
encoder := restclientwatch.NewEncoder(streaming.NewEncoder(w, testapi.Default.Codec()), testapi.Default.Codec())
|
||||||
for _, item := range table {
|
for _, item := range table {
|
||||||
if err := encoder.Encode(&watch.Event{Type: item.t, Object: item.obj}); err != nil {
|
if err := encoder.Encode(&watch.Event{Type: item.t, Object: item.obj}); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|
|
@ -34,6 +34,7 @@ go_test(
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/apis/meta/v1:go_default_library",
|
"//pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//pkg/client/restclient/watch:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/runtime/serializer/streaming:go_default_library",
|
"//pkg/runtime/serializer/streaming:go_default_library",
|
||||||
"//pkg/util/wait:go_default_library",
|
"//pkg/util/wait:go_default_library",
|
||||||
|
|
|
@ -19,6 +19,7 @@ package versioned
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
|
@ -44,13 +45,13 @@ func NewDecoder(decoder streaming.Decoder, embeddedDecoder runtime.Decoder) *Dec
|
||||||
// Decode blocks until it can return the next object in the reader. Returns an error
|
// Decode blocks until it can return the next object in the reader. Returns an error
|
||||||
// if the reader is closed or an object can't be decoded.
|
// if the reader is closed or an object can't be decoded.
|
||||||
func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
|
func (d *Decoder) Decode() (watch.EventType, runtime.Object, error) {
|
||||||
var got Event
|
var got metav1.Event
|
||||||
res, _, err := d.decoder.Decode(nil, &got)
|
res, _, err := d.decoder.Decode(nil, &got)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", nil, err
|
return "", nil, err
|
||||||
}
|
}
|
||||||
if res != &got {
|
if res != &got {
|
||||||
return "", nil, fmt.Errorf("unable to decode to versioned.Event")
|
return "", nil, fmt.Errorf("unable to decode to metav1.Event")
|
||||||
}
|
}
|
||||||
switch got.Type {
|
switch got.Type {
|
||||||
case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error):
|
case string(watch.Added), string(watch.Modified), string(watch.Deleted), string(watch.Error):
|
||||||
|
|
|
@ -24,11 +24,12 @@ import (
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
|
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
"k8s.io/kubernetes/pkg/watch/versioned"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestDecoder(t *testing.T) {
|
func TestDecoder(t *testing.T) {
|
||||||
|
@ -37,7 +38,7 @@ func TestDecoder(t *testing.T) {
|
||||||
for _, eventType := range table {
|
for _, eventType := range table {
|
||||||
out, in := io.Pipe()
|
out, in := io.Pipe()
|
||||||
codec := testapi.Default.Codec()
|
codec := testapi.Default.Codec()
|
||||||
decoder := versioned.NewDecoder(streaming.NewDecoder(out, codec), codec)
|
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, codec), codec)
|
||||||
|
|
||||||
expect := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
|
expect := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo"}}
|
||||||
encoder := json.NewEncoder(in)
|
encoder := json.NewEncoder(in)
|
||||||
|
@ -46,7 +47,7 @@ func TestDecoder(t *testing.T) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error %v", err)
|
t.Fatalf("Unexpected error %v", err)
|
||||||
}
|
}
|
||||||
event := versioned.Event{
|
event := metav1.Event{
|
||||||
Type: string(eventType),
|
Type: string(eventType),
|
||||||
Object: runtime.RawExtension{Raw: json.RawMessage(data)},
|
Object: runtime.RawExtension{Raw: json.RawMessage(data)},
|
||||||
}
|
}
|
||||||
|
@ -90,7 +91,7 @@ func TestDecoder(t *testing.T) {
|
||||||
func TestDecoder_SourceClose(t *testing.T) {
|
func TestDecoder_SourceClose(t *testing.T) {
|
||||||
out, in := io.Pipe()
|
out, in := io.Pipe()
|
||||||
codec := testapi.Default.Codec()
|
codec := testapi.Default.Codec()
|
||||||
decoder := versioned.NewDecoder(streaming.NewDecoder(out, codec), codec)
|
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(out, codec), codec)
|
||||||
|
|
||||||
done := make(chan struct{})
|
done := make(chan struct{})
|
||||||
|
|
||||||
|
|
|
@ -23,10 +23,10 @@ import (
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
"k8s.io/kubernetes/pkg/watch/versioned"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestEncodeDecodeRoundTrip(t *testing.T) {
|
func TestEncodeDecodeRoundTrip(t *testing.T) {
|
||||||
|
@ -55,14 +55,14 @@ func TestEncodeDecodeRoundTrip(t *testing.T) {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
|
|
||||||
codec := testCase.Codec
|
codec := testCase.Codec
|
||||||
encoder := versioned.NewEncoder(streaming.NewEncoder(buf, codec), codec)
|
encoder := restclientwatch.NewEncoder(streaming.NewEncoder(buf, codec), codec)
|
||||||
if err := encoder.Encode(&watch.Event{Type: testCase.Type, Object: testCase.Object}); err != nil {
|
if err := encoder.Encode(&watch.Event{Type: testCase.Type, Object: testCase.Object}); err != nil {
|
||||||
t.Errorf("%d: unexpected error: %v", i, err)
|
t.Errorf("%d: unexpected error: %v", i, err)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
rc := ioutil.NopCloser(buf)
|
rc := ioutil.NopCloser(buf)
|
||||||
decoder := versioned.NewDecoder(streaming.NewDecoder(rc, codec), codec)
|
decoder := restclientwatch.NewDecoder(streaming.NewDecoder(rc, codec), codec)
|
||||||
event, obj, err := decoder.Decode()
|
event, obj, err := decoder.Decode()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("%d: unexpected error: %v", i, err)
|
t.Errorf("%d: unexpected error: %v", i, err)
|
||||||
|
|
|
@ -46,6 +46,7 @@ go_test(
|
||||||
"//pkg/apis/meta/v1:go_default_library",
|
"//pkg/apis/meta/v1:go_default_library",
|
||||||
"//pkg/apis/meta/v1/unstructured:go_default_library",
|
"//pkg/apis/meta/v1/unstructured:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
|
"//pkg/client/restclient/watch:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/runtime/schema:go_default_library",
|
"//pkg/runtime/schema:go_default_library",
|
||||||
"//pkg/runtime/serializer/streaming:go_default_library",
|
"//pkg/runtime/serializer/streaming:go_default_library",
|
||||||
|
|
|
@ -30,6 +30,7 @@ import (
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/apis/meta/v1/unstructured"
|
"k8s.io/kubernetes/pkg/apis/meta/v1/unstructured"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
|
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
||||||
|
@ -458,7 +459,7 @@ func TestWatch(t *testing.T) {
|
||||||
t.Errorf("Watch(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path)
|
t.Errorf("Watch(%q) got path %s. wanted %s", tc.name, r.URL.Path, tc.path)
|
||||||
}
|
}
|
||||||
|
|
||||||
enc := metav1.NewEncoder(streaming.NewEncoder(w, dynamicCodec{}), dynamicCodec{})
|
enc := restclientwatch.NewEncoder(streaming.NewEncoder(w, dynamicCodec{}), dynamicCodec{})
|
||||||
for _, e := range tc.events {
|
for _, e := range tc.events {
|
||||||
enc.Encode(&e)
|
enc.Encode(&e)
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,6 +187,7 @@ go_test(
|
||||||
"//pkg/apis/policy:go_default_library",
|
"//pkg/apis/policy:go_default_library",
|
||||||
"//pkg/client/restclient:go_default_library",
|
"//pkg/client/restclient:go_default_library",
|
||||||
"//pkg/client/restclient/fake:go_default_library",
|
"//pkg/client/restclient/fake:go_default_library",
|
||||||
|
"//pkg/client/restclient/watch:go_default_library",
|
||||||
"//pkg/client/typed/dynamic:go_default_library",
|
"//pkg/client/typed/dynamic:go_default_library",
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
"//pkg/kubectl/cmd/testing:go_default_library",
|
"//pkg/kubectl/cmd/testing:go_default_library",
|
||||||
|
|
|
@ -34,6 +34,7 @@ import (
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
||||||
|
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
|
@ -890,7 +891,7 @@ func TestWatchOnlyList(t *testing.T) {
|
||||||
|
|
||||||
func watchBody(codec runtime.Codec, events []watch.Event) io.ReadCloser {
|
func watchBody(codec runtime.Codec, events []watch.Event) io.ReadCloser {
|
||||||
buf := bytes.NewBuffer([]byte{})
|
buf := bytes.NewBuffer([]byte{})
|
||||||
enc := metav1.NewEncoder(streaming.NewEncoder(buf, codec), codec)
|
enc := restclientwatch.NewEncoder(streaming.NewEncoder(buf, codec), codec)
|
||||||
for i := range events {
|
for i := range events {
|
||||||
enc.Encode(&events[i])
|
enc.Encode(&events[i])
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,6 +67,7 @@ go_test(
|
||||||
"//pkg/apimachinery/registered:go_default_library",
|
"//pkg/apimachinery/registered:go_default_library",
|
||||||
"//pkg/apis/meta/v1:go_default_library",
|
"//pkg/apis/meta/v1:go_default_library",
|
||||||
"//pkg/client/restclient/fake:go_default_library",
|
"//pkg/client/restclient/fake:go_default_library",
|
||||||
|
"//pkg/client/restclient/watch:go_default_library",
|
||||||
"//pkg/labels:go_default_library",
|
"//pkg/labels:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/runtime/serializer/streaming:go_default_library",
|
"//pkg/runtime/serializer/streaming:go_default_library",
|
||||||
|
|
|
@ -40,6 +40,7 @@ import (
|
||||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
"k8s.io/kubernetes/pkg/client/restclient/fake"
|
||||||
|
restclientwatch "k8s.io/kubernetes/pkg/client/restclient/watch"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
"k8s.io/kubernetes/pkg/runtime/serializer/streaming"
|
||||||
utilerrors "k8s.io/kubernetes/pkg/util/errors"
|
utilerrors "k8s.io/kubernetes/pkg/util/errors"
|
||||||
|
@ -54,7 +55,7 @@ func stringBody(body string) io.ReadCloser {
|
||||||
func watchBody(events ...watch.Event) string {
|
func watchBody(events ...watch.Event) string {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
codec := testapi.Default.Codec()
|
codec := testapi.Default.Codec()
|
||||||
enc := metav1.NewEncoder(streaming.NewEncoder(buf, codec), codec)
|
enc := restclientwatch.NewEncoder(streaming.NewEncoder(buf, codec), codec)
|
||||||
for _, e := range events {
|
for _, e := range events {
|
||||||
enc.Encode(&e)
|
enc.Encode(&e)
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ go_library(
|
||||||
)
|
)
|
||||||
|
|
||||||
go_test(
|
go_test(
|
||||||
name = "go_default_test",
|
name = "go_default_xtest",
|
||||||
srcs = [
|
srcs = [
|
||||||
"filter_test.go",
|
"filter_test.go",
|
||||||
"mux_test.go",
|
"mux_test.go",
|
||||||
|
@ -38,13 +38,13 @@ go_test(
|
||||||
"until_test.go",
|
"until_test.go",
|
||||||
"watch_test.go",
|
"watch_test.go",
|
||||||
],
|
],
|
||||||
library = ":go_default_library",
|
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
deps = [
|
||||||
"//pkg/api:go_default_library",
|
"//pkg/api:go_default_library",
|
||||||
"//pkg/runtime:go_default_library",
|
"//pkg/runtime:go_default_library",
|
||||||
"//pkg/runtime/schema:go_default_library",
|
"//pkg/runtime/schema:go_default_library",
|
||||||
"//pkg/util/wait:go_default_library",
|
"//pkg/util/wait:go_default_library",
|
||||||
|
"//pkg/watch:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -14,11 +14,13 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package watch
|
package watch_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
. "k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFilter(t *testing.T) {
|
func TestFilter(t *testing.T) {
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package watch
|
package watch_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
||||||
|
@ -24,6 +24,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
. "k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
type myType struct {
|
type myType struct {
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package watch
|
package watch_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io"
|
"io"
|
||||||
|
@ -22,6 +22,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
|
. "k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
type fakeDecoder struct {
|
type fakeDecoder struct {
|
||||||
|
|
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package watch
|
package watch_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
"errors"
|
||||||
|
@ -24,6 +24,7 @@ import (
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
|
. "k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUntil(t *testing.T) {
|
func TestUntil(t *testing.T) {
|
||||||
|
|
|
@ -14,12 +14,13 @@ See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package watch
|
package watch_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/runtime/schema"
|
"k8s.io/kubernetes/pkg/runtime/schema"
|
||||||
|
. "k8s.io/kubernetes/pkg/watch"
|
||||||
)
|
)
|
||||||
|
|
||||||
type testType string
|
type testType string
|
||||||
|
|
Loading…
Reference in New Issue