Merge pull request #5152 from heyitsanthony/fix-quota-test

integration: wait for alarm in TestV3StorageQuotaApply
release-3.0
Xiang Li 2016-04-21 21:26:46 -07:00
commit 69bc0f76bc
1 changed files with 24 additions and 2 deletions

View File

@ -597,9 +597,31 @@ func TestV3StorageQuotaApply(t *testing.T) {
t.Fatal(err)
}
// quorum get should work regardless of whether alarm is raised
_, err = kvc0.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")})
if err != nil {
t.Fatal(err)
}
// wait until alarm is raised for sure-- poll the alarms
stopc := time.After(5 * time.Second)
for {
req := &pb.AlarmRequest{Action: pb.AlarmRequest_GET}
resp, aerr := clus.Members[0].s.Alarm(context.TODO(), req)
if aerr != nil {
t.Fatal(aerr)
}
if len(resp.Alarms) != 0 {
break
}
select {
case <-stopc:
t.Fatalf("timed out waiting for alarm")
case <-time.After(10 * time.Millisecond):
}
}
// small quota machine should reject put
// first, synchronize with the cluster via quorum get
kvc0.Range(context.TODO(), &pb.RangeRequest{Key: []byte("foo")})
if _, err := kvc0.Put(context.TODO(), &pb.PutRequest{Key: key, Value: smallbuf}); err == nil {
t.Fatalf("past-quota instance should reject put")
}