| 
														
															@@ -43,14 +43,14 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'bar': 5678, 
														 | 
														
														 | 
														
															             'bar': 5678, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'user': 'chunks', 
														 | 
														
														 | 
														
															             'user': 'chunks', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(1), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(2), 2, 3), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(1), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(2), 2), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ] 
														 | 
														
														 | 
														
															             ] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync.feed(data) 
														 | 
														
														 | 
														
															         sync.feed(data) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assert len(index) == 2 
														 | 
														
														 | 
														
															         assert len(index) == 2 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert index[H(1)] == (1, 1, 2) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert index[H(2)] == (1, 2, 3) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert index[H(1)] == (1, 1, 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert index[H(2)] == (1, 2, 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def test_multiple(self, index, sync): 
														 | 
														
														 | 
														
															     def test_multiple(self, index, sync): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         data = packb({ 
														 | 
														
														 | 
														
															         data = packb({ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -59,8 +59,8 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'bar': 5678, 
														 | 
														
														 | 
														
															             'bar': 5678, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'user': 'chunks', 
														 | 
														
														 | 
														
															             'user': 'chunks', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(1), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(2), 2, 3), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(1), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(2), 2), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ] 
														 | 
														
														 | 
														
															             ] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         data += packb({ 
														 | 
														
														 | 
														
															         data += packb({ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -78,8 +78,8 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 'chunks': '123456', 
														 | 
														
														 | 
														
															                 'chunks': '123456', 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             }, 
														 | 
														
														 | 
														
															             }, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(1), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(2), 2, 3), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(1), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(2), 2), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ], 
														 | 
														
														 | 
														
															             ], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'stuff': [ 
														 | 
														
														 | 
														
															             'stuff': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 (1, 2, 3), 
														 | 
														
														 | 
														
															                 (1, 2, 3), 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -87,12 +87,12 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         data += packb({ 
														 | 
														
														 | 
														
															         data += packb({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(3), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(3), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ], 
														 | 
														
														 | 
														
															             ], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         data += packb({ 
														 | 
														
														 | 
														
															         data += packb({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(1), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(1), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ], 
														 | 
														
														 | 
														
															             ], 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -103,9 +103,9 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync.feed(part2) 
														 | 
														
														 | 
														
															         sync.feed(part2) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync.feed(part3) 
														 | 
														
														 | 
														
															         sync.feed(part3) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assert len(index) == 3 
														 | 
														
														 | 
														
															         assert len(index) == 3 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert index[H(1)] == (3, 1, 2) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert index[H(2)] == (2, 2, 3) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert index[H(3)] == (1, 1, 2) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert index[H(1)] == (3, 1, 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert index[H(2)] == (2, 2, 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert index[H(3)] == (1, 1, 0) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @pytest.mark.parametrize('elem,error', ( 
														 | 
														
														 | 
														
															     @pytest.mark.parametrize('elem,error', ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         ({1: 2}, 'Unexpected object: map'), 
														 | 
														
														 | 
														
															         ({1: 2}, 'Unexpected object: map'), 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -121,7 +121,7 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @pytest.mark.parametrize('structure', ( 
														 | 
														
														 | 
														
															     @pytest.mark.parametrize('structure', ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         lambda elem: {'chunks': elem}, 
														 | 
														
														 | 
														
															         lambda elem: {'chunks': elem}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         lambda elem: {'chunks': [elem]}, 
														 | 
														
														 | 
														
															         lambda elem: {'chunks': [elem]}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        lambda elem: {'chunks': [(elem, 1, 2)]}, 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        lambda elem: {'chunks': [(elem, 1)]}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     )) 
														 | 
														
														 | 
														
															     )) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def test_corrupted(self, sync, structure, elem, error): 
														 | 
														
														 | 
														
															     def test_corrupted(self, sync, structure, elem, error): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         packed = packb(structure(elem)) 
														 | 
														
														 | 
														
															         packed = packb(structure(elem)) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -135,11 +135,11 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @pytest.mark.parametrize('data,error', ( 
														 | 
														
														 | 
														
															     @pytest.mark.parametrize('data,error', ( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         # Incorrect tuple length 
														 | 
														
														 | 
														
															         # Incorrect tuple length 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         ({'chunks': [(bytes(32), 2, 3, 4)]}, 'Invalid chunk list entry length'), 
														 | 
														
														 | 
														
															         ({'chunks': [(bytes(32), 2, 3, 4)]}, 'Invalid chunk list entry length'), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        ({'chunks': [(bytes(32), 2)]}, 'Invalid chunk list entry length'), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ({'chunks': [(bytes(32), )]}, 'Invalid chunk list entry length'), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         # Incorrect types 
														 | 
														
														 | 
														
															         # Incorrect types 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        ({'chunks': [(1, 2, 3)]}, 'Unexpected object: integer'), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        ({'chunks': [(1, bytes(32), 2)]}, 'Unexpected object: integer'), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        ({'chunks': [(bytes(32), 1.0, 2)]}, 'Unexpected object: double'), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ({'chunks': [(1, 2)]}, 'Unexpected object: integer'), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ({'chunks': [(1, bytes(32))]}, 'Unexpected object: integer'), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        ({'chunks': [(bytes(32), 1.0)]}, 'Unexpected object: double'), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     )) 
														 | 
														
														 | 
														
															     )) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def test_corrupted_ancillary(self, index, sync, data, error): 
														 | 
														
														 | 
														
															     def test_corrupted_ancillary(self, index, sync, data, error): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         packed = packb(data) 
														 | 
														
														 | 
														
															         packed = packb(data) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -173,7 +173,7 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync = CacheSynchronizer(index) 
														 | 
														
														 | 
														
															         sync = CacheSynchronizer(index) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         data = packb({ 
														 | 
														
														 | 
														
															         data = packb({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(0), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(0), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ] 
														 | 
														
														 | 
														
															             ] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         with pytest.raises(ValueError) as excinfo: 
														 | 
														
														 | 
														
															         with pytest.raises(ValueError) as excinfo: 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -185,7 +185,7 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync = CacheSynchronizer(index) 
														 | 
														
														 | 
														
															         sync = CacheSynchronizer(index) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         data = packb({ 
														 | 
														
														 | 
														
															         data = packb({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(0), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(0), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ] 
														 | 
														
														 | 
														
															             ] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync.feed(data) 
														 | 
														
														 | 
														
															         sync.feed(data) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -196,7 +196,7 @@ class TestCacheSynchronizer: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync = CacheSynchronizer(index) 
														 | 
														
														 | 
														
															         sync = CacheSynchronizer(index) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         data = packb({ 
														 | 
														
														 | 
														
															         data = packb({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             'chunks': [ 
														 | 
														
														 | 
														
															             'chunks': [ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                (H(0), 1, 2), 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                (H(0), 1), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             ] 
														 | 
														
														 | 
														
															             ] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         }) 
														 | 
														
														 | 
														
															         }) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         sync.feed(data) 
														 | 
														
														 | 
														
															         sync.feed(data) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -244,7 +244,7 @@ class TestAdHocCache: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             cache.add_chunk(H(1), b'5678', Statistics(), overwrite=True) 
														 | 
														
														 | 
														
															             cache.add_chunk(H(1), b'5678', Statistics(), overwrite=True) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def test_seen_chunk_add_chunk_size(self, cache): 
														 | 
														
														 | 
														
															     def test_seen_chunk_add_chunk_size(self, cache): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert cache.add_chunk(H(1), b'5678', Statistics()) == (H(1), 4, 0) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert cache.add_chunk(H(1), b'5678', Statistics()) == (H(1), 4) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def test_deletes_chunks_during_lifetime(self, cache, repository): 
														 | 
														
														 | 
														
															     def test_deletes_chunks_during_lifetime(self, cache, repository): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         """E.g. checkpoint archives""" 
														 | 
														
														 | 
														
															         """E.g. checkpoint archives""" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -270,10 +270,10 @@ class TestAdHocCache: 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         assert not hasattr(cache, 'chunks') 
														 | 
														
														 | 
														
															         assert not hasattr(cache, 'chunks') 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def test_incref_after_add_chunk(self, cache): 
														 | 
														
														 | 
														
															     def test_incref_after_add_chunk(self, cache): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert cache.add_chunk(H(3), b'5678', Statistics()) == (H(3), 4, 47) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert cache.chunk_incref(H(3), Statistics()) == (H(3), 4, 47) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert cache.add_chunk(H(3), b'5678', Statistics()) == (H(3), 4) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert cache.chunk_incref(H(3), Statistics()) == (H(3), 4) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def test_existing_incref_after_add_chunk(self, cache): 
														 | 
														
														 | 
														
															     def test_existing_incref_after_add_chunk(self, cache): 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         """This case occurs with part files, see Archive.chunk_file.""" 
														 | 
														
														 | 
														
															         """This case occurs with part files, see Archive.chunk_file.""" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert cache.add_chunk(H(1), b'5678', Statistics()) == (H(1), 4, 0) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        assert cache.chunk_incref(H(1), Statistics()) == (H(1), 4, 0) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert cache.add_chunk(H(1), b'5678', Statistics()) == (H(1), 4) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        assert cache.chunk_incref(H(1), Statistics()) == (H(1), 4) 
														 |