summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLode Hoste <zillode@zillode.be>2015-08-18 09:52:34 +0200
committerLode Hoste <zillode@zillode.be>2015-08-18 19:52:58 +0200
commit47a1494d6840a85479998a25068eab8d32a95424 (patch)
tree9a3f1d456b4f113a9b2e97198acccd6fdec26580
parent38b93bd310ea0a8d2f4ccaee74c69f5d873e3988 (diff)
Add unit test for staggered versioning (fixes #2165)
-rw-r--r--lib/versioner/staggered_test.go84
1 files changed, 84 insertions, 0 deletions
diff --git a/lib/versioner/staggered_test.go b/lib/versioner/staggered_test.go
new file mode 100644
index 000000000..d25202442
--- /dev/null
+++ b/lib/versioner/staggered_test.go
@@ -0,0 +1,84 @@
+// Copyright (C) 2014 The Syncthing Authors.
+//
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this file,
+// You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package versioner
+
+import (
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "testing"
+ "time"
+)
+
+func TestStaggeredVersioningVersionCount(t *testing.T) {
+ if testing.Short() {
+ t.Skip("Test takes some time, skipping.")
+ }
+
+ dir, err := ioutil.TempDir("", "")
+ defer os.RemoveAll(dir)
+ if err != nil {
+ t.Error(err)
+ }
+
+ v := NewStaggered("", dir, map[string]string{"maxAge": "365"})
+ versionDir := filepath.Join(dir, ".stversions")
+
+ path := filepath.Join(dir, "test")
+
+ for i := 1; i <= 3; i++ {
+ f, err := os.Create(path)
+ if err != nil {
+ t.Error(err)
+ }
+ f.Close()
+ v.Archive(path)
+
+ d, err := os.Open(versionDir)
+ if err != nil {
+ t.Error(err)
+ }
+ n, err := d.Readdirnames(-1)
+ if err != nil {
+ t.Error(err)
+ }
+
+ if len(n) != 1 {
+ t.Error("Wrong count")
+ }
+ d.Close()
+
+ time.Sleep(time.Second)
+ }
+ os.RemoveAll(path)
+
+ for i := 1; i <= 3; i++ {
+ f, err := os.Create(path)
+ if err != nil {
+ t.Error(err)
+ }
+ f.Close()
+ v.Archive(path)
+
+ d, err := os.Open(versionDir)
+ if err != nil {
+ t.Error(err)
+ }
+ n, err := d.Readdirnames(-1)
+ if err != nil {
+ t.Error(err)
+ }
+
+ if len(n) != i {
+ t.Error("Wrong count")
+ }
+ d.Close()
+
+ time.Sleep(31 * time.Second)
+ }
+ os.RemoveAll(path)
+}