12568: Add test for collection cache management behavior
[arvados.git] / sdk / cwl / tests / test_fsaccess.py
index dd53595a751d640e71ded2945d1e32a9a9a95478..43a508fe304944a37affcb8e7e1e9b97c62e9f31 100644 (file)
@@ -30,3 +30,50 @@ 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+99")
+        self.assertEqual((524289*128)*1, cache.total)
+
+        c2 = cache.get("99999999999999999999999999999992+99")
+        self.assertEqual((524289*128)*2, cache.total)
+
+        c1 = cache.get("99999999999999999999999999999991+99")
+        self.assertEqual((524289*128)*2, cache.total)
+
+        c3 = cache.get("99999999999999999999999999999993+99")
+        self.assertEqual((524289*128)*3, cache.total)
+        c4 = cache.get("99999999999999999999999999999994+99")
+        self.assertEqual((524289*128)*3, cache.total)
+        c5 = cache.get("99999999999999999999999999999995+99")
+        self.assertEqual((524289*128)*3, cache.total)
+        c6 = cache.get("99999999999999999999999999999996+99")
+        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+99")
+        self.assertEqual((524287*128)*1, cache.total)
+
+        c2 = cache.get("99999999999999999999999999999992+99")
+        self.assertEqual((524287*128)*2, cache.total)
+
+        c1 = cache.get("99999999999999999999999999999991+99")
+        self.assertEqual((524287*128)*2, cache.total)
+
+        c3 = cache.get("99999999999999999999999999999993+99")
+        self.assertEqual((524287*128)*3, cache.total)
+        c4 = cache.get("99999999999999999999999999999994+99")
+        self.assertEqual((524287*128)*4, cache.total)
+        c5 = cache.get("99999999999999999999999999999995+99")
+        self.assertEqual((524287*128)*4, cache.total)
+        c6 = cache.get("99999999999999999999999999999996+99")
+        self.assertEqual((524287*128)*4, cache.total)