17004: Fix setting properties on final collection
[arvados.git] / sdk / cwl / tests / test_fsaccess.py
index dd53595a751d640e71ded2945d1e32a9a9a95478..f83612a8b01186d822eb00728a76d31569408ced 100644 (file)
@@ -30,3 +30,79 @@ class TestFsAccess(unittest.TestCase):
         self.assertEqual(1, cr.call_count)
         c3 = cache.get("99999999999999999999999999999992+99")
         self.assertEqual(2, cr.call_count)
+
+    @mock.patch("arvados.collection.CollectionReader")
+    def test_collection_cache_limit(self, cr):
+        cache = CollectionCache(mock.MagicMock(), mock.MagicMock(), 4)
+        cr().manifest_text.return_value = 'x' * 524289
+        self.assertEqual(0, cache.total)
+        c1 = cache.get("99999999999999999999999999999991+524289")
+        self.assertIn("99999999999999999999999999999991+524289", cache.collections)
+        self.assertNotIn("99999999999999999999999999999992+524289", cache.collections)
+        self.assertEqual((524289*128)*1, cache.total)
+
+        c2 = cache.get("99999999999999999999999999999992+524289")
+        self.assertIn("99999999999999999999999999999991+524289", cache.collections)
+        self.assertIn("99999999999999999999999999999992+524289", cache.collections)
+        self.assertEqual((524289*128)*2, cache.total)
+
+        c1 = cache.get("99999999999999999999999999999991+524289")
+        self.assertIn("99999999999999999999999999999991+524289", cache.collections)
+        self.assertIn("99999999999999999999999999999992+524289", cache.collections)
+        self.assertEqual((524289*128)*2, cache.total)
+
+        c3 = cache.get("99999999999999999999999999999993+524289")
+        self.assertIn("99999999999999999999999999999991+524289", cache.collections)
+        self.assertIn("99999999999999999999999999999992+524289", cache.collections)
+        self.assertEqual((524289*128)*3, cache.total)
+
+        c4 = cache.get("99999999999999999999999999999994+524289")
+        self.assertIn("99999999999999999999999999999991+524289", cache.collections)
+        self.assertNotIn("99999999999999999999999999999992+524289", cache.collections)
+        self.assertEqual((524289*128)*3, cache.total)
+
+        c5 = cache.get("99999999999999999999999999999995+524289")
+        self.assertNotIn("99999999999999999999999999999991+524289", cache.collections)
+        self.assertNotIn("99999999999999999999999999999992+524289", cache.collections)
+        self.assertEqual((524289*128)*3, cache.total)
+
+
+    @mock.patch("arvados.collection.CollectionReader")
+    def test_collection_cache_limit2(self, cr):
+        cache = CollectionCache(mock.MagicMock(), mock.MagicMock(), 4)
+        cr().manifest_text.return_value = 'x' * 524287
+        self.assertEqual(0, cache.total)
+        c1 = cache.get("99999999999999999999999999999991+524287")
+        self.assertIn("99999999999999999999999999999991+524287", cache.collections)
+        self.assertNotIn("99999999999999999999999999999992+524287", cache.collections)
+        self.assertEqual((524287*128)*1, cache.total)
+
+        c2 = cache.get("99999999999999999999999999999992+524287")
+        self.assertIn("99999999999999999999999999999991+524287", cache.collections)
+        self.assertIn("99999999999999999999999999999992+524287", cache.collections)
+        self.assertEqual((524287*128)*2, cache.total)
+
+        c1 = cache.get("99999999999999999999999999999991+524287")
+        self.assertIn("99999999999999999999999999999991+524287", cache.collections)
+        self.assertIn("99999999999999999999999999999992+524287", cache.collections)
+        self.assertEqual((524287*128)*2, cache.total)
+
+        c3 = cache.get("99999999999999999999999999999993+524287")
+        self.assertIn("99999999999999999999999999999991+524287", cache.collections)
+        self.assertIn("99999999999999999999999999999992+524287", cache.collections)
+        self.assertEqual((524287*128)*3, cache.total)
+
+        c4 = cache.get("99999999999999999999999999999994+524287")
+        self.assertIn("99999999999999999999999999999991+524287", cache.collections)
+        self.assertIn("99999999999999999999999999999992+524287", cache.collections)
+        self.assertEqual((524287*128)*4, cache.total)
+
+        c5 = cache.get("99999999999999999999999999999995+524287")
+        self.assertIn("99999999999999999999999999999991+524287", cache.collections)
+        self.assertNotIn("99999999999999999999999999999992+524287", cache.collections)
+        self.assertEqual((524287*128)*4, cache.total)
+
+        c6 = cache.get("99999999999999999999999999999996+524287")
+        self.assertNotIn("99999999999999999999999999999991+524287", cache.collections)
+        self.assertNotIn("99999999999999999999999999999992+524287", cache.collections)
+        self.assertEqual((524287*128)*4, cache.total)