def test_get_cached_file_by_src_w_key(self): cm = CacheManager(self.workdir) my_id = cm.register_doc(self.src_path1, self.result_path1, 'mykey') result1, key1 = cm.get_cached_file_by_source(self.src_path1, 'mykey') assert filecmp.cmp(result1, self.result_path1, shallow=False) assert key1 == '737b337e605199de28b3b64c674f9422_1_1' result2, key2 = cm.get_cached_file_by_source( self.src_path1, 'otherkey') assert result2 is None assert key2 is None cm.register_doc(self.src_path1, self.result_path2, 'otherkey') result3, key3 = cm.get_cached_file_by_source( self.src_path1, 'otherkey') assert filecmp.cmp(result3, self.result_path2, shallow=False) assert key3 == '737b337e605199de28b3b64c674f9422_1_2'
def test_register_doc(self, cache_env): # we can register docs cm = CacheManager(str(cache_env / "cache")) src1 = str(cache_env / "src1.txt") src2 = str(cache_env / "src2.txt") result1 = str(cache_env / "result1.txt") result2 = str(cache_env / "result2.txt") marker1 = cm.register_doc(src1, result1) assert marker1 == '737b337e605199de28b3b64c674f9422_1_1' marker2 = cm.register_doc(src1, result1) assert marker2 == '737b337e605199de28b3b64c674f9422_1_1' marker3 = cm.register_doc(src1, result2, repr_key="foo") assert marker3 == '737b337e605199de28b3b64c674f9422_1_2' marker4 = cm.register_doc(src2, result2, repr_key="foo") assert marker4 == 'd5aa51d7fb180729089d2de904f7dffe_1_1' marker5 = cm.register_doc(src2, result2, repr_key=StringIO("bar")) assert marker5 == 'd5aa51d7fb180729089d2de904f7dffe_1_2'
def test_get_cached_file(self, cache_env): # we can get a file cached before. cm = CacheManager(str(cache_env / "cache")) cache_key = cm.register_doc(str(cache_env / "src1.txt"), str(cache_env / "result1.txt")) path = cm.get_cached_file(cache_key) assert path is not None assert open(path, 'r').read() == (cache_env / "result1.txt").read()
def test_get_cached_file_by_src(self): # we can get a cached file by source file and options cm = CacheManager(self.workdir) # without a cache key my_id1 = cm.register_doc(self.src_path1, self.result_path1) result, key = cm.get_cached_file_by_source(self.src_path1) assert filecmp.cmp(result, self.result_path1, shallow=False) assert key == '737b337e605199de28b3b64c674f9422_1_1'
def test_register_doc(self): cm = CacheManager(self.workdir) marker1 = cm.register_doc( self.src_path1, self.result_path1) marker2 = cm.register_doc( self.src_path1, self.result_path1) marker3 = cm.register_doc( self.src_path1, self.result_path2, repr_key=b'foo') marker4 = cm.register_doc( self.src_path2, self.result_path2, repr_key=b'foo') marker5 = cm.register_doc( self.src_path2, self.result_path2, repr_key=StringIO(b'bar')) self.assertEqual(marker1, b'737b337e605199de28b3b64c674f9422_1_1') self.assertEqual(marker2, b'737b337e605199de28b3b64c674f9422_1_1') self.assertEqual(marker3, b'737b337e605199de28b3b64c674f9422_1_2') self.assertEqual(marker4, b'd5aa51d7fb180729089d2de904f7dffe_1_1') self.assertEqual(marker5, b'd5aa51d7fb180729089d2de904f7dffe_1_2') return
def test_get_cached_file_w_key_from_file(self, cache_env): # we can get a cached file, stored under a key, which is a file cm = CacheManager(str(cache_env / "cache")) cache_key = cm.register_doc(str(cache_env / "src1.txt"), str(cache_env / "result1.txt"), repr_key=StringIO('foo')) path = cm.get_cached_file(cache_key) assert path is not None assert open(path, 'r').read() == (cache_env / "result1.txt").read()
def register_fakedoc_in_cache(self, src, options): # register a fake doc in cache. Result cache_key is based on # path to src document and options given. cm = CacheManager(self.cachedir) fake_result_path = os.path.join(self.workdir, 'result.html') open(fake_result_path, 'w').write('A fake result.') marker = get_marker(options) cache_key = cm.register_doc(src, fake_result_path, repr_key=marker) return cache_key
def test_get_cached_file(self, cache_env): # we can get a file cached before. cm = CacheManager(str(cache_env / "cache")) cache_key = cm.register_doc( str(cache_env / "src1.txt"), str(cache_env / "result1.txt")) path = cm.get_cached_file(cache_key) assert path is not None assert open(path, 'r').read() == ( cache_env / "result1.txt").read()
def test_get_cached_file_by_src(self, cache_env): # we can get a cached file by source file and options cm = CacheManager(str(cache_env / "cache")) # without a cache key my_id = cm.register_doc(str(cache_env / "src1.txt"), str(cache_env / "result1.txt")) path, key = cm.get_cached_file_by_source(str(cache_env / "src1.txt")) assert open(path, "r").read() == (cache_env / "result1.txt").read() assert key == '737b337e605199de28b3b64c674f9422_1_1' assert my_id == key
def test_get_cached(self): # we can get cached docs cm = CacheManager(self.cachedir) fake_result_path = os.path.join(self.src_dir, 'result.txt') open(fake_result_path, 'wb').write('The Result\n') key = cm.register_doc(self.src_path, fake_result_path, 'somekey') assert key == '2b87e29fca6ee7f1df6c1a76cb58e101_1_1' result_path = self.proxy.get_cached(key) assert result_path is not None assert result_path != fake_result_path assert filecmp.cmp(result_path, fake_result_path, shallow=False)
def test_get_cached_file_w_key_from_file(self, cache_env): # we can get a cached file, stored under a key, which is a file cm = CacheManager(str(cache_env / "cache")) cache_key = cm.register_doc( str(cache_env / "src1.txt"), str(cache_env / "result1.txt"), repr_key=StringIO('foo')) path = cm.get_cached_file(cache_key) assert path is not None assert open(path, 'r').read() == ( cache_env / "result1.txt").read()
def test_get_cached_file_by_src_w_key(self, cache_env): cm = CacheManager(str(cache_env / "cache")) src = cache_env / "src1.txt" result1 = cache_env / "result1.txt" result2 = cache_env / "result2.txt" my_id1 = cm.register_doc(str(src), str(result1), 'mykey') path1, key1 = cm.get_cached_file_by_source(str(src), 'mykey') assert filecmp.cmp(path1, str(result1), shallow=False) assert key1 == '737b337e605199de28b3b64c674f9422_1_1' assert key1 == my_id1 # yet not existent cache file path2, key2 = cm.get_cached_file_by_source(str(src), 'otherkey') assert path2 is None assert key2 is None # store and retrieve 2nd cache file my_id3 = cm.register_doc(str(src), str(result2), 'otherkey') path3, key3 = cm.get_cached_file_by_source(str(src), 'otherkey') assert filecmp.cmp(path3, str(result2), shallow=False) assert key3 == '737b337e605199de28b3b64c674f9422_1_2' assert key3 == my_id3 return
def test_get_cached(self): # we can get cached docs cm = CacheManager(self.cachedir) fake_result_path = os.path.join(self.src_dir, 'result.txt') with open(fake_result_path, 'w') as fd: fd.write('The Result\n') key = cm.register_doc(self.src_path, fake_result_path, 'somekey') assert key == '2b87e29fca6ee7f1df6c1a76cb58e101_1_1' result_path = self.proxy.get_cached(key) assert result_path is not None assert result_path != fake_result_path assert filecmp.cmp(result_path, fake_result_path, shallow=False)
def test_get_cached_file_by_src(self, cache_env): # we can get a cached file by source file and options cm = CacheManager(str(cache_env / "cache")) # without a cache key my_id = cm.register_doc( str(cache_env / "src1.txt"), str(cache_env / "result1.txt")) path, key = cm.get_cached_file_by_source( str(cache_env / "src1.txt")) assert open(path, "r").read() == ( cache_env / "result1.txt").read() assert key == '737b337e605199de28b3b64c674f9422_1_1' assert my_id == key
def test_keys(self, cache_env): # we can get all cache keys cm = CacheManager(str(cache_env / "cache")) src1 = str(cache_env / "src1.txt") src2 = str(cache_env / "src2.txt") result1 = str(cache_env / "result1.txt") result2 = str(cache_env / "result2.txt") key1 = cm.register_doc(src1, result1, 'foo') assert list(cm.keys()) == ['737b337e605199de28b3b64c674f9422_1_1'] assert key1 == '737b337e605199de28b3b64c674f9422_1_1' key2 = cm.register_doc(src1, result2, 'bar') assert sorted(list(cm.keys())) == [ '737b337e605199de28b3b64c674f9422_1_1', '737b337e605199de28b3b64c674f9422_1_2', ] assert key2 == '737b337e605199de28b3b64c674f9422_1_2' key3 = cm.register_doc(src2, result1, 'baz') assert sorted(list(cm.keys())) == [ '737b337e605199de28b3b64c674f9422_1_1', '737b337e605199de28b3b64c674f9422_1_2', 'd5aa51d7fb180729089d2de904f7dffe_1_1', ] assert key3 == 'd5aa51d7fb180729089d2de904f7dffe_1_1'
def test_get_cached_file(self): cm = CacheManager(self.workdir) path = cm.get_cached_file(self.src_path1) self.assertTrue(path is None) self.assertEqual(os.listdir(self.workdir), []) my_id1 = cm.register_doc(self.src_path1, self.result_path1) path1 = cm.get_cached_file(my_id1) self.assertTrue(path1 is not None) my_id2 = cm.register_doc( self.src_path2, self.result_path1, repr_key='foo') path1 = cm.get_cached_file(my_id2) self.assertTrue(path1 is not None) my_id3 = cm.register_doc( self.src_path2, self.result_path1, repr_key=StringIO('foo')) path1 = cm.get_cached_file(my_id3) self.assertTrue(path1 is not None) self.assertEqual(my_id2, my_id3) self.assertEqual(cm.get_cached_file('nonsense_really'), None) return
def test_keys_custom_level(self): # we can get all cache keys also with custom level set cm = CacheManager(self.workdir, level=3) key1 = cm.register_doc(self.src_path1, self.result_path1, 'foo') self.assertEqual( list(cm.keys()), ['737b337e605199de28b3b64c674f9422_1_1'] ) key2 = cm.register_doc(self.src_path1, self.result_path2, 'bar') self.assertEqual( sorted(list(cm.keys())), ['737b337e605199de28b3b64c674f9422_1_1', '737b337e605199de28b3b64c674f9422_1_2', ] ) key3 = cm.register_doc(self.src_path2, self.result_path1, 'baz') self.assertEqual( sorted(list(cm.keys())), ['737b337e605199de28b3b64c674f9422_1_1', '737b337e605199de28b3b64c674f9422_1_2', 'd5aa51d7fb180729089d2de904f7dffe_1_1', ] ) return
def test_keys_custom_level(self, cache_env): # we can get all cache keys, even if a custom cache level is set # (and keys are stored in different location). cm = CacheManager(str(cache_env / "cache"), level=3) src1 = str(cache_env / "src1.txt") src2 = str(cache_env / "src2.txt") result1 = str(cache_env / "result1.txt") result2 = str(cache_env / "result2.txt") key1 = cm.register_doc(src1, result1, 'foo') assert list(cm.keys()) == ['737b337e605199de28b3b64c674f9422_1_1'] assert key1 == '737b337e605199de28b3b64c674f9422_1_1' key2 = cm.register_doc(src1, result2, 'bar') assert sorted(list(cm.keys())) == [ '737b337e605199de28b3b64c674f9422_1_1', '737b337e605199de28b3b64c674f9422_1_2', ] assert key2 == '737b337e605199de28b3b64c674f9422_1_2' key3 = cm.register_doc(src2, result1, 'baz') assert sorted(list(cm.keys())) == [ '737b337e605199de28b3b64c674f9422_1_1', '737b337e605199de28b3b64c674f9422_1_2', 'd5aa51d7fb180729089d2de904f7dffe_1_1', ] assert key3 == 'd5aa51d7fb180729089d2de904f7dffe_1_1'