From 4ca90e0343f4b64d5f85674c80bfdcc8b5a45103 Mon Sep 17 00:00:00 2001 From: Clayton Coleman Date: Wed, 4 Mar 2015 22:34:16 -0500 Subject: [PATCH] FakeEtcdClient should return KeyNotFound on Delete --- pkg/registry/etcd/etcd_test.go | 16 +++++++++++----- pkg/registry/generic/etcd/etcd_test.go | 2 +- pkg/tools/fake_etcd_client.go | 8 +++++++- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/pkg/registry/etcd/etcd_test.go b/pkg/registry/etcd/etcd_test.go index 466caa478ad..c690fe70890 100644 --- a/pkg/registry/etcd/etcd_test.go +++ b/pkg/registry/etcd/etcd_test.go @@ -195,6 +195,7 @@ func TestEtcdDeleteController(t *testing.T) { fakeClient := tools.NewFakeEtcdClient(t) registry := NewTestEtcdRegistry(fakeClient) key, _ := makeControllerKey(ctx, "foo") + fakeClient.Set(key, runtime.EncodeOrDie(latest.Codec, &api.ReplicationController{ObjectMeta: api.ObjectMeta{Name: "foo"}}), 0) err := registry.DeleteController(ctx, "foo") if err != nil { t.Errorf("unexpected error: %v", err) @@ -532,6 +533,11 @@ func TestEtcdDeleteService(t *testing.T) { ctx := api.NewDefaultContext() fakeClient := tools.NewFakeEtcdClient(t) registry := NewTestEtcdRegistry(fakeClient) + key, _ := makeServiceKey(ctx, "foo") + fakeClient.Set(key, runtime.EncodeOrDie(latest.Codec, &api.Service{ObjectMeta: api.ObjectMeta{Name: "foo"}}), 0) + endpointsKey, _ := makeServiceEndpointsKey(ctx, "foo") + fakeClient.Set(endpointsKey, runtime.EncodeOrDie(latest.Codec, &api.Endpoints{ObjectMeta: api.ObjectMeta{Name: "foo"}, Protocol: "TCP"}), 0) + err := registry.DeleteService(ctx, "foo") if err != nil { t.Errorf("unexpected error: %v", err) @@ -540,13 +546,11 @@ func TestEtcdDeleteService(t *testing.T) { if len(fakeClient.DeletedKeys) != 2 { t.Errorf("Expected 2 delete, found %#v", fakeClient.DeletedKeys) } - key, _ := makeServiceKey(ctx, "foo") if fakeClient.DeletedKeys[0] != key { t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key) } - key, _ = makeServiceEndpointsKey(ctx, "foo") - if fakeClient.DeletedKeys[1] != key { - t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[1], key) + if fakeClient.DeletedKeys[1] != endpointsKey { + t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[1], endpointsKey) } } @@ -906,6 +910,9 @@ func TestEtcdDeleteMinion(t *testing.T) { ctx := api.NewContext() fakeClient := tools.NewFakeEtcdClient(t) registry := NewTestEtcdRegistry(fakeClient) + key := "/registry/minions/foo" + fakeClient.Set("/registry/minions/foo", runtime.EncodeOrDie(latest.Codec, &api.Node{ObjectMeta: api.ObjectMeta{Name: "foo"}}), 0) + err := registry.DeleteMinion(ctx, "foo") if err != nil { t.Errorf("unexpected error: %v", err) @@ -914,7 +921,6 @@ func TestEtcdDeleteMinion(t *testing.T) { if len(fakeClient.DeletedKeys) != 1 { t.Errorf("Expected 1 delete, found %#v", fakeClient.DeletedKeys) } - key := "/registry/minions/foo" if fakeClient.DeletedKeys[0] != key { t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key) } diff --git a/pkg/registry/generic/etcd/etcd_test.go b/pkg/registry/generic/etcd/etcd_test.go index 9c052014938..6f06c1d66ce 100644 --- a/pkg/registry/generic/etcd/etcd_test.go +++ b/pkg/registry/generic/etcd/etcd_test.go @@ -624,7 +624,7 @@ func TestEtcdDelete(t *testing.T) { "notExisting": { existing: emptyNode, expect: emptyNode, - errOK: func(err error) bool { return err == nil }, + errOK: func(err error) bool { return errors.IsNotFound(err) }, }, } diff --git a/pkg/tools/fake_etcd_client.go b/pkg/tools/fake_etcd_client.go index 12d4c0b0a00..b66edab46ba 100644 --- a/pkg/tools/fake_etcd_client.go +++ b/pkg/tools/fake_etcd_client.go @@ -283,7 +283,13 @@ func (f *FakeEtcdClient) Delete(key string, recursive bool) (*etcd.Response, err f.Mutex.Lock() defer f.Mutex.Unlock() - existing := f.Data[key] + existing, ok := f.Data[key] + if !ok { + return &etcd.Response{}, &etcd.EtcdError{ + ErrorCode: EtcdErrorCodeNotFound, + Index: f.ChangeIndex, + } + } index := f.generateIndex() f.Data[key] = EtcdResponseWithError{ R: &etcd.Response{},