mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-23 19:08:44 +00:00
Update generic etcd tests for cluster-scoped objects
This commit is contained in:
@@ -57,6 +57,24 @@ func (t *Tester) ClusterScope() *Tester {
|
|||||||
return t
|
return t
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestNamespace returns the namespace that will be used when creating contexts.
|
||||||
|
// Returns NamespaceNone for cluster-scoped objects.
|
||||||
|
func (t *Tester) TestNamespace() string {
|
||||||
|
if t.clusterScope {
|
||||||
|
return api.NamespaceNone
|
||||||
|
}
|
||||||
|
return "test"
|
||||||
|
}
|
||||||
|
|
||||||
|
// TestContext returns a namespaced context that will be used when making storage calls.
|
||||||
|
// Namespace is determined by TestNamespace()
|
||||||
|
func (t *Tester) TestContext() api.Context {
|
||||||
|
if t.clusterScope {
|
||||||
|
return api.NewContext()
|
||||||
|
}
|
||||||
|
return api.WithNamespace(api.NewContext(), t.TestNamespace())
|
||||||
|
}
|
||||||
|
|
||||||
func copyOrDie(obj runtime.Object) runtime.Object {
|
func copyOrDie(obj runtime.Object) runtime.Object {
|
||||||
out, err := api.Scheme.Copy(obj)
|
out, err := api.Scheme.Copy(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -70,7 +88,9 @@ func (t *Tester) TestCreate(valid runtime.Object, invalid ...runtime.Object) {
|
|||||||
t.TestCreateGeneratesName(copyOrDie(valid))
|
t.TestCreateGeneratesName(copyOrDie(valid))
|
||||||
t.TestCreateGeneratesNameReturnsServerTimeout(copyOrDie(valid))
|
t.TestCreateGeneratesNameReturnsServerTimeout(copyOrDie(valid))
|
||||||
if t.clusterScope {
|
if t.clusterScope {
|
||||||
t.TestCreateRejectsNamespace(copyOrDie(valid))
|
t.TestCreateDiscardsObjectNamespace(copyOrDie(valid))
|
||||||
|
t.TestCreateIgnoresContextNamespace(copyOrDie(valid))
|
||||||
|
t.TestCreateIgnoresMismatchedNamespace(copyOrDie(valid))
|
||||||
} else {
|
} else {
|
||||||
t.TestCreateRejectsMismatchedNamespace(copyOrDie(valid))
|
t.TestCreateRejectsMismatchedNamespace(copyOrDie(valid))
|
||||||
}
|
}
|
||||||
@@ -87,7 +107,7 @@ func (t *Tester) TestCreateResetsUserData(valid runtime.Object) {
|
|||||||
objectMeta.UID = "bad-uid"
|
objectMeta.UID = "bad-uid"
|
||||||
objectMeta.CreationTimestamp = now
|
objectMeta.CreationTimestamp = now
|
||||||
|
|
||||||
obj, err := t.storage.(rest.Creater).Create(api.NewDefaultContext(), valid)
|
obj, err := t.storage.(rest.Creater).Create(t.TestContext(), valid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@@ -105,15 +125,11 @@ func (t *Tester) TestCreateHasMetadata(valid runtime.Object) {
|
|||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
||||||
}
|
}
|
||||||
|
|
||||||
objectMeta.Name = "test"
|
objectMeta.Name = ""
|
||||||
objectMeta.Namespace = api.NamespaceDefault
|
objectMeta.GenerateName = "test-"
|
||||||
context := api.NewDefaultContext()
|
objectMeta.Namespace = t.TestNamespace()
|
||||||
if t.clusterScope {
|
|
||||||
objectMeta.Namespace = api.NamespaceNone
|
|
||||||
context = api.NewContext()
|
|
||||||
}
|
|
||||||
|
|
||||||
obj, err := t.storage.(rest.Creater).Create(context, valid)
|
obj, err := t.storage.(rest.Creater).Create(t.TestContext(), valid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@@ -131,9 +147,10 @@ func (t *Tester) TestCreateGeneratesName(valid runtime.Object) {
|
|||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
objectMeta.Name = ""
|
||||||
objectMeta.GenerateName = "test-"
|
objectMeta.GenerateName = "test-"
|
||||||
|
|
||||||
_, err = t.storage.(rest.Creater).Create(api.NewDefaultContext(), valid)
|
_, err = t.storage.(rest.Creater).Create(t.TestContext(), valid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@@ -148,9 +165,10 @@ func (t *Tester) TestCreateGeneratesNameReturnsServerTimeout(valid runtime.Objec
|
|||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
objectMeta.Name = ""
|
||||||
objectMeta.GenerateName = "test-"
|
objectMeta.GenerateName = "test-"
|
||||||
t.withStorageError(errors.NewAlreadyExists("kind", "thing"), func() {
|
t.withStorageError(errors.NewAlreadyExists("kind", "thing"), func() {
|
||||||
_, err := t.storage.(rest.Creater).Create(api.NewDefaultContext(), valid)
|
_, err := t.storage.(rest.Creater).Create(t.TestContext(), valid)
|
||||||
if err == nil || !errors.IsServerTimeout(err) {
|
if err == nil || !errors.IsServerTimeout(err) {
|
||||||
t.Fatalf("Unexpected error: %v", err)
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
@@ -159,7 +177,7 @@ func (t *Tester) TestCreateGeneratesNameReturnsServerTimeout(valid runtime.Objec
|
|||||||
|
|
||||||
func (t *Tester) TestCreateInvokesValidation(invalid ...runtime.Object) {
|
func (t *Tester) TestCreateInvokesValidation(invalid ...runtime.Object) {
|
||||||
for i, obj := range invalid {
|
for i, obj := range invalid {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := t.TestContext()
|
||||||
_, err := t.storage.(rest.Creater).Create(ctx, obj)
|
_, err := t.storage.(rest.Creater).Create(ctx, obj)
|
||||||
if !errors.IsInvalid(err) {
|
if !errors.IsInvalid(err) {
|
||||||
t.Errorf("%d: Expected to get an invalid resource error, got %v", i, err)
|
t.Errorf("%d: Expected to get an invalid resource error, got %v", i, err)
|
||||||
@@ -175,27 +193,76 @@ func (t *Tester) TestCreateRejectsMismatchedNamespace(valid runtime.Object) {
|
|||||||
|
|
||||||
objectMeta.Namespace = "not-default"
|
objectMeta.Namespace = "not-default"
|
||||||
|
|
||||||
_, err = t.storage.(rest.Creater).Create(api.NewDefaultContext(), valid)
|
_, err = t.storage.(rest.Creater).Create(t.TestContext(), valid)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Expected an error, but we didn't get one")
|
t.Errorf("Expected an error, but we didn't get one")
|
||||||
} else if strings.Contains(err.Error(), "Controller.Namespace does not match the provided context") {
|
} else if !strings.Contains(err.Error(), "does not match the namespace sent on the request") {
|
||||||
t.Errorf("Expected 'Controller.Namespace does not match the provided context' error, got '%v'", err)
|
t.Errorf("Expected 'does not match the namespace sent on the request' error, got '%v'", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tester) TestCreateRejectsNamespace(valid runtime.Object) {
|
func (t *Tester) TestCreateDiscardsObjectNamespace(valid runtime.Object) {
|
||||||
objectMeta, err := api.ObjectMetaFor(valid)
|
objectMeta, err := api.ObjectMetaFor(valid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Ignore non-empty namespace in object meta
|
||||||
objectMeta.Namespace = "not-default"
|
objectMeta.Namespace = "not-default"
|
||||||
|
|
||||||
_, err = t.storage.(rest.Creater).Create(api.NewDefaultContext(), valid)
|
// Ideally, we'd get an error back here, but at least verify the namespace wasn't persisted
|
||||||
if err == nil {
|
created, err := t.storage.(rest.Creater).Create(t.TestContext(), copyOrDie(valid))
|
||||||
t.Errorf("Expected an error, but we didn't get one")
|
if err != nil {
|
||||||
} else if strings.Contains(err.Error(), "Controller.Namespace does not match the provided context") {
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
t.Errorf("Expected 'Controller.Namespace does not match the provided context' error, got '%v'", err)
|
}
|
||||||
|
createdObjectMeta, err := api.ObjectMetaFor(created)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, created)
|
||||||
|
}
|
||||||
|
if createdObjectMeta.Namespace != api.NamespaceNone {
|
||||||
|
t.Errorf("Expected empty namespace on created object, got '%v'", createdObjectMeta.Namespace)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Tester) TestCreateIgnoresContextNamespace(valid runtime.Object) {
|
||||||
|
// Ignore non-empty namespace in context
|
||||||
|
ctx := api.WithNamespace(api.NewContext(), "not-default2")
|
||||||
|
|
||||||
|
// Ideally, we'd get an error back here, but at least verify the namespace wasn't persisted
|
||||||
|
created, err := t.storage.(rest.Creater).Create(ctx, copyOrDie(valid))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
createdObjectMeta, err := api.ObjectMetaFor(created)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, created)
|
||||||
|
}
|
||||||
|
if createdObjectMeta.Namespace != api.NamespaceNone {
|
||||||
|
t.Errorf("Expected empty namespace on created object, got '%v'", createdObjectMeta.Namespace)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (t *Tester) TestCreateIgnoresMismatchedNamespace(valid runtime.Object) {
|
||||||
|
objectMeta, err := api.ObjectMetaFor(valid)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, valid)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ignore non-empty namespace in object meta
|
||||||
|
objectMeta.Namespace = "not-default"
|
||||||
|
ctx := api.WithNamespace(api.NewContext(), "not-default2")
|
||||||
|
|
||||||
|
// Ideally, we'd get an error back here, but at least verify the namespace wasn't persisted
|
||||||
|
created, err := t.storage.(rest.Creater).Create(ctx, copyOrDie(valid))
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unexpected error: %v", err)
|
||||||
|
}
|
||||||
|
createdObjectMeta, err := api.ObjectMetaFor(created)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, created)
|
||||||
|
}
|
||||||
|
if createdObjectMeta.Namespace != api.NamespaceNone {
|
||||||
|
t.Errorf("Expected empty namespace on created object, got '%v'", createdObjectMeta.Namespace)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -205,7 +272,7 @@ func (t *Tester) TestUpdate(valid runtime.Object, existing, older runtime.Object
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tester) TestUpdateFailsOnNotFound(valid runtime.Object) {
|
func (t *Tester) TestUpdateFailsOnNotFound(valid runtime.Object) {
|
||||||
_, _, err := t.storage.(rest.Updater).Update(api.NewDefaultContext(), valid)
|
_, _, err := t.storage.(rest.Updater).Update(t.TestContext(), valid)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Expected an error, but we didn't get one")
|
t.Errorf("Expected an error, but we didn't get one")
|
||||||
} else if !errors.IsNotFound(err) {
|
} else if !errors.IsNotFound(err) {
|
||||||
@@ -214,7 +281,7 @@ func (t *Tester) TestUpdateFailsOnNotFound(valid runtime.Object) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tester) TestUpdateFailsOnVersion(older runtime.Object) {
|
func (t *Tester) TestUpdateFailsOnVersion(older runtime.Object) {
|
||||||
_, _, err := t.storage.(rest.Updater).Update(api.NewDefaultContext(), older)
|
_, _, err := t.storage.(rest.Updater).Update(t.TestContext(), older)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Errorf("Expected an error, but we didn't get one")
|
t.Errorf("Expected an error, but we didn't get one")
|
||||||
} else if !errors.IsConflict(err) {
|
} else if !errors.IsConflict(err) {
|
||||||
@@ -228,7 +295,7 @@ func (t *Tester) TestDeleteInvokesValidation(invalid ...runtime.Object) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, obj)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, obj)
|
||||||
}
|
}
|
||||||
ctx := api.NewDefaultContext()
|
ctx := t.TestContext()
|
||||||
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, nil)
|
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, nil)
|
||||||
if !errors.IsInvalid(err) {
|
if !errors.IsInvalid(err) {
|
||||||
t.Errorf("%d: Expected to get an invalid resource error, got %v", i, err)
|
t.Errorf("%d: Expected to get an invalid resource error, got %v", i, err)
|
||||||
@@ -250,7 +317,7 @@ func (t *Tester) TestDeleteNonExist(createFn func() runtime.Object) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
||||||
}
|
}
|
||||||
context := api.NewDefaultContext()
|
context := t.TestContext()
|
||||||
|
|
||||||
t.withStorageError(&etcd.EtcdError{ErrorCode: tools.EtcdErrorCodeNotFound}, func() {
|
t.withStorageError(&etcd.EtcdError{ErrorCode: tools.EtcdErrorCodeNotFound}, func() {
|
||||||
_, err := t.storage.(rest.GracefulDeleter).Delete(context, objectMeta.Name, nil)
|
_, err := t.storage.(rest.GracefulDeleter).Delete(context, objectMeta.Name, nil)
|
||||||
@@ -271,7 +338,7 @@ func (t *Tester) TestDeleteNoGraceful(createFn func() runtime.Object, wasGracefu
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
||||||
}
|
}
|
||||||
ctx := api.WithNamespace(api.NewContext(), objectMeta.Namespace)
|
ctx := api.WithNamespace(t.TestContext(), objectMeta.Namespace)
|
||||||
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, api.NewDeleteOptions(10))
|
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, api.NewDeleteOptions(10))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
@@ -290,7 +357,7 @@ func (t *Tester) TestDeleteGracefulHasDefault(existing runtime.Object, expectedG
|
|||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := api.WithNamespace(api.NewContext(), objectMeta.Namespace)
|
ctx := api.WithNamespace(t.TestContext(), objectMeta.Namespace)
|
||||||
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, &api.DeleteOptions{})
|
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, &api.DeleteOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
@@ -309,7 +376,7 @@ func (t *Tester) TestDeleteGracefulUsesZeroOnNil(existing runtime.Object, expect
|
|||||||
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
t.Fatalf("object does not have ObjectMeta: %v\n%#v", err, existing)
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx := api.WithNamespace(api.NewContext(), objectMeta.Namespace)
|
ctx := api.WithNamespace(t.TestContext(), objectMeta.Namespace)
|
||||||
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, nil)
|
_, err = t.storage.(rest.GracefulDeleter).Delete(ctx, objectMeta.Name, nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
|
@@ -88,9 +88,9 @@ func validChangedNode() *api.Node {
|
|||||||
|
|
||||||
func TestCreate(t *testing.T) {
|
func TestCreate(t *testing.T) {
|
||||||
storage, fakeEtcdClient := newStorage(t)
|
storage, fakeEtcdClient := newStorage(t)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope()
|
||||||
node := validNewNode()
|
node := validNewNode()
|
||||||
node.ObjectMeta = api.ObjectMeta{}
|
node.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
|
||||||
test.TestCreate(
|
test.TestCreate(
|
||||||
// valid
|
// valid
|
||||||
node,
|
node,
|
||||||
@@ -102,9 +102,9 @@ func TestCreate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDelete(t *testing.T) {
|
func TestDelete(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, fakeEtcdClient := newStorage(t)
|
storage, fakeEtcdClient := newStorage(t)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope()
|
||||||
|
|
||||||
node := validChangedNode()
|
node := validChangedNode()
|
||||||
key, _ := storage.KeyFunc(ctx, node.Name)
|
key, _ := storage.KeyFunc(ctx, node.Name)
|
||||||
|
@@ -71,15 +71,15 @@ func TestStorage(t *testing.T) {
|
|||||||
func TestCreate(t *testing.T) {
|
func TestCreate(t *testing.T) {
|
||||||
fakeEtcdClient, helper := newHelper(t)
|
fakeEtcdClient, helper := newHelper(t)
|
||||||
storage, _, _ := NewStorage(helper)
|
storage, _, _ := NewStorage(helper)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope()
|
||||||
namespace := validNewNamespace()
|
namespace := validNewNamespace()
|
||||||
namespace.ObjectMeta = api.ObjectMeta{}
|
namespace.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
|
||||||
test.TestCreate(
|
test.TestCreate(
|
||||||
// valid
|
// valid
|
||||||
namespace,
|
namespace,
|
||||||
// invalid
|
// invalid
|
||||||
&api.Namespace{
|
&api.Namespace{
|
||||||
ObjectMeta: api.ObjectMeta{Namespace: "nope"},
|
ObjectMeta: api.ObjectMeta{Name: "bad value"},
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -97,13 +97,13 @@ func TestCreateSetsFields(t *testing.T) {
|
|||||||
fakeEtcdClient, helper := newHelper(t)
|
fakeEtcdClient, helper := newHelper(t)
|
||||||
storage, _, _ := NewStorage(helper)
|
storage, _, _ := NewStorage(helper)
|
||||||
namespace := validNewNamespace()
|
namespace := validNewNamespace()
|
||||||
_, err := storage.Create(api.NewDefaultContext(), namespace)
|
_, err := storage.Create(api.NewContext(), namespace)
|
||||||
if err != fakeEtcdClient.Err {
|
if err != fakeEtcdClient.Err {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
actual := &api.Namespace{}
|
actual := &api.Namespace{}
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
key, err := storage.Etcd.KeyFunc(ctx, "foo")
|
key, err := storage.Etcd.KeyFunc(ctx, "foo")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected key error: %v", err)
|
t.Fatalf("unexpected key error: %v", err)
|
||||||
@@ -166,7 +166,7 @@ func TestListNamespaceList(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
storage, _, _ := NewStorage(helper)
|
storage, _, _ := NewStorage(helper)
|
||||||
namespacesObj, err := storage.List(api.NewDefaultContext(), labels.Everything(), fields.Everything())
|
namespacesObj, err := storage.List(api.NewContext(), labels.Everything(), fields.Everything())
|
||||||
namespaces := namespacesObj.(*api.NamespaceList)
|
namespaces := namespacesObj.(*api.NamespaceList)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
@@ -214,7 +214,7 @@ func TestListNamespaceListSelection(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
storage, _, _ := NewStorage(helper)
|
storage, _, _ := NewStorage(helper)
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
table := []struct {
|
table := []struct {
|
||||||
label, field string
|
label, field string
|
||||||
expectedIDs util.StringSet
|
expectedIDs util.StringSet
|
||||||
@@ -285,7 +285,7 @@ func TestGet(t *testing.T) {
|
|||||||
expect := validNewNamespace()
|
expect := validNewNamespace()
|
||||||
expect.Status.Phase = api.NamespaceActive
|
expect.Status.Phase = api.NamespaceActive
|
||||||
storage, fakeEtcdClient, _ := newStorage(t)
|
storage, fakeEtcdClient, _ := newStorage(t)
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
key, err := storage.Etcd.KeyFunc(ctx, "foo")
|
key, err := storage.Etcd.KeyFunc(ctx, "foo")
|
||||||
key = etcdtest.AddPrefix(key)
|
key = etcdtest.AddPrefix(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -314,7 +314,7 @@ func TestDeleteNamespace(t *testing.T) {
|
|||||||
fakeEtcdClient, helper := newHelper(t)
|
fakeEtcdClient, helper := newHelper(t)
|
||||||
fakeEtcdClient.ChangeIndex = 1
|
fakeEtcdClient.ChangeIndex = 1
|
||||||
storage, _, _ := NewStorage(helper)
|
storage, _, _ := NewStorage(helper)
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
key, err := storage.Etcd.KeyFunc(ctx, "foo")
|
key, err := storage.Etcd.KeyFunc(ctx, "foo")
|
||||||
key = etcdtest.AddPrefix(key)
|
key = etcdtest.AddPrefix(key)
|
||||||
fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{
|
fakeEtcdClient.Data[key] = tools.EtcdResponseWithError{
|
||||||
@@ -331,7 +331,7 @@ func TestDeleteNamespace(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
_, err = storage.Delete(api.NewDefaultContext(), "foo", nil)
|
_, err = storage.Delete(api.NewContext(), "foo", nil)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
@@ -362,7 +362,7 @@ func TestDeleteNamespaceWithIncompleteFinalizers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
storage, _, _ := NewStorage(helper)
|
storage, _, _ := NewStorage(helper)
|
||||||
_, err := storage.Delete(api.NewDefaultContext(), "foo", nil)
|
_, err := storage.Delete(api.NewContext(), "foo", nil)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
t.Fatalf("expected error: %v", err)
|
t.Fatalf("expected error: %v", err)
|
||||||
}
|
}
|
||||||
@@ -392,7 +392,7 @@ func TestDeleteNamespaceWithCompleteFinalizers(t *testing.T) {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
storage, _, _ := NewStorage(helper)
|
storage, _, _ := NewStorage(helper)
|
||||||
_, err := storage.Delete(api.NewDefaultContext(), "foo", nil)
|
_, err := storage.Delete(api.NewContext(), "foo", nil)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unexpected error: %v", err)
|
t.Fatalf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
|
@@ -75,9 +75,9 @@ func validChangedPersistentVolume() *api.PersistentVolume {
|
|||||||
|
|
||||||
func TestCreate(t *testing.T) {
|
func TestCreate(t *testing.T) {
|
||||||
storage, _, fakeEtcdClient, _ := newStorage(t)
|
storage, _, fakeEtcdClient, _ := newStorage(t)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope()
|
||||||
pv := validNewPersistentVolume("foo")
|
pv := validNewPersistentVolume("foo")
|
||||||
pv.ObjectMeta = api.ObjectMeta{}
|
pv.ObjectMeta = api.ObjectMeta{GenerateName: "foo"}
|
||||||
test.TestCreate(
|
test.TestCreate(
|
||||||
// valid
|
// valid
|
||||||
pv,
|
pv,
|
||||||
@@ -89,9 +89,9 @@ func TestCreate(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDelete(t *testing.T) {
|
func TestDelete(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, _, fakeEtcdClient, _ := newStorage(t)
|
storage, _, fakeEtcdClient, _ := newStorage(t)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError).ClusterScope()
|
||||||
|
|
||||||
pv := validChangedPersistentVolume()
|
pv := validChangedPersistentVolume()
|
||||||
key, _ := storage.KeyFunc(ctx, pv.Name)
|
key, _ := storage.KeyFunc(ctx, pv.Name)
|
||||||
@@ -117,7 +117,7 @@ func TestDelete(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestEtcdListPersistentVolumes(t *testing.T) {
|
func TestEtcdListPersistentVolumes(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, _, fakeClient, _ := newStorage(t)
|
storage, _, fakeClient, _ := newStorage(t)
|
||||||
key := storage.KeyRootFunc(ctx)
|
key := storage.KeyRootFunc(ctx)
|
||||||
key = etcdtest.AddPrefix(key)
|
key = etcdtest.AddPrefix(key)
|
||||||
@@ -149,7 +149,7 @@ func TestEtcdListPersistentVolumes(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestEtcdGetPersistentVolumes(t *testing.T) {
|
func TestEtcdGetPersistentVolumes(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, _, fakeClient, _ := newStorage(t)
|
storage, _, fakeClient, _ := newStorage(t)
|
||||||
persistentVolume := validNewPersistentVolume("foo")
|
persistentVolume := validNewPersistentVolume("foo")
|
||||||
name := persistentVolume.Name
|
name := persistentVolume.Name
|
||||||
@@ -180,7 +180,7 @@ func TestEtcdGetPersistentVolumes(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestListEmptyPersistentVolumesList(t *testing.T) {
|
func TestListEmptyPersistentVolumesList(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, _, fakeClient, _ := newStorage(t)
|
storage, _, fakeClient, _ := newStorage(t)
|
||||||
fakeClient.ChangeIndex = 1
|
fakeClient.ChangeIndex = 1
|
||||||
key := storage.KeyRootFunc(ctx)
|
key := storage.KeyRootFunc(ctx)
|
||||||
@@ -204,7 +204,7 @@ func TestListEmptyPersistentVolumesList(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestListPersistentVolumesList(t *testing.T) {
|
func TestListPersistentVolumesList(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, _, fakeClient, _ := newStorage(t)
|
storage, _, fakeClient, _ := newStorage(t)
|
||||||
fakeClient.ChangeIndex = 1
|
fakeClient.ChangeIndex = 1
|
||||||
key := storage.KeyRootFunc(ctx)
|
key := storage.KeyRootFunc(ctx)
|
||||||
@@ -264,7 +264,7 @@ func TestPersistentVolumesDecode(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestEtcdUpdatePersistentVolumes(t *testing.T) {
|
func TestEtcdUpdatePersistentVolumes(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, _, fakeClient, _ := newStorage(t)
|
storage, _, fakeClient, _ := newStorage(t)
|
||||||
persistentVolume := validChangedPersistentVolume()
|
persistentVolume := validChangedPersistentVolume()
|
||||||
|
|
||||||
@@ -294,7 +294,7 @@ func TestEtcdUpdatePersistentVolumes(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDeletePersistentVolumes(t *testing.T) {
|
func TestDeletePersistentVolumes(t *testing.T) {
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
storage, _, fakeClient, _ := newStorage(t)
|
storage, _, fakeClient, _ := newStorage(t)
|
||||||
persistentVolume := validNewPersistentVolume("foo")
|
persistentVolume := validNewPersistentVolume("foo")
|
||||||
name := persistentVolume.Name
|
name := persistentVolume.Name
|
||||||
@@ -318,7 +318,7 @@ func TestDeletePersistentVolumes(t *testing.T) {
|
|||||||
|
|
||||||
func TestEtcdUpdateStatus(t *testing.T) {
|
func TestEtcdUpdateStatus(t *testing.T) {
|
||||||
storage, statusStorage, fakeClient, helper := newStorage(t)
|
storage, statusStorage, fakeClient, helper := newStorage(t)
|
||||||
ctx := api.NewDefaultContext()
|
ctx := api.NewContext()
|
||||||
fakeClient.TestIndex = true
|
fakeClient.TestIndex = true
|
||||||
|
|
||||||
key, _ := storage.KeyFunc(ctx, "foo")
|
key, _ := storage.KeyFunc(ctx, "foo")
|
||||||
|
@@ -80,13 +80,18 @@ func TestUpdate(t *testing.T) {
|
|||||||
fakeEtcdClient, helper := newHelper(t)
|
fakeEtcdClient, helper := newHelper(t)
|
||||||
storage := NewREST(helper)
|
storage := NewREST(helper)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
||||||
key := etcdtest.AddPrefix("podtemplates/default/foo")
|
key, err := storage.KeyFunc(test.TestContext(), "foo")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
key = etcdtest.AddPrefix(key)
|
||||||
|
|
||||||
fakeEtcdClient.ExpectNotFoundGet(key)
|
fakeEtcdClient.ExpectNotFoundGet(key)
|
||||||
fakeEtcdClient.ChangeIndex = 2
|
fakeEtcdClient.ChangeIndex = 2
|
||||||
pod := validNewPodTemplate("foo")
|
pod := validNewPodTemplate("foo")
|
||||||
existing := validNewPodTemplate("exists")
|
existing := validNewPodTemplate("exists")
|
||||||
obj, err := storage.Create(api.NewDefaultContext(), existing)
|
existing.Namespace = test.TestNamespace()
|
||||||
|
obj, err := storage.Create(test.TestContext(), existing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unable to create object: %v", err)
|
t.Fatalf("unable to create object: %v", err)
|
||||||
}
|
}
|
||||||
|
@@ -50,8 +50,7 @@ func TestCreate(t *testing.T) {
|
|||||||
storage := NewStorage(helper)
|
storage := NewStorage(helper)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
||||||
secret := validNewSecret("foo")
|
secret := validNewSecret("foo")
|
||||||
secret.Name = ""
|
secret.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"}
|
||||||
secret.GenerateName = "foo-"
|
|
||||||
test.TestCreate(
|
test.TestCreate(
|
||||||
// valid
|
// valid
|
||||||
secret,
|
secret,
|
||||||
@@ -72,13 +71,18 @@ func TestUpdate(t *testing.T) {
|
|||||||
fakeEtcdClient, helper := newHelper(t)
|
fakeEtcdClient, helper := newHelper(t)
|
||||||
storage := NewStorage(helper)
|
storage := NewStorage(helper)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
||||||
key := etcdtest.AddPrefix("secrets/default/foo")
|
key, err := storage.KeyFunc(test.TestContext(), "foo")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
key = etcdtest.AddPrefix(key)
|
||||||
|
|
||||||
fakeEtcdClient.ExpectNotFoundGet(key)
|
fakeEtcdClient.ExpectNotFoundGet(key)
|
||||||
fakeEtcdClient.ChangeIndex = 2
|
fakeEtcdClient.ChangeIndex = 2
|
||||||
secret := validNewSecret("foo")
|
secret := validNewSecret("foo")
|
||||||
existing := validNewSecret("exists")
|
existing := validNewSecret("exists")
|
||||||
obj, err := storage.Create(api.NewDefaultContext(), existing)
|
existing.Namespace = test.TestNamespace()
|
||||||
|
obj, err := storage.Create(test.TestContext(), existing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unable to create object: %v", err)
|
t.Fatalf("unable to create object: %v", err)
|
||||||
}
|
}
|
||||||
|
@@ -48,8 +48,7 @@ func TestCreate(t *testing.T) {
|
|||||||
storage := NewStorage(helper)
|
storage := NewStorage(helper)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
||||||
serviceAccount := validNewServiceAccount("foo")
|
serviceAccount := validNewServiceAccount("foo")
|
||||||
serviceAccount.Name = ""
|
serviceAccount.ObjectMeta = api.ObjectMeta{GenerateName: "foo-"}
|
||||||
serviceAccount.GenerateName = "foo-"
|
|
||||||
test.TestCreate(
|
test.TestCreate(
|
||||||
// valid
|
// valid
|
||||||
serviceAccount,
|
serviceAccount,
|
||||||
@@ -65,13 +64,18 @@ func TestUpdate(t *testing.T) {
|
|||||||
fakeEtcdClient, helper := newHelper(t)
|
fakeEtcdClient, helper := newHelper(t)
|
||||||
storage := NewStorage(helper)
|
storage := NewStorage(helper)
|
||||||
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
test := resttest.New(t, storage, fakeEtcdClient.SetError)
|
||||||
key := etcdtest.AddPrefix("serviceaccounts/default/foo")
|
key, err := storage.KeyFunc(test.TestContext(), "foo")
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
key = etcdtest.AddPrefix(key)
|
||||||
|
|
||||||
fakeEtcdClient.ExpectNotFoundGet(key)
|
fakeEtcdClient.ExpectNotFoundGet(key)
|
||||||
fakeEtcdClient.ChangeIndex = 2
|
fakeEtcdClient.ChangeIndex = 2
|
||||||
serviceAccount := validNewServiceAccount("foo")
|
serviceAccount := validNewServiceAccount("foo")
|
||||||
existing := validNewServiceAccount("exists")
|
existing := validNewServiceAccount("exists")
|
||||||
obj, err := storage.Create(api.NewDefaultContext(), existing)
|
existing.Namespace = test.TestNamespace()
|
||||||
|
obj, err := storage.Create(test.TestContext(), existing)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("unable to create object: %v", err)
|
t.Fatalf("unable to create object: %v", err)
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user