Define EtcdErrorCode as constant and reuse EtcdError instances

This commit is contained in:
Kouhei Ueno 2014-07-15 20:48:06 +09:00
parent 314eb1ae2d
commit bba23e28c2
5 changed files with 28 additions and 26 deletions

View File

@ -324,9 +324,7 @@ func TestGetKubeletStateFromEtcdNotFound(t *testing.T) {
reader := startReading(channel) reader := startReading(channel)
fakeClient.Data["/registry/hosts/machine/kubelet"] = tools.EtcdResponseWithError{ fakeClient.Data["/registry/hosts/machine/kubelet"] = tools.EtcdResponseWithError{
R: &etcd.Response{}, R: &etcd.Response{},
E: &etcd.EtcdError{ E: tools.EtcdErrorNotFound,
ErrorCode: 100,
},
} }
err := kubelet.getKubeletStateFromEtcd("/registry/hosts/machine/kubelet", channel) err := kubelet.getKubeletStateFromEtcd("/registry/hosts/machine/kubelet", channel)
expectNoError(t, err) expectNoError(t, err)

View File

@ -53,9 +53,7 @@ func TestEtcdGetPodNotFound(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ E: tools.EtcdErrorNotFound,
ErrorCode: 100,
},
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
_, err := registry.GetPod("foo") _, err := registry.GetPod("foo")
@ -70,7 +68,7 @@ func TestEtcdCreatePod(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
fakeClient.Set("/registry/hosts/machine/kubelet", util.MakeJSONString([]api.ContainerManifest{}), 0) fakeClient.Set("/registry/hosts/machine/kubelet", util.MakeJSONString([]api.ContainerManifest{}), 0)
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
@ -133,13 +131,13 @@ func TestEtcdCreatePodWithContainersError(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
fakeClient.Data["/registry/hosts/machine/kubelet"] = tools.EtcdResponseWithError{ fakeClient.Data["/registry/hosts/machine/kubelet"] = tools.EtcdResponseWithError{
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 200}, E: tools.EtcdErrorValueRequired,
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
err := registry.CreatePod("machine", api.Pod{ err := registry.CreatePod("machine", api.Pod{
@ -154,7 +152,7 @@ func TestEtcdCreatePodWithContainersError(t *testing.T) {
if err == nil { if err == nil {
t.Error("Unexpected non-error") t.Error("Unexpected non-error")
} }
if err != nil && err.(*etcd.EtcdError).ErrorCode != 100 { if !tools.IsEtcdNotFound(err) {
t.Errorf("Unexpected error: %#v", err) t.Errorf("Unexpected error: %#v", err)
} }
} }
@ -165,13 +163,13 @@ func TestEtcdCreatePodWithContainersNotFound(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
fakeClient.Data["/registry/hosts/machine/kubelet"] = tools.EtcdResponseWithError{ fakeClient.Data["/registry/hosts/machine/kubelet"] = tools.EtcdResponseWithError{
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
err := registry.CreatePod("machine", api.Pod{ err := registry.CreatePod("machine", api.Pod{
@ -213,7 +211,7 @@ func TestEtcdCreatePodWithExistingContainers(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
fakeClient.Set("/registry/hosts/machine/kubelet", util.MakeJSONString([]api.ContainerManifest{ fakeClient.Set("/registry/hosts/machine/kubelet", util.MakeJSONString([]api.ContainerManifest{
{ {
@ -329,7 +327,7 @@ func TestEtcdListPodsNotFound(t *testing.T) {
key := "/registry/hosts/machine/pods" key := "/registry/hosts/machine/pods"
fakeClient.Data[key] = tools.EtcdResponseWithError{ fakeClient.Data[key] = tools.EtcdResponseWithError{
R: &etcd.Response{}, R: &etcd.Response{},
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
pods, err := registry.ListPods(labels.Everything()) pods, err := registry.ListPods(labels.Everything())
@ -374,7 +372,7 @@ func TestEtcdListControllersNotFound(t *testing.T) {
key := "/registry/controllers" key := "/registry/controllers"
fakeClient.Data[key] = tools.EtcdResponseWithError{ fakeClient.Data[key] = tools.EtcdResponseWithError{
R: &etcd.Response{}, R: &etcd.Response{},
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
controllers, err := registry.ListControllers() controllers, err := registry.ListControllers()
@ -389,7 +387,7 @@ func TestEtcdListServicesNotFound(t *testing.T) {
key := "/registry/services/specs" key := "/registry/services/specs"
fakeClient.Data[key] = tools.EtcdResponseWithError{ fakeClient.Data[key] = tools.EtcdResponseWithError{
R: &etcd.Response{}, R: &etcd.Response{},
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
services, err := registry.ListServices() services, err := registry.ListServices()
@ -442,9 +440,7 @@ func TestEtcdGetControllerNotFound(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ E: tools.EtcdErrorNotFound,
ErrorCode: 100,
},
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
ctrl, err := registry.GetController("foo") ctrl, err := registry.GetController("foo")
@ -538,7 +534,7 @@ func TestEtcdCreateService(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 100}, E: tools.EtcdErrorNotFound,
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
err := registry.CreateService(api.Service{ err := registry.CreateService(api.Service{
@ -572,9 +568,7 @@ func TestEtcdGetServiceNotFound(t *testing.T) {
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ E: tools.EtcdErrorNotFound,
ErrorCode: 100,
},
} }
registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"}) registry := MakeTestEtcdRegistry(fakeClient, []string{"machine"})
_, err := registry.GetService("foo") _, err := registry.GetService("foo")

View File

@ -25,6 +25,16 @@ import (
"github.com/coreos/go-etcd/etcd" "github.com/coreos/go-etcd/etcd"
) )
const (
EtcdErrorCodeNotFound = 100
EtcdErrorCodeValueRequired = 200
)
var (
EtcdErrorNotFound = &etcd.EtcdError{ErrorCode: EtcdErrorCodeNotFound}
EtcdErrorValueRequired = &etcd.EtcdError{ErrorCode: EtcdErrorCodeValueRequired}
)
// EtcdClient is an injectable interface for testing. // EtcdClient is an injectable interface for testing.
type EtcdClient interface { type EtcdClient interface {
AddChild(key, data string, ttl uint64) (*etcd.Response, error) AddChild(key, data string, ttl uint64) (*etcd.Response, error)

View File

@ -36,7 +36,7 @@ func TestIsNotFoundErr(t *testing.T) {
t.Errorf("Expected %#v to return %v, but it did not", err, isNotFound) t.Errorf("Expected %#v to return %v, but it did not", err, isNotFound)
} }
} }
try(&etcd.EtcdError{ErrorCode: 100}, true) try(EtcdErrorNotFound, true)
try(&etcd.EtcdError{ErrorCode: 101}, false) try(&etcd.EtcdError{ErrorCode: 101}, false)
try(nil, false) try(nil, false)
try(fmt.Errorf("some other kind of error"), false) try(fmt.Errorf("some other kind of error"), false)

View File

@ -74,7 +74,7 @@ func (f *FakeEtcdClient) Get(key string, sort, recursive bool) (*etcd.Response,
result := f.Data[key] result := f.Data[key]
if result.R == nil { if result.R == nil {
f.t.Errorf("Unexpected get for %s", key) f.t.Errorf("Unexpected get for %s", key)
return &etcd.Response{}, &etcd.EtcdError{ErrorCode: 100} // Key not found return &etcd.Response{}, EtcdErrorNotFound
} }
f.t.Logf("returning %v: %v %#v", key, result.R, result.E) f.t.Logf("returning %v: %v %#v", key, result.R, result.E)
return result.R, result.E return result.R, result.E
@ -105,7 +105,7 @@ func (f *FakeEtcdClient) Delete(key string, recursive bool) (*etcd.Response, err
R: &etcd.Response{ R: &etcd.Response{
Node: nil, Node: nil,
}, },
E: &etcd.EtcdError{ErrorCode: 100}, E: EtcdErrorNotFound,
} }
f.DeletedKeys = append(f.DeletedKeys, key) f.DeletedKeys = append(f.DeletedKeys, key)