From 3f0863a1e919f973581f2ab67575a8dca62c885b Mon Sep 17 00:00:00 2001 From: Gyu-Ho Lee Date: Wed, 13 Apr 2016 12:07:48 -0700 Subject: [PATCH] e2e: compact test --- e2e/ctl_v3_compact_test.go | 70 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 e2e/ctl_v3_compact_test.go diff --git a/e2e/ctl_v3_compact_test.go b/e2e/ctl_v3_compact_test.go new file mode 100644 index 000000000..c352f8491 --- /dev/null +++ b/e2e/ctl_v3_compact_test.go @@ -0,0 +1,70 @@ +// Copyright 2016 CoreOS, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package e2e + +import ( + "strconv" + "strings" + "testing" +) + +func TestCtlV3Compact(t *testing.T) { testCtl(t, compactTest) } + +func compactTest(cx ctlCtx) { + if err := ctlV3Compact(cx, 2); err != nil { + if !strings.Contains(err.Error(), "required revision is a future revision") { + cx.t.Fatal(err) + } + } else { + cx.t.Fatalf("expected '...future revision' error, got ") + } + + var kvs = []kv{{"key", "val1"}, {"key", "val2"}, {"key", "val3"}} + for i := range kvs { + if err := ctlV3Put(cx, kvs[i].key, kvs[i].val, ""); err != nil { + cx.t.Fatalf("compactTest #%d: ctlV3Put error (%v)", i, err) + } + } + + if err := ctlV3Get(cx, []string{"key", "--rev", "3"}, kvs[1:2]...); err != nil { + cx.t.Errorf("compactTest: ctlV3Get error (%v)", err) + } + + if err := ctlV3Compact(cx, 4); err != nil { + cx.t.Fatal(err) + } + + if err := ctlV3Get(cx, []string{"key", "--rev", "3"}, kvs[1:2]...); err != nil { + if !strings.Contains(err.Error(), "required revision has been compacted") { + cx.t.Errorf("compactTest: ctlV3Get error (%v)", err) + } + } else { + cx.t.Fatalf("expected '...has been compacted' error, got ") + } + + if err := ctlV3Compact(cx, 2); err != nil { + if !strings.Contains(err.Error(), "required revision has been compacted") { + cx.t.Fatal(err) + } + } else { + cx.t.Fatalf("expected '...has been compacted' error, got ") + } +} + +func ctlV3Compact(cx ctlCtx, rev int64) error { + rs := strconv.FormatInt(rev, 10) + cmdArgs := append(cx.PrefixArgs(), "compact", rs) + return spawnWithExpect(cmdArgs, "compacted revision "+rs) +}