@@ -10,41 +10,81 @@ import (
1010
1111func TestFilterEtcdEvents (t * testing.T ) {
1212 tests := []struct {
13- in * etcd. Result
14- ev * event.Event
13+ in string
14+ ev [] event.Event
1515 }{
1616 {
17- in : nil ,
18- ev : nil ,
17+ in : "" ,
18+ ev : []event. Event {} ,
1919 },
2020 {
21- in : & etcd. Result { Node : & etcd. Node { Key : "/" }} ,
22- ev : nil ,
21+ in : "/" ,
22+ ev : []event. Event {} ,
2323 },
2424 {
25- in : & etcd. Result { Node : & etcd. Node { Key : "/fleet" }} ,
26- ev : & event .GlobalEvent ,
25+ in : "/fleet" ,
26+ ev : [] event.Event {} ,
2727 },
2828 {
29- in : & etcd.Result {Node : & etcd.Node {Key : "/fleet/job" }},
30- ev : & event .JobEvent ,
29+ in : "/fleet/job" ,
30+ ev : []event.Event {},
31+ },
32+ {
33+ in : "/fleet/job/foo/object" ,
34+ ev : []event.Event {},
35+ },
36+ {
37+ in : "/fleet/machine/asdf" ,
38+ ev : []event.Event {},
39+ },
40+ {
41+ in : "/fleet/state/asdf" ,
42+ ev : []event.Event {},
43+ },
44+ {
45+ in : "/fleet/job/asdf/target-state" ,
46+ ev : []event.Event {event .JobTargetStateChangeEvent },
47+ },
48+ {
49+ in : "/fleet/job/foobarbaz/target-state" ,
50+ ev : []event.Event {event .JobTargetStateChangeEvent },
51+ },
52+ {
53+ in : "/fleet/job/asdf/target" ,
54+ ev : []event.Event {event .JobTargetChangeEvent },
3155 },
3256 }
3357
3458 for i , tt := range tests {
35- etcdchan := make (chan * etcd.Result )
36- stopchan := make (chan bool )
37- prefix := "/fleet"
59+ for _ , action := range []string {"set" , "update" , "create" , "delete" } {
60+ etcdchan := make (chan * etcd.Result )
61+ stopchan := make (chan bool )
62+ prefix := "/fleet"
3863
39- send := func ( ev * event.Event ) {
40- if ! reflect . DeepEqual ( tt . ev , ev ) {
41- t . Errorf ( "case %d: received incorrect event \n expected %#v \n got %#v" , i , tt . ev , ev )
64+ got := make ([] event.Event , 0 )
65+ send := func ( ev event. Event ) {
66+ got = append ( got , ev )
4267 }
43- }
4468
45- go filter (etcdchan , prefix , send , stopchan )
69+ go filter (etcdchan , prefix , send , stopchan )
4670
47- etcdchan <- tt .in
48- close (stopchan )
71+ var res * etcd.Result
72+ if tt .in != "" {
73+ res = & etcd.Result {
74+ Node : & etcd.Node {
75+ Key : tt .in ,
76+ },
77+ Action : action ,
78+ }
79+ }
80+ etcdchan <- res
81+
82+ if ! reflect .DeepEqual (tt .ev , got ) {
83+ t .Errorf ("case %d: received incorrect event\n expected %#v\n got %#v" , i , tt .ev , got )
84+ t .Logf ("action: %v" , action )
85+ }
86+
87+ close (stopchan )
88+ }
4989 }
5090}
0 commit comments