FakeEtcdClient should return KeyNotFound on Delete

This commit is contained in:
Clayton Coleman
2015-03-04 22:34:16 -05:00
parent 143015025a
commit 4ca90e0343
3 changed files with 19 additions and 7 deletions

View File

@@ -195,6 +195,7 @@ func TestEtcdDeleteController(t *testing.T) {
fakeClient := tools.NewFakeEtcdClient(t) fakeClient := tools.NewFakeEtcdClient(t)
registry := NewTestEtcdRegistry(fakeClient) registry := NewTestEtcdRegistry(fakeClient)
key, _ := makeControllerKey(ctx, "foo") key, _ := makeControllerKey(ctx, "foo")
fakeClient.Set(key, runtime.EncodeOrDie(latest.Codec, &api.ReplicationController{ObjectMeta: api.ObjectMeta{Name: "foo"}}), 0)
err := registry.DeleteController(ctx, "foo") err := registry.DeleteController(ctx, "foo")
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)
@@ -532,6 +533,11 @@ func TestEtcdDeleteService(t *testing.T) {
ctx := api.NewDefaultContext() ctx := api.NewDefaultContext()
fakeClient := tools.NewFakeEtcdClient(t) fakeClient := tools.NewFakeEtcdClient(t)
registry := NewTestEtcdRegistry(fakeClient) 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") err := registry.DeleteService(ctx, "foo")
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)
@@ -540,13 +546,11 @@ func TestEtcdDeleteService(t *testing.T) {
if len(fakeClient.DeletedKeys) != 2 { if len(fakeClient.DeletedKeys) != 2 {
t.Errorf("Expected 2 delete, found %#v", fakeClient.DeletedKeys) t.Errorf("Expected 2 delete, found %#v", fakeClient.DeletedKeys)
} }
key, _ := makeServiceKey(ctx, "foo")
if fakeClient.DeletedKeys[0] != key { if fakeClient.DeletedKeys[0] != key {
t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key) t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key)
} }
key, _ = makeServiceEndpointsKey(ctx, "foo") if fakeClient.DeletedKeys[1] != endpointsKey {
if fakeClient.DeletedKeys[1] != key { t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[1], endpointsKey)
t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[1], key)
} }
} }
@@ -906,6 +910,9 @@ func TestEtcdDeleteMinion(t *testing.T) {
ctx := api.NewContext() ctx := api.NewContext()
fakeClient := tools.NewFakeEtcdClient(t) fakeClient := tools.NewFakeEtcdClient(t)
registry := NewTestEtcdRegistry(fakeClient) 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") err := registry.DeleteMinion(ctx, "foo")
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)
@@ -914,7 +921,6 @@ func TestEtcdDeleteMinion(t *testing.T) {
if len(fakeClient.DeletedKeys) != 1 { if len(fakeClient.DeletedKeys) != 1 {
t.Errorf("Expected 1 delete, found %#v", fakeClient.DeletedKeys) t.Errorf("Expected 1 delete, found %#v", fakeClient.DeletedKeys)
} }
key := "/registry/minions/foo"
if fakeClient.DeletedKeys[0] != key { if fakeClient.DeletedKeys[0] != key {
t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key) t.Errorf("Unexpected key: %s, expected %s", fakeClient.DeletedKeys[0], key)
} }

View File

@@ -624,7 +624,7 @@ func TestEtcdDelete(t *testing.T) {
"notExisting": { "notExisting": {
existing: emptyNode, existing: emptyNode,
expect: emptyNode, expect: emptyNode,
errOK: func(err error) bool { return err == nil }, errOK: func(err error) bool { return errors.IsNotFound(err) },
}, },
} }

View File

@@ -283,7 +283,13 @@ func (f *FakeEtcdClient) Delete(key string, recursive bool) (*etcd.Response, err
f.Mutex.Lock() f.Mutex.Lock()
defer f.Mutex.Unlock() 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() index := f.generateIndex()
f.Data[key] = EtcdResponseWithError{ f.Data[key] = EtcdResponseWithError{
R: &etcd.Response{}, R: &etcd.Response{},