Merge pull request #6486 from glevand/for-merge-arm64

Get tests working on ARM64
This commit is contained in:
Xiang Li
2016-10-06 17:53:10 -07:00
committed by GitHub
4 changed files with 54 additions and 32 deletions

View File

@@ -15,44 +15,62 @@
package e2e
import (
"os"
"strings"
"testing"
)
func TestCtlV3Alarm(t *testing.T) { testCtl(t, alarmTest, withQuota(64*1024)) }
func TestCtlV3Alarm(t *testing.T) {
// The boltdb minimum working set is six pages.
testCtl(t, alarmTest, withQuota(int64(13*os.Getpagesize())))
}
func alarmTest(cx ctlCtx) {
// test small put still works
smallbuf := strings.Repeat("a", int(cx.quotaBackendBytes/100))
if err := ctlV3Put(cx, "abc", smallbuf, ""); err != nil {
smallbuf := strings.Repeat("a", 64)
if err := ctlV3Put(cx, "1st_test", smallbuf, ""); err != nil {
cx.t.Fatal(err)
}
// test big put (to be rejected, and trigger quota alarm)
bigbuf := strings.Repeat("a", int(cx.quotaBackendBytes))
if err := ctlV3Put(cx, "abc", bigbuf, ""); err != nil {
if !strings.Contains(err.Error(), "etcdserver: mvcc: database space exceeded") {
cx.t.Fatal(err)
// write some chunks to fill up the database
buf := strings.Repeat("b", int(os.Getpagesize()))
var rev int64
for ; ; rev++ {
if err := ctlV3Put(cx, "2nd_test", buf, ""); err != nil {
if !strings.Contains(err.Error(), "etcdserver: mvcc: database space exceeded") {
cx.t.Fatal(err)
}
break
}
}
// quota alarm should now be on
if err := ctlV3Alarm(cx, "list", "alarm:NOSPACE"); err != nil {
cx.t.Fatal(err)
}
// alarm is on rejecting Puts and Txns
if err := ctlV3Put(cx, "def", smallbuf, ""); err != nil {
// check that Put is rejected when alarm is on
if err := ctlV3Put(cx, "3rd_test", smallbuf, ""); err != nil {
if !strings.Contains(err.Error(), "etcdserver: mvcc: database space exceeded") {
cx.t.Fatal(err)
}
}
// make some space
if err := ctlV3Compact(cx, rev, true); err != nil {
cx.t.Fatal(err)
}
if err := ctlV3Defrag(cx); err != nil {
cx.t.Fatal(err)
}
// turn off alarm
if err := ctlV3Alarm(cx, "disarm", "alarm:NOSPACE"); err != nil {
cx.t.Fatal(err)
}
// put one more key below quota
if err := ctlV3Put(cx, "ghi", smallbuf, ""); err != nil {
if err := ctlV3Put(cx, "4th_test", smallbuf, ""); err != nil {
cx.t.Fatal(err)
}
}