CreateInVolume1 bool
UseDelayToCreate bool
+ UseTrashLifeTime bool
+
DeleteLocator string
ExpectLocator1 bool
performTrashWorkerTest(testData, t)
}
+/* Allow default Trash Life time to be used. Thus, the newly created block
+ will not be deleted becuase its Mtime is within the trash life time.
+*/
+func TestTrashWorkerIntegration_SameLocatorInTwoVolumesWithDefaultTrashLifeTime(t *testing.T) {
+ testData := TrashWorkerTestData{
+ Locator1: TEST_HASH,
+ Block1: TEST_BLOCK,
+
+ Locator2: TEST_HASH_2,
+ Block2: TEST_BLOCK_2,
+
+ CreateData: true,
+ CreateInVolume1: true,
+
+ UseTrashLifeTime: true,
+
+ DeleteLocator: TEST_HASH, // locator 1
+
+ // Since trash life time is in effect, block won't be deleted.
+ ExpectLocator1: true,
+ ExpectLocator2: true,
+ }
+ performTrashWorkerTest(testData, t)
+}
+
/* Perform the test */
func performTrashWorkerTest(testData TrashWorkerTestData, t *testing.T) {
+ actual_permission_ttl := permission_ttl
+
// Create Keep Volumes
KeepVM = MakeTestVolumeManager(2)
- // Set trash life time delta to 0 so that the test can delete the blocks right after create
- DEFAULT_TRASH_LIFE_TIME = 0
-
- // Delete from volume will not take place if the block MTime is within permission_ttl
- permission_ttl = time.Duration(1) * time.Second
-
- vols := KeepVM.Volumes()
-
// Put test content
+ vols := KeepVM.Volumes()
if testData.CreateData {
vols[0].Put(testData.Locator1, testData.Block1)
vols[0].Put(testData.Locator1+".meta", []byte("metadata"))
trashList := list.New()
trashList.PushBack(trashRequest)
trashq = NewWorkQueue()
+
+ // Trash worker would not delete block if its Mtime is within trash life time.
+ // Hence, we will have to bypass it to allow the deletion to succeed.
+ if !testData.UseTrashLifeTime {
+ permission_ttl = time.Duration(1) * time.Second
+ }
go RunTrashWorker(trashq)
+
trashq.ReplaceQueue(trashList)
- time.Sleep(10 * time.Millisecond) // give it a moment to finish processing the trash list
+ time.Sleep(10 * time.Millisecond) // give a moment to finish processing the list
// Verify Locator1 to be un/deleted as expected
data, _ := GetBlock(testData.Locator1, false)
}
// Done
+ permission_ttl = actual_permission_ttl
trashq.Close()
KeepVM.Quit()
}