|
@@ -969,6 +969,48 @@ class HashEquivalenceCommonTests(object):
|
|
|
# First hash is still present
|
|
|
self.assertClientGetHash(self.client, taskhash, unihash)
|
|
|
|
|
|
+ def test_gc_stream(self):
|
|
|
+ taskhash = '53b8dce672cb6d0c73170be43f540460bfc347b4'
|
|
|
+ outhash = '5a9cb1649625f0bf41fc7791b635cd9c2d7118c7f021ba87dcd03f72b67ce7a8'
|
|
|
+ unihash = 'f37918cc02eb5a520b1aff86faacbc0a38124646'
|
|
|
+
|
|
|
+ result = self.client.report_unihash(taskhash, self.METHOD, outhash, unihash)
|
|
|
+ self.assertEqual(result['unihash'], unihash, 'Server returned bad unihash')
|
|
|
+
|
|
|
+ taskhash2 = '3bf6f1e89d26205aec90da04854fbdbf73afe6b4'
|
|
|
+ outhash2 = '77623a549b5b1a31e3732dfa8fe61d7ce5d44b3370f253c5360e136b852967b4'
|
|
|
+ unihash2 = 'af36b199320e611fbb16f1f277d3ee1d619ca58b'
|
|
|
+
|
|
|
+ result = self.client.report_unihash(taskhash2, self.METHOD, outhash2, unihash2)
|
|
|
+ self.assertClientGetHash(self.client, taskhash2, unihash2)
|
|
|
+
|
|
|
+ taskhash3 = 'a1117c1f5a7c9ab2f5a39cc6fe5e6152169d09c0'
|
|
|
+ outhash3 = '7289c414905303700a1117c1f5a7c9ab2f5a39cc6fe5e6152169d09c04f9a53c'
|
|
|
+ unihash3 = '905303700a1117c1f5a7c9ab2f5a39cc6fe5e615'
|
|
|
+
|
|
|
+ result = self.client.report_unihash(taskhash3, self.METHOD, outhash3, unihash3)
|
|
|
+ self.assertClientGetHash(self.client, taskhash3, unihash3)
|
|
|
+
|
|
|
+ # Mark the first unihash to be kept
|
|
|
+ ret = self.client.gc_mark_stream("ABC", (f"unihash {h}" for h in [unihash, unihash2]))
|
|
|
+ self.assertEqual(ret, {"count": 2})
|
|
|
+
|
|
|
+ ret = self.client.gc_status()
|
|
|
+ self.assertEqual(ret, {"mark": "ABC", "keep": 2, "remove": 1})
|
|
|
+
|
|
|
+ # Third hash is still there; mark doesn't delete hashes
|
|
|
+ self.assertClientGetHash(self.client, taskhash3, unihash3)
|
|
|
+
|
|
|
+ ret = self.client.gc_sweep("ABC")
|
|
|
+ self.assertEqual(ret, {"count": 1})
|
|
|
+
|
|
|
+ # Hash is gone. Taskhash is returned for second hash
|
|
|
+ self.assertClientGetHash(self.client, taskhash3, None)
|
|
|
+ # First hash is still present
|
|
|
+ self.assertClientGetHash(self.client, taskhash, unihash)
|
|
|
+ # Second hash is still present
|
|
|
+ self.assertClientGetHash(self.client, taskhash2, unihash2)
|
|
|
+
|
|
|
def test_gc_switch_mark(self):
|
|
|
taskhash = '53b8dce672cb6d0c73170be43f540460bfc347b4'
|
|
|
outhash = '5a9cb1649625f0bf41fc7791b635cd9c2d7118c7f021ba87dcd03f72b67ce7a8'
|