func TestDelete(t *testing.T) { ctx := api.NewDefaultContext() storage, fakeEtcdClient := newStorage(t) test := resttest.New(t, storage, fakeEtcdClient.SetError) endpoints := validChangedEndpoints() key, _ := storage.KeyFunc(ctx, endpoints.Name) createFn := func() runtime.Object { fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, endpoints), ModifiedIndex: 1, }, }, } return endpoints } gracefulSetFn := func() bool { if fakeEtcdClient.Data[key].R.Node == nil { return false } return fakeEtcdClient.Data[key].R.Node.TTL == 30 } test.TestDeleteNoGraceful(createFn, gracefulSetFn) }
func TestDelete(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage := NewStorage(helper, nil).Pod test := resttest.New(t, storage, fakeEtcdClient.SetError) createFn := func() runtime.Object { pod := validChangedPod() fakeEtcdClient.Data["/registry/pods/default/foo"] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, pod), ModifiedIndex: 1, }, }, } return pod } gracefulSetFn := func() bool { if fakeEtcdClient.Data["/registry/pods/default/foo"].R.Node == nil { return false } return fakeEtcdClient.Data["/registry/pods/default/foo"].R.Node.TTL == 30 } test.TestDelete(createFn, gracefulSetFn) }
func TestDelete(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) createFn := func() runtime.Object { rc := validController rc.ResourceVersion = "1" fakeClient.Data["/registry/controllers/default/foo"] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, &rc), ModifiedIndex: 1, }, }, } return &rc } gracefulSetFn := func() bool { // If the controller is still around after trying to delete either the delete // failed, or we're deleting it gracefully. if fakeClient.Data["/registry/controllers/default/foo"].R.Node != nil { return true } return false } test.TestDelete(createFn, gracefulSetFn) }
func TestDelete(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage := NewStorage(etcdStorage, nil).Pod ctx := api.NewDefaultContext() key, _ := storage.Etcd.KeyFunc(ctx, "foo") key = etcdtest.AddPrefix(key) test := resttest.New(t, storage, fakeEtcdClient.SetError) createFn := func() runtime.Object { pod := validChangedPod() fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, pod), ModifiedIndex: 1, }, }, } return pod } gracefulSetFn := func() bool { if fakeEtcdClient.Data[key].R.Node == nil { return false } return fakeEtcdClient.Data[key].R.Node.TTL == 30 } test.TestDelete(createFn, gracefulSetFn) }
func TestDelete(t *testing.T) { ctx := api.NewDefaultContext() storage, _, fakeEtcdClient, _ := newStorage(t) test := resttest.New(t, storage, fakeEtcdClient.SetError) pv := validChangedPersistentVolumeClaim() key, _ := storage.KeyFunc(ctx, pv.Name) key = etcdtest.AddPrefix(key) createFn := func() runtime.Object { fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, pv), ModifiedIndex: 1, }, }, } return pv } gracefulSetFn := func() bool { if fakeEtcdClient.Data[key].R.Node == nil { return false } return fakeEtcdClient.Data[key].R.Node.TTL == 30 } test.TestDeleteNoGraceful(createFn, gracefulSetFn) }
func TestUpdate(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage := NewStorage(etcdStorage) test := resttest.New(t, storage, fakeEtcdClient.SetError) key, err := storage.KeyFunc(test.TestContext(), "foo") if err != nil { t.Fatal(err) } key = etcdtest.AddPrefix(key) fakeEtcdClient.ExpectNotFoundGet(key) fakeEtcdClient.ChangeIndex = 2 secret := validNewSecret("foo") existing := validNewSecret("exists") existing.Namespace = test.TestNamespace() obj, err := storage.Create(test.TestContext(), existing) if err != nil { t.Fatalf("unable to create object: %v", err) } older := obj.(*api.Secret) older.ResourceVersion = "1" test.TestUpdate( secret, existing, older, ) }
func TestDelete(t *testing.T) { ctx := api.NewDefaultContext() storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) key, _ := makeControllerKey(ctx, validController.Name) key = etcdtest.AddPrefix(key) createFn := func() runtime.Object { rc := validController rc.ResourceVersion = "1" fakeClient.Data[key] = tools.EtcdResponseWithError{ R: &etcd.Response{ Node: &etcd.Node{ Value: runtime.EncodeOrDie(latest.Codec, &rc), ModifiedIndex: 1, }, }, } return &rc } gracefulSetFn := func() bool { // If the controller is still around after trying to delete either the delete // failed, or we're deleting it gracefully. if fakeClient.Data[key].R.Node != nil { return true } return false } test.TestDelete(createFn, gracefulSetFn) }
func TestCreate(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage := NewREST(helper) test := resttest.New(t, storage, fakeEtcdClient.SetError) template := validNew() template.ObjectMeta = kapi.ObjectMeta{} test.TestCreate( // valid template, // invalid &api.Template{}, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage := NewREST(helper) test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope() image := validNewImage() image.ObjectMeta = kapi.ObjectMeta{GenerateName: "foo"} test.TestCreate( // valid image, // invalid &api.Image{}, ) }
func TestCreate(t *testing.T) { storage, _, fakeEtcdClient, _ := newStorage(t) test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope() pv := validNewPersistentVolume("foo") pv.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} test.TestCreate( // valid pv, // invalid &api.PersistentVolume{ ObjectMeta: api.ObjectMeta{Name: "*BadName!"}, }, ) }
func TestCreate(t *testing.T) { storage, fakeEtcdClient := newStorage(t) test := resttest.New(t, storage, fakeEtcdClient.SetError) node := validNewNode() node.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid node, // invalid &api.Node{ ObjectMeta: api.ObjectMeta{Name: "_-a123-a_"}, }, ) }
func TestCreate(t *testing.T) { storage, fakeEtcdClient := newStorage(t) test := resttest.New(t, storage, fakeEtcdClient.SetError) endpoints := validNewEndpoints() endpoints.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid endpoints, // invalid &api.Endpoints{ ObjectMeta: api.ObjectMeta{Name: "_-a123-a_"}, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage := NewREST(helper) test := resttest.New(t, storage, fakeEtcdClient.SetError) namespace := validNewNamespace() namespace.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid namespace, // invalid &api.Namespace{ ObjectMeta: api.ObjectMeta{Namespace: "nope"}, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage, _ := NewStorage(etcdStorage) test := resttest.New(t, storage, fakeEtcdClient.SetError) resourcequota := validNewResourceQuota() resourcequota.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid resourcequota, // invalid &api.ResourceQuota{ ObjectMeta: api.ObjectMeta{Name: "_-a123-a_"}, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage := NewREST(helper) test := resttest.New(t, storage, fakeEtcdClient.SetError) pod := validNewPodTemplate("foo") pod.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid pod, // invalid &api.PodTemplate{ Template: api.PodTemplateSpec{}, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage := NewStorage(etcdStorage) test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope() scc := validNewSecurityContextConstraints("foo") scc.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"} test.TestCreate( // valid scc, // invalid &api.SecurityContextConstraints{ ObjectMeta: api.ObjectMeta{Name: "name with spaces"}, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage, _, _ := NewStorage(etcdStorage) test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope() namespace := validNewNamespace() namespace.ObjectMeta = api.ObjectMeta{GenerateName: "foo"} test.TestCreate( // valid namespace, // invalid &api.Namespace{ ObjectMeta: api.ObjectMeta{Name: "bad value"}, }, ) }
func TestCreate(t *testing.T) { registry, _, fakeEtcdClient, _ := newStorage(t) test := resttest.New(t, registry, fakeEtcdClient.SetError) pv := validNewPersistentVolumeClaim("foo", api.NamespaceDefault) pv.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid pv, // invalid &api.PersistentVolumeClaim{ ObjectMeta: api.ObjectMeta{Name: "*BadName!"}, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage := NewStorage(helper) test := resttest.New(t, storage, fakeEtcdClient.SetError) serviceAccount := validNewServiceAccount("foo") serviceAccount.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"} test.TestCreate( // valid serviceAccount, // invalid &api.ServiceAccount{}, &api.ServiceAccount{ ObjectMeta: api.ObjectMeta{Name: "name with spaces"}, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage := NewStorage(etcdStorage, nil).Pod test := resttest.New(t, storage, fakeEtcdClient.SetError) pod := validNewPod() pod.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid pod, // invalid &api.Pod{ Spec: api.PodSpec{ Containers: []api.Container{}, }, }, ) }
func TestCreate(t *testing.T) { registry := registrytest.NewMinionRegistry([]string{"foo", "bar"}, api.NodeResources{}) test := resttest.New(t, NewREST(registry), registry.SetError).ClusterScope() test.TestCreate( // valid &api.Node{ Status: api.NodeStatus{ Addresses: []api.NodeAddress{ {Type: api.NodeLegacyHostIP, Address: "something"}, }, }, }, // invalid &api.Node{ ObjectMeta: api.ObjectMeta{ Labels: invalidSelector, }, }) }
func TestCreate(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage, _, _ := NewREST(helper) cache := &fakeCache{statusToReturn: &api.PodStatus{}} storage = storage.WithPodStatus(cache) test := resttest.New(t, storage, fakeEtcdClient.SetError) pod := validNewPod() pod.ObjectMeta = api.ObjectMeta{} test.TestCreate( // valid pod, // invalid &api.Pod{ Spec: api.PodSpec{ Containers: []api.Container{}, }, }, ) }
func TestCreate(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage := NewStorage(etcdStorage) test := resttest.New(t, storage, fakeEtcdClient.SetError) secret := validNewSecret("foo") secret.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"} test.TestCreate( // valid secret, // invalid &api.Secret{}, &api.Secret{ ObjectMeta: api.ObjectMeta{Name: "name"}, Data: map[string][]byte{"name with spaces": []byte("")}, }, &api.Secret{ ObjectMeta: api.ObjectMeta{Name: "name"}, Data: map[string][]byte{"~.dotfile": []byte("")}, }, ) }
func TestCreate(t *testing.T) { rest, registry := NewTestREST(t, nil) test := resttest.New(t, rest, registry.SetError) test.TestCreate( // valid &api.Service{ Spec: api.ServiceSpec{ Selector: map[string]string{"bar": "baz"}, ClusterIP: "None", SessionAffinity: "None", Type: api.ServiceTypeClusterIP, Ports: []api.ServicePort{{ Port: 6502, Protocol: api.ProtocolTCP, TargetPort: util.NewIntOrStringFromInt(6502), }}, }, }, // invalid &api.Service{ Spec: api.ServiceSpec{}, }, // invalid &api.Service{ Spec: api.ServiceSpec{ Selector: map[string]string{"bar": "baz"}, ClusterIP: "invalid", SessionAffinity: "None", Type: api.ServiceTypeClusterIP, Ports: []api.ServicePort{{ Port: 6502, Protocol: api.ProtocolTCP, TargetPort: util.NewIntOrStringFromInt(6502), }}, }, }, ) }
func TestUpdate(t *testing.T) { fakeEtcdClient, helper := newHelper(t) storage := NewREST(helper) test := resttest.New(t, storage, fakeEtcdClient.SetError) fakeEtcdClient.ExpectNotFoundGet("/registry/podtemplates/default/foo") fakeEtcdClient.ChangeIndex = 2 pod := validNewPodTemplate("foo") existing := validNewPodTemplate("exists") obj, err := storage.Create(api.NewDefaultContext(), existing) if err != nil { t.Fatalf("unable to create object: %v", err) } older := obj.(*api.PodTemplate) older.ResourceVersion = "1" test.TestUpdate( pod, existing, older, ) }
func TestCreate(t *testing.T) { storage, fakeClient := newStorage(t) test := resttest.New(t, storage, fakeClient.SetError) test.TestCreate( // valid &api.ReplicationController{ Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{"a": "b"}, Template: &validPodTemplate.Template, }, }, // invalid &api.ReplicationController{ Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{}, Template: &validPodTemplate.Template, }, }, ) }
func TestCreate(t *testing.T) { registry := ®istrytest.ControllerRegistry{} test := resttest.New(t, NewREST(registry, nil), registry.SetError) test.TestCreate( // valid &api.ReplicationController{ Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{"a": "b"}, Template: &validPodTemplate.Spec, }, }, // invalid &api.ReplicationController{ Spec: api.ReplicationControllerSpec{ Replicas: 2, Selector: map[string]string{}, Template: &validPodTemplate.Spec, }, }, ) }
func TestUpdate(t *testing.T) { fakeEtcdClient, etcdStorage := newEtcdStorage(t) storage := NewStorage(etcdStorage) test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope() key := etcdtest.AddPrefix("securitycontextconstraints/foo") fakeEtcdClient.ExpectNotFoundGet(key) fakeEtcdClient.ChangeIndex = 2 scc := validNewSecurityContextConstraints("foo") existing := validNewSecurityContextConstraints("exists") obj, err := storage.Create(api.NewDefaultContext(), existing) if err != nil { t.Fatalf("unable to create object: %v", err) } older := obj.(*api.SecurityContextConstraints) older.ResourceVersion = "1" test.TestUpdate( scc, existing, older, ) }
func TestCreate(t *testing.T) { rest, registry := NewTestREST(t, nil) rest.portalMgr.randomAttempts = 0 test := resttest.New(t, rest, registry.SetError) test.TestCreate( // valid &api.Service{ Spec: api.ServiceSpec{ Selector: map[string]string{"bar": "baz"}, PortalIP: "None", SessionAffinity: "None", Ports: []api.ServicePort{{ Port: 6502, Protocol: api.ProtocolTCP, }}, }, }, // invalid &api.Service{ Spec: api.ServiceSpec{}, }, // invalid &api.Service{ Spec: api.ServiceSpec{ Selector: map[string]string{"bar": "baz"}, PortalIP: "invalid", SessionAffinity: "None", Ports: []api.ServicePort{{ Port: 6502, Protocol: api.ProtocolTCP, }}, }, }, ) }
func TestCreate(t *testing.T) { registry := registrytest.NewServiceRegistry() fakeCloud := &cloud.FakeCloud{} machines := []string{"foo", "bar", "baz"} rest := NewREST(registry, fakeCloud, registrytest.NewMinionRegistry(machines, api.NodeResources{}), makeIPNet(t), "kubernetes") rest.portalMgr.randomAttempts = 0 test := resttest.New(t, rest, registry.SetError) test.TestCreate( // valid &api.Service{ Spec: api.ServiceSpec{ Selector: map[string]string{"bar": "baz"}, Port: 6502, Protocol: "TCP", SessionAffinity: "None", }, }, // invalid &api.Service{ Spec: api.ServiceSpec{}, }, ) }