예제 #1
0
 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'
예제 #2
0
 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'
예제 #3
0
 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()
예제 #4
0
 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'
예제 #5
0
 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'
예제 #6
0
 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
예제 #7
0
 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()
예제 #8
0
 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
예제 #9
0
 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()
예제 #10
0
 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
예제 #11
0
 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)
예제 #12
0
 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()
예제 #13
0
 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
예제 #14
0
 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
예제 #15
0
 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)
예제 #16
0
 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
예제 #17
0
 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'
예제 #18
0
 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'
예제 #19
0
    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
예제 #20
0
 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
예제 #21
0
 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'
예제 #22
0
 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'