|
|
@@ -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)
|
|
|
+}
|