Merge pull request #5125 from mikedanese/shadowing-bug

fix variable shadowing bug in etcd_tools.go
pull/6/head
Brendan Burns 2015-03-06 15:16:52 +01:00
commit 20d9dd9e9c
3 changed files with 20 additions and 5 deletions

View File

@ -329,15 +329,14 @@ func (h *EtcdHelper) SetObj(key string, obj, out runtime.Object, ttl uint64) err
create := true
if h.ResourceVersioner != nil {
version, err := h.ResourceVersioner.ResourceVersion(obj)
if err == nil && version != 0 {
if version, err := h.ResourceVersioner.ResourceVersion(obj); err == nil && version != 0 {
create = false
response, err = h.Client.CompareAndSwap(key, string(data), ttl, "", version)
}
}
if err != nil {
return err
}
}
}
if create {
// Create will fail if a key already exists.
response, err = h.Client.Create(key, string(data), ttl)

View File

@ -414,6 +414,17 @@ func TestSetObj(t *testing.T) {
}
}
func TestSetObjFailCAS(t *testing.T) {
obj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}}
fakeClient := NewFakeEtcdClient(t)
fakeClient.CasErr = fakeClient.NewError(123)
helper := EtcdHelper{fakeClient, testapi.Codec(), versioner}
err := helper.SetObj("/some/key", obj, nil, 5)
if err == nil {
t.Errorf("Expecting error.")
}
}
func TestSetObjWithVersion(t *testing.T) {
obj := &api.Pod{ObjectMeta: api.ObjectMeta{Name: "foo", ResourceVersion: "1"}}
fakeClient := NewFakeEtcdClient(t)

View File

@ -47,6 +47,7 @@ type FakeEtcdClient struct {
expectNotFoundGetSet map[string]struct{}
sync.Mutex
Err error
CasErr error
t TestLogger
Ix int
TestIndex bool
@ -225,6 +226,10 @@ func (f *FakeEtcdClient) CompareAndSwap(key, value string, ttl uint64, prevValue
f.t.Logf("c&s: returning err %v", f.Err)
return nil, f.Err
}
if f.CasErr != nil {
f.t.Logf("c&s: returning err %v", f.CasErr)
return nil, f.CasErr
}
if !f.TestIndex {
f.t.Errorf("Enable TestIndex for test involving CompareAndSwap")