Add "Update Event" to Kubernetes API
This commit is contained in:
@@ -108,3 +108,105 @@ func TestEventCreate(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestEventUpdate(t *testing.T) {
|
||||
eventA := &api.Event{
|
||||
ObjectMeta: api.ObjectMeta{Name: "foo", Namespace: api.NamespaceDefault},
|
||||
Reason: "forTesting",
|
||||
}
|
||||
eventB := &api.Event{
|
||||
ObjectMeta: api.ObjectMeta{Name: "bar", Namespace: api.NamespaceDefault},
|
||||
Reason: "for testing again",
|
||||
}
|
||||
eventC := &api.Event{
|
||||
ObjectMeta: api.ObjectMeta{Name: "pan", Namespace: api.NamespaceDefault, ResourceVersion: "1"},
|
||||
Reason: "for testing again something else",
|
||||
}
|
||||
|
||||
nodeWithEventA := tools.EtcdResponseWithError{
|
||||
R: &etcd.Response{
|
||||
Node: &etcd.Node{
|
||||
Value: runtime.EncodeOrDie(testapi.Codec(), eventA),
|
||||
ModifiedIndex: 1,
|
||||
CreatedIndex: 1,
|
||||
TTL: int64(testTTL),
|
||||
},
|
||||
},
|
||||
E: nil,
|
||||
}
|
||||
|
||||
nodeWithEventB := tools.EtcdResponseWithError{
|
||||
R: &etcd.Response{
|
||||
Node: &etcd.Node{
|
||||
Value: runtime.EncodeOrDie(testapi.Codec(), eventB),
|
||||
ModifiedIndex: 1,
|
||||
CreatedIndex: 1,
|
||||
TTL: int64(testTTL),
|
||||
},
|
||||
},
|
||||
E: nil,
|
||||
}
|
||||
|
||||
nodeWithEventC := tools.EtcdResponseWithError{
|
||||
R: &etcd.Response{
|
||||
Node: &etcd.Node{
|
||||
Value: runtime.EncodeOrDie(testapi.Codec(), eventC),
|
||||
ModifiedIndex: 1,
|
||||
CreatedIndex: 1,
|
||||
TTL: int64(testTTL),
|
||||
},
|
||||
},
|
||||
E: nil,
|
||||
}
|
||||
|
||||
emptyNode := tools.EtcdResponseWithError{
|
||||
R: &etcd.Response{},
|
||||
E: tools.EtcdErrorNotFound,
|
||||
}
|
||||
|
||||
ctx := api.NewDefaultContext()
|
||||
key := "foo"
|
||||
path, err := etcdgeneric.NamespaceKeyFunc(ctx, "/registry/events", key)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error: %v", err)
|
||||
}
|
||||
|
||||
table := map[string]struct {
|
||||
existing tools.EtcdResponseWithError
|
||||
expect tools.EtcdResponseWithError
|
||||
toUpdate runtime.Object
|
||||
errOK func(error) bool
|
||||
}{
|
||||
"doesNotExist": {
|
||||
existing: emptyNode,
|
||||
expect: nodeWithEventA,
|
||||
toUpdate: eventA,
|
||||
errOK: func(err error) bool { return err == nil },
|
||||
},
|
||||
"doesNotExist2": {
|
||||
existing: emptyNode,
|
||||
expect: nodeWithEventB,
|
||||
toUpdate: eventB,
|
||||
errOK: func(err error) bool { return err == nil },
|
||||
},
|
||||
"replaceExisting": {
|
||||
existing: nodeWithEventA,
|
||||
expect: nodeWithEventC,
|
||||
toUpdate: eventC,
|
||||
errOK: func(err error) bool { return err == nil },
|
||||
},
|
||||
}
|
||||
|
||||
for name, item := range table {
|
||||
fakeClient, registry := NewTestEventEtcdRegistry(t)
|
||||
fakeClient.Data[path] = item.existing
|
||||
err := registry.Update(ctx, key, item.toUpdate)
|
||||
if !item.errOK(err) {
|
||||
t.Errorf("%v: unexpected error: %v", name, err)
|
||||
}
|
||||
|
||||
if e, a := item.expect, fakeClient.Data[path]; !reflect.DeepEqual(e, a) {
|
||||
t.Errorf("%v:\n%s", name, util.ObjectGoPrintDiff(e, a))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user