8554: test improvements
authorradhika <radhika@curoverse.com>
Mon, 14 Mar 2016 14:02:50 +0000 (10:02 -0400)
committerradhika <radhika@curoverse.com>
Mon, 14 Mar 2016 14:02:50 +0000 (10:02 -0400)
services/keepstore/volume_generic_test.go
services/keepstore/volume_unix.go

index 7e624298d381121239e8a2f9589eab05bc7a74cc..be83151461e366123d7f8608ecdf1edaf00d85d1 100644 (file)
@@ -768,6 +768,8 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
                trashLifetime = 0 * time.Second
        }()
 
+       // First set of tests
+
        // With trashLifetime = 1h, test trash/untrash cycle.
        trashLifetime = 1 * time.Hour
 
@@ -780,7 +782,7 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
                t.Fatal(err)
        }
        if bytes.Compare(buf, TestBlock) != 0 {
-               t.Errorf("Got data %+q, expected %+q", buf, TestBlock)
+               t.Fatalf("Got data %+q, expected %+q", buf, TestBlock)
        }
        bufs.Put(buf)
 
@@ -789,9 +791,10 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
        if err == MethodDisabledError || err == ErrNotImplemented {
                return
        }
+
        buf, err = v.Get(TestHash)
        if err == nil || !os.IsNotExist(err) {
-               t.Errorf("os.IsNotExist(%v) should have been true", err)
+               t.Fatalf("os.IsNotExist(%v) should have been true", err)
        }
 
        // Empty trash; the block is still within trashLifetime and hence is not emptied
@@ -809,10 +812,27 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
                t.Fatal(err)
        }
        if bytes.Compare(buf, TestBlock) != 0 {
-               t.Errorf("Got data %+q, expected %+q", buf, TestBlock)
+               t.Fatalf("Got data %+q, expected %+q", buf, TestBlock)
+       }
+       bufs.Put(buf)
+
+       // Untrash again; should fail
+       err = v.Untrash(TestHash)
+       if err == nil || !os.IsNotExist(err) {
+               t.Fatalf("os.IsNotExist(%v) should have been true", err)
+       }
+
+       buf, err = v.Get(TestHash)
+       if err != nil {
+               t.Fatal(err)
+       }
+       if bytes.Compare(buf, TestBlock) != 0 {
+               t.Fatalf("Got data %+q, expected %+q", buf, TestBlock)
        }
        bufs.Put(buf)
 
+       // Second set of tests
+
        // With trashLifetime = 1ns, test trash/untrash cycle.
        trashLifetime = 1 * time.Nanosecond
 
@@ -823,7 +843,7 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
        }
        buf, err = v.Get(TestHash)
        if err == nil || !os.IsNotExist(err) {
-               t.Errorf("os.IsNotExist(%v) should have been true", err)
+               t.Fatalf("os.IsNotExist(%v) should have been true", err)
        }
 
        // Untrash
@@ -838,7 +858,7 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
                t.Fatal(err)
        }
        if bytes.Compare(buf, TestBlock) != 0 {
-               t.Errorf("Got data %+q, expected %+q", buf, TestBlock)
+               t.Fatalf("Got data %+q, expected %+q", buf, TestBlock)
        }
        bufs.Put(buf)
 
@@ -858,15 +878,17 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
        // Untrash won't find it
        err = v.Untrash(TestHash)
        if err == nil || !os.IsNotExist(err) {
-               t.Errorf("os.IsNotExist(%v) should have been true", err)
+               t.Fatalf("os.IsNotExist(%v) should have been true", err)
        }
 
        // Get block won't find it
        buf, err = v.Get(TestHash)
        if err == nil || !os.IsNotExist(err) {
-               t.Errorf("os.IsNotExist(%v) should have been true", err)
+               t.Fatalf("os.IsNotExist(%v) should have been true", err)
        }
 
+  // Third set of tests
+
        // Still with trashLifetime = 1ns: put, trash, put one more, trash etc
        // put block and backdate it
        v.PutRaw(TestHash, TestBlock)
@@ -879,7 +901,7 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
        }
        buf, err = v.Get(TestHash)
        if err == nil || !os.IsNotExist(err) {
-               t.Errorf("os.IsNotExist(%v) should have been true", err)
+               t.Fatalf("os.IsNotExist(%v) should have been true", err)
        }
 
        // put again
@@ -898,7 +920,7 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
                t.Fatal(err)
        }
        if bytes.Compare(buf, TestBlock) != 0 {
-               t.Errorf("Got data %+q, expected %+q", buf, TestBlock)
+               t.Fatalf("Got data %+q, expected %+q", buf, TestBlock)
        }
        bufs.Put(buf)
 
@@ -926,7 +948,7 @@ func testTrashEmptyTrashUntrash(t TB, factory TestableVolumeFactory) {
                t.Fatal(err)
        }
        if bytes.Compare(buf, TestBlock) != 0 {
-               t.Errorf("Got data %+q, expected %+q", buf, TestBlock)
+               t.Fatalf("Got data %+q, expected %+q", buf, TestBlock)
        }
        bufs.Put(buf)
 }
index 3f1df64c4c672940392ad0a6470d8fd5c3e8a131..fe221c37e8024da4a556184989921453322c4df5 100644 (file)
@@ -420,16 +420,20 @@ func (v *UnixVolume) Untrash(loc string) (err error) {
                return MethodDisabledError
        }
 
-       prefix := fmt.Sprintf("%v.trash.", loc)
        files, err := ioutil.ReadDir(v.blockDir(loc))
        if err != nil {
                return err
        }
+
        if len(files) == 0 {
                return os.ErrNotExist
        }
+
+       foundTrash := false
+       prefix := fmt.Sprintf("%v.trash.", loc)
        for _, f := range files {
                if strings.HasPrefix(f.Name(), prefix) {
+                       foundTrash = true
                        err = os.Rename(v.blockPath(f.Name()), v.blockPath(loc))
                        if err == nil {
                                break
@@ -437,6 +441,10 @@ func (v *UnixVolume) Untrash(loc string) (err error) {
                }
        }
 
+       if foundTrash == false {
+               return os.ErrNotExist
+       }
+
        return
 }
 
@@ -550,7 +558,7 @@ func (v *UnixVolume) EmptyTrash() {
                                if err != nil {
                                        log.Printf("EmptyTrash error for %v: %v", matches[1], err)
                                } else {
-                                       if int64(deadline) <= time.Now().Unix() {
+                                       if deadline <= time.Now().Unix() {
                                                err = os.Remove(path)
                                                if err != nil {
                                                        log.Printf("Error deleting %v: %v", matches[1], err)