mirror of https://github.com/hashicorp/consul
Adds a watch tester helper that helps cut the cruft.
parent
30736bae5a
commit
21bc8e0996
|
@ -106,6 +106,20 @@ func testSetKey(t *testing.T, s *StateStore, idx uint64, key, value string) {
|
|||
}
|
||||
}
|
||||
|
||||
// verifyWatch will set up a watch channel, call the given function, and then
|
||||
// make sure the watch fires within a fixed time period.
|
||||
func verifyWatch(t *testing.T, watch Watch, fn func()) {
|
||||
ch := make(chan struct{})
|
||||
watch.Wait(ch)
|
||||
go fn()
|
||||
|
||||
select {
|
||||
case <-ch:
|
||||
case <-time.After(100 * time.Millisecond):
|
||||
t.Fatalf("watch was not notified")
|
||||
}
|
||||
}
|
||||
|
||||
func TestStateStore_maxIndex(t *testing.T) {
|
||||
s := testStateStore(t)
|
||||
|
||||
|
@ -1837,41 +1851,22 @@ func TestStateStore_ACLDelete(t *testing.T) {
|
|||
|
||||
func TestStateStore_ACL_Watches(t *testing.T) {
|
||||
s := testStateStore(t)
|
||||
ch := make(chan struct{})
|
||||
|
||||
s.GetTableWatch("acls").Wait(ch)
|
||||
go func() {
|
||||
verifyWatch(t, s.GetTableWatch("acls"), func() {
|
||||
if err := s.ACLSet(1, &structs.ACL{ID: "acl1"}); err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
}()
|
||||
select {
|
||||
case <-ch:
|
||||
case <-time.After(1 * time.Second):
|
||||
t.Fatalf("watch was not notified")
|
||||
}
|
||||
})
|
||||
|
||||
s.GetTableWatch("acls").Wait(ch)
|
||||
go func() {
|
||||
verifyWatch(t, s.GetTableWatch("acls"), func() {
|
||||
if err := s.ACLDelete(2, "acl1"); err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
}()
|
||||
select {
|
||||
case <-ch:
|
||||
case <-time.After(1 * time.Second):
|
||||
t.Fatalf("watch was not notified")
|
||||
}
|
||||
})
|
||||
|
||||
s.GetTableWatch("acls").Wait(ch)
|
||||
go func() {
|
||||
verifyWatch(t, s.GetTableWatch("acls"), func() {
|
||||
if err := s.ACLRestore(&structs.ACL{ID: "acl1"}); err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
}()
|
||||
select {
|
||||
case <-ch:
|
||||
case <-time.After(1 * time.Second):
|
||||
t.Fatalf("watch was not notified")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue