Fix tests using internal types for serialization

This commit is contained in:
Jordan Liggitt 2016-12-08 21:43:36 -05:00
parent 6676bab9c3
commit cc7a44f545
No known key found for this signature in database
GPG Key ID: 24E7ADF9A3B42012
3 changed files with 38 additions and 9 deletions

View File

@ -27,8 +27,9 @@ import (
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing" apitesting "k8s.io/kubernetes/pkg/api/testing"
"k8s.io/kubernetes/pkg/api/v1"
"k8s.io/kubernetes/pkg/apimachinery/registered" "k8s.io/kubernetes/pkg/apimachinery/registered"
"k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/extensions/v1beta1"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
k8syaml "k8s.io/kubernetes/pkg/util/yaml" k8syaml "k8s.io/kubernetes/pkg/util/yaml"
@ -171,18 +172,18 @@ func TestValidateDifferentApiVersions(t *testing.T) {
t.Fatalf("Failed to load: %v", err) t.Fatalf("Failed to load: %v", err)
} }
pod := &api.Pod{} pod := &v1.Pod{}
pod.APIVersion = "v1" pod.APIVersion = "v1"
pod.Kind = "Pod" pod.Kind = "Pod"
deployment := &extensions.Deployment{} deployment := &v1beta1.Deployment{}
deployment.APIVersion = "extensions/v1beta1" deployment.APIVersion = "extensions/v1beta1"
deployment.Kind = "Deployment" deployment.Kind = "Deployment"
list := &api.List{} list := &v1.List{}
list.APIVersion = "v1" list.APIVersion = "v1"
list.Kind = "List" list.Kind = "List"
list.Items = []runtime.Object{pod, deployment} list.Items = []runtime.RawExtension{{Object: pod}, {Object: deployment}}
bytes, err := json.Marshal(list) bytes, err := json.Marshal(list)
if err != nil { if err != nil {
t.Error(err) t.Error(err)
@ -295,7 +296,7 @@ func TestTypeAny(t *testing.T) {
t.Errorf("could not read file: %s, err: %v", test, err) t.Errorf("could not read file: %s, err: %v", test, err)
} }
// Verify that pod has at least one label (labels are type "any") // Verify that pod has at least one label (labels are type "any")
var pod api.Pod var pod v1.Pod
err = yaml.Unmarshal(podBytes, &pod) err = yaml.Unmarshal(podBytes, &pod)
if err != nil { if err != nil {
t.Errorf("error in unmarshalling pod: %v", err) t.Errorf("error in unmarshalling pod: %v", err)

View File

@ -133,7 +133,7 @@ func addGrouplessTypes() {
} }
api.Scheme.AddKnownTypes(grouplessGroupVersion, api.Scheme.AddKnownTypes(grouplessGroupVersion,
&apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &ListOptions{}, &metav1.ExportOptions{}, &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &ListOptions{}, &metav1.ExportOptions{},
&api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}) &v1.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
api.Scheme.AddKnownTypes(grouplessInternalGroupVersion, api.Scheme.AddKnownTypes(grouplessInternalGroupVersion,
&apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &api.ListOptions{}, &metav1.ExportOptions{}, &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &api.ListOptions{}, &metav1.ExportOptions{},
&apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}) &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{})
@ -151,7 +151,7 @@ func addTestTypes() {
} }
api.Scheme.AddKnownTypes(testGroupVersion, api.Scheme.AddKnownTypes(testGroupVersion,
&apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &ListOptions{}, &metav1.ExportOptions{}, &apiservertesting.Simple{}, &apiservertesting.SimpleList{}, &ListOptions{}, &metav1.ExportOptions{},
&api.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{}, &v1.DeleteOptions{}, &apiservertesting.SimpleGetOptions{}, &apiservertesting.SimpleRoot{},
&SimpleXGSubresource{}) &SimpleXGSubresource{})
api.Scheme.AddKnownTypes(testGroupVersion, &v1.Pod{}) api.Scheme.AddKnownTypes(testGroupVersion, &v1.Pod{})
api.Scheme.AddKnownTypes(testInternalGroupVersion, api.Scheme.AddKnownTypes(testInternalGroupVersion,

View File

@ -26,11 +26,13 @@ import (
"time" "time"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"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/client/restclient/fake" "k8s.io/kubernetes/pkg/client/restclient/fake"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime"
"k8s.io/kubernetes/pkg/util/strategicpatch"
) )
func generateNodeAndTaintedNode(oldTaints []api.Taint, newTaints []api.Taint) (*api.Node, *api.Node) { func generateNodeAndTaintedNode(oldTaints []api.Taint, newTaints []api.Taint) (*api.Node, *api.Node) {
@ -263,7 +265,33 @@ func TestTaint(t *testing.T) {
switch { switch {
case m.isFor("GET", "/nodes/node-name"): case m.isFor("GET", "/nodes/node-name"):
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, oldNode)}, nil return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, oldNode)}, nil
case m.isFor("PATCH", "/nodes/node-name"), m.isFor("PUT", "/nodes/node-name"): case m.isFor("PATCH", "/nodes/node-name"):
tainted = true
data, err := ioutil.ReadAll(req.Body)
if err != nil {
t.Fatalf("%s: unexpected error: %v", test.description, err)
}
defer req.Body.Close()
// apply the patch
oldJSON, err := runtime.Encode(codec, oldNode)
if err != nil {
t.Fatalf("%s: unexpected error: %v", test.description, err)
}
appliedPatch, err := strategicpatch.StrategicMergePatch(oldJSON, data, &v1.Node{})
if err != nil {
t.Fatalf("%s: unexpected error: %v", test.description, err)
}
// decode the patch
if err := runtime.DecodeInto(codec, appliedPatch, new_node); err != nil {
t.Fatalf("%s: unexpected error: %v", test.description, err)
}
if !AnnotationsHaveEqualTaints(expectNewNode.Annotations, new_node.Annotations) {
t.Fatalf("%s: expected:\n%v\nsaw:\n%v\n", test.description, expectNewNode.Annotations, new_node.Annotations)
}
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, new_node)}, nil
case m.isFor("PUT", "/nodes/node-name"):
tainted = true tainted = true
data, err := ioutil.ReadAll(req.Body) data, err := ioutil.ReadAll(req.Body)
if err != nil { if err != nil {