diff --git a/cmd/integration/integration.go b/cmd/integration/integration.go index 7a2da6477c..9ed610ed9f 100644 --- a/cmd/integration/integration.go +++ b/cmd/integration/integration.go @@ -308,86 +308,6 @@ func podRunning(c *client.Client, podNamespace string, podName string) wait.Cond } } -func runAPIVersionsTest(c *client.Client) { - g, err := c.ServerGroups() - clientVersion := c.APIVersion().String() - if err != nil { - glog.Fatalf("Failed to get api versions: %v", err) - } - versions := unversioned.ExtractGroupVersions(g) - - // Verify that the server supports the API version used by the client. - for _, version := range versions { - if version == clientVersion { - glog.Infof("Version test passed") - return - } - } - glog.Fatalf("Server does not support APIVersion used by client. Server supported APIVersions: '%v', client APIVersion: '%v'", versions, clientVersion) -} - -func runSelfLinkTestOnNamespace(c *client.Client, namespace string) { - svcBody := api.Service{ - ObjectMeta: api.ObjectMeta{ - Name: "selflinktest", - Namespace: namespace, - Labels: map[string]string{ - "name": "selflinktest", - }, - }, - Spec: api.ServiceSpec{ - // This is here because validation requires it. - Selector: map[string]string{ - "foo": "bar", - }, - Ports: []api.ServicePort{{ - Port: 12345, - Protocol: "TCP", - }}, - SessionAffinity: "None", - }, - } - services := c.Services(namespace) - svc, err := services.Create(&svcBody) - if err != nil { - glog.Fatalf("Failed creating selflinktest service: %v", err) - } - err = c.Get().RequestURI(svc.SelfLink).Do().Into(svc) - if err != nil { - glog.Fatalf("Failed listing service with supplied self link '%v': %v", svc.SelfLink, err) - } - - svcList, err := services.List(api.ListOptions{}) - if err != nil { - glog.Fatalf("Failed listing services: %v", err) - } - - err = c.Get().RequestURI(svcList.SelfLink).Do().Into(svcList) - if err != nil { - glog.Fatalf("Failed listing services with supplied self link '%v': %v", svcList.SelfLink, err) - } - - found := false - for i := range svcList.Items { - item := &svcList.Items[i] - if item.Name != "selflinktest" { - continue - } - found = true - err = c.Get().RequestURI(item.SelfLink).Do().Into(svc) - if err != nil { - glog.Fatalf("Failed listing service with supplied self link '%v': %v", item.SelfLink, err) - } - break - } - if !found { - glog.Fatalf("never found selflinktest service in namespace %s", namespace) - } - glog.Infof("Self link test passed in namespace %s", namespace) - - // TODO: Should test PUT at some point, too. -} - func runAtomicPutTest(c *client.Client) { svcBody := api.Service{ TypeMeta: unversioned.TypeMeta{ @@ -820,12 +740,7 @@ func main() { testFuncs := []testFunc{ runAtomicPutTest, runPatchTest, - runAPIVersionsTest, runMasterServiceTest, - func(c *client.Client) { - runSelfLinkTestOnNamespace(c, api.NamespaceDefault) - runSelfLinkTestOnNamespace(c, "other") - }, } // Only run at most maxConcurrency tests in parallel. diff --git a/test/integration/client_test.go b/test/integration/client_test.go index 58c1bfed19..baa0f7a864 100644 --- a/test/integration/client_test.go +++ b/test/integration/client_test.go @@ -29,6 +29,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/testapi" + "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/client/restclient" client "k8s.io/kubernetes/pkg/client/unversioned" "k8s.io/kubernetes/pkg/labels" @@ -109,6 +110,29 @@ func TestClient(t *testing.T) { } } +func TestAPIVersions(t *testing.T) { + _, s := framework.RunAMaster(t) + defer s.Close() + + framework.DeleteAllEtcdKeys() + c := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}) + + clientVersion := c.APIVersion().String() + g, err := c.ServerGroups() + if err != nil { + t.Fatalf("Failed to get api versions: %v", err) + } + versions := unversioned.ExtractGroupVersions(g) + + // Verify that the server supports the API version used by the client. + for _, version := range versions { + if version == clientVersion { + return + } + } + t.Errorf("Server does not support APIVersion used by client. Server supported APIVersions: '%v', client APIVersion: '%v'", versions, clientVersion) +} + func TestSingleWatch(t *testing.T) { _, s := framework.RunAMaster(t) defer s.Close() @@ -397,3 +421,64 @@ func TestMultiWatch(t *testing.T) { log.Printf("all watches ended") t.Errorf("durations: %v", dur) } + +func runSelfLinkTestOnNamespace(t *testing.T, c *client.Client, namespace string) { + podBody := api.Pod{ + ObjectMeta: api.ObjectMeta{ + Name: "selflinktest", + Namespace: namespace, + Labels: map[string]string{ + "name": "selflinktest", + }, + }, + Spec: api.PodSpec{ + Containers: []api.Container{ + {Name: "name", Image: "image"}, + }, + }, + } + pod, err := c.Pods(namespace).Create(&podBody) + if err != nil { + t.Fatalf("Failed creating selflinktest pod: %v", err) + } + if err = c.Get().RequestURI(pod.SelfLink).Do().Into(pod); err != nil { + t.Errorf("Failed listing pod with supplied self link '%v': %v", pod.SelfLink, err) + } + + podList, err := c.Pods(namespace).List(api.ListOptions{}) + if err != nil { + t.Errorf("Failed listing pods: %v", err) + } + + if err = c.Get().RequestURI(podList.SelfLink).Do().Into(podList); err != nil { + t.Errorf("Failed listing pods with supplied self link '%v': %v", podList.SelfLink, err) + } + + found := false + for i := range podList.Items { + item := &podList.Items[i] + if item.Name != "selflinktest" { + continue + } + found = true + err = c.Get().RequestURI(item.SelfLink).Do().Into(pod) + if err != nil { + t.Errorf("Failed listing pod with supplied self link '%v': %v", item.SelfLink, err) + } + break + } + if !found { + t.Errorf("never found selflinktest pod in namespace %s", namespace) + } +} + +func TestSelfLinkOnNamespace(t *testing.T) { + _, s := framework.RunAMaster(t) + defer s.Close() + + framework.DeleteAllEtcdKeys() + c := client.NewOrDie(&restclient.Config{Host: s.URL, ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}}) + + runSelfLinkTestOnNamespace(t, c, api.NamespaceDefault) + runSelfLinkTestOnNamespace(t, c, "other-namespace") +}