trashLifetime = 0 * time.Second
}()
+ // First set of tests
+
// With trashLifetime = 1h, test trash/untrash cycle.
trashLifetime = 1 * time.Hour
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)
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
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
}
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
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 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)
}
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
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)
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)
}
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
}
}
+ if foundTrash == false {
+ return os.ErrNotExist
+ }
+
return
}
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)