diff options
author | Lars Wirzenius <liw@liw.fi> | 2012-04-21 13:57:55 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2012-04-21 13:57:55 +0100 |
commit | 86ac9b738e676bd1838555317253db5733b9f64e (patch) | |
tree | 7a75a4b56628e80878e3885f1f0a4222d1a26eea | |
parent | 0a53d9ab222426ac34cc641c442c2e362e01f48d (diff) | |
download | larch-86ac9b738e676bd1838555317253db5733b9f64e.tar.gz |
Make open_forest give NodeStoreDisk the allow_writes flag
-rwxr-xr-x | insert-remove-test | 2 | ||||
-rw-r--r-- | larch/forest.py | 10 | ||||
-rw-r--r-- | larch/forest_tests.py | 25 | ||||
-rw-r--r-- | larch/nodestore_disk.py | 6 | ||||
-rw-r--r-- | larch/nodestore_disk_tests.py | 6 |
5 files changed, 27 insertions, 22 deletions
diff --git a/insert-remove-test b/insert-remove-test index 141051d..dd6cecf 100755 --- a/insert-remove-test +++ b/insert-remove-test @@ -95,7 +95,7 @@ def main(): if os.path.exists(location): raise Exception('%s exists already' % location) os.mkdir(location) - ns = larch.NodeStoreDisk(node_size, codec, dirname=location) + ns = larch.NodeStoreDisk(True, node_size, codec, dirname=location) forest = larch.Forest(ns) tree = forest.new_tree() diff --git a/larch/forest.py b/larch/forest.py index 75705e2..881fb86 100644 --- a/larch/forest.py +++ b/larch/forest.py @@ -149,8 +149,8 @@ class Forest(object): self.node_store.commit() -def open_forest(key_size=None, node_size=None, codec=None, node_store=None, - **kwargs): +def open_forest(allow_writes=None, key_size=None, node_size=None, codec=None, + node_store=None, **kwargs): '''Create or open a forest. ``key_size`` and ``node_size`` are retrieved from the forest, unless @@ -167,6 +167,8 @@ def open_forest(key_size=None, node_size=None, codec=None, node_store=None, ''' tracing.trace('opening forest') + + assert allow_writes is not None codec = codec or larch.NodeCodec node_store = node_store or larch.NodeStoreDisk @@ -176,7 +178,7 @@ def open_forest(key_size=None, node_size=None, codec=None, node_store=None, # For this, we can use any values for node and key sizes, # since we won't be accessing nodes or keys. c_temp = codec(42) - ns_temp = node_store(42, c_temp, **kwargs) + ns_temp = node_store(False, 42, c_temp, **kwargs) assert 'key_size' in ns_temp.get_metadata_keys() assert 'node_size' in ns_temp.get_metadata_keys() @@ -187,7 +189,7 @@ def open_forest(key_size=None, node_size=None, codec=None, node_store=None, node_size = int(ns_temp.get_metadata('node_size')) c = codec(key_size) - ns = node_store(node_size, c, **kwargs) + ns = node_store(allow_writes, node_size, c, **kwargs) def check_size(keyname, wanted, exception): if keyname not in ns.get_metadata_keys(): diff --git a/larch/forest_tests.py b/larch/forest_tests.py index e8d8a17..7603b86 100644 --- a/larch/forest_tests.py +++ b/larch/forest_tests.py @@ -132,50 +132,53 @@ class OpenForestTests(unittest.TestCase): def test_creates_new_forest(self): f = larch.open_forest(key_size=self.key_size, node_size=self.node_size, - dirname=self.tempdir) + dirname=self.tempdir, allow_writes=True) self.assertEqual(f.node_store.codec.key_bytes, self.key_size) self.assertEqual(f.node_store.node_size, self.node_size) def test_fail_if_existing_tree_has_incompatible_key_size(self): f = larch.open_forest(key_size=self.key_size, node_size=self.node_size, - dirname=self.tempdir) + dirname=self.tempdir, allow_writes=True) f.commit() self.assertRaises(larch.BadKeySize, larch.open_forest, key_size=self.key_size + 1, node_size=self.node_size, - dirname=self.tempdir) + dirname=self.tempdir, + allow_writes=True) def test_opens_existing_tree_with_incompatible_node_size(self): - f = larch.open_forest(key_size=self.key_size, node_size=self.node_size, - dirname=self.tempdir) + f = larch.open_forest(allow_writes=True, key_size=self.key_size, + node_size=self.node_size, dirname=self.tempdir) f.commit() new_size = self.node_size + 1 f2 = larch.open_forest(key_size=self.key_size, node_size=new_size, - dirname=self.tempdir) + dirname=self.tempdir, + allow_writes=True) self.assertEqual(int(f2.node_store.get_metadata('node_size')), self.node_size) def test_opens_existing_tree_with_compatible_key_and_node_size(self): f = larch.open_forest(key_size=self.key_size, node_size=self.node_size, - dirname=self.tempdir) + dirname=self.tempdir, allow_writes=True) f.commit() f2 = larch.open_forest(key_size=self.key_size, node_size=self.node_size, - dirname=self.tempdir) + dirname=self.tempdir, + allow_writes=True) self.assert_(True) def test_opens_existing_tree_without_node_and_key_sizes_given(self): - f = larch.open_forest(key_size=self.key_size, node_size=self.node_size, - dirname=self.tempdir) + f = larch.open_forest(allow_writes=True, key_size=self.key_size, + node_size=self.node_size, dirname=self.tempdir) f.commit() - f2 = larch.open_forest(dirname=self.tempdir) + f2 = larch.open_forest(dirname=self.tempdir, allow_writes=True) self.assertEqual(f2.node_store.node_size, self.node_size) self.assertEqual(f2.node_store.codec.key_bytes, self.key_size) diff --git a/larch/nodestore_disk.py b/larch/nodestore_disk.py index c216f50..1ba90a7 100644 --- a/larch/nodestore_disk.py +++ b/larch/nodestore_disk.py @@ -112,8 +112,8 @@ class NodeStoreDisk(larch.NodeStore): nodedir = 'nodes' - def __init__(self, node_size, codec, dirname=None, upload_max=1024, - lru_size=500, vfs=None, format=None): + def __init__(self, allow_writes, node_size, codec, dirname=None, + upload_max=1024, lru_size=500, vfs=None, format=None): tracing.trace('new NodeStoreDisk: %s', dirname) assert dirname is not None if format is not None: @@ -130,7 +130,7 @@ class NodeStoreDisk(larch.NodeStore): self.upload_queue = larch.UploadQueue(self._really_put_node, self.upload_max) self.vfs = vfs if vfs != None else LocalFS() - self.journal = larch.Journal(True, self.vfs, dirname) + self.journal = larch.Journal(allow_writes, self.vfs, dirname) self.idpath = larch.IdPath(os.path.join(dirname, self.nodedir), DIR_DEPTH, DIR_BITS, DIR_SKIP) diff --git a/larch/nodestore_disk_tests.py b/larch/nodestore_disk_tests.py index ba21270..7f22c31 100644 --- a/larch/nodestore_disk_tests.py +++ b/larch/nodestore_disk_tests.py @@ -35,9 +35,9 @@ class NodeStoreDiskTests(unittest.TestCase, larch.NodeStoreTests): shutil.rmtree(self.tempdir) def new_ns(self, format=None): - return nodestore_disk.NodeStoreDisk(self.node_size, self.codec, - dirname=self.tempdir, - format=format) + return nodestore_disk.NodeStoreDisk(True, self.node_size, self.codec, + dirname=self.tempdir, + format=format) def test_metadata_has_format_version(self): self.assertEqual(self.ns.get_metadata('format'), |