summaryrefslogtreecommitdiff
path: root/test-backwards-compatibility
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-05-23 16:05:27 +0200
committerLars Wirzenius <liw@liw.fi>2012-05-23 16:05:27 +0200
commit5d46c9d2bf5d1b37ff530f73f92e887557828a31 (patch)
tree3a0fe043d44be0564ace1280aa1204ac266bc03e /test-backwards-compatibility
parenta10b3c09f5eb772a21d6b10f307f285ad159e90d (diff)
downloadlarch-5d46c9d2bf5d1b37ff530f73f92e887557828a31.tar.gz
Updates to test data generation, plus verification
Diffstat (limited to 'test-backwards-compatibility')
-rwxr-xr-xtest-backwards-compatibility65
1 files changed, 55 insertions, 10 deletions
diff --git a/test-backwards-compatibility b/test-backwards-compatibility
index a10c6bb..c68df0a 100755
--- a/test-backwards-compatibility
+++ b/test-backwards-compatibility
@@ -45,6 +45,7 @@ keys removed.
import cliapp
+import os
import shutil
import struct
import tarfile
@@ -59,6 +60,16 @@ class BackwardsCompatibilityTester(cliapp.Application):
node_size = 128
num_keys = 1024
+ keys1 = range(num_keys)
+
+ remove2 = range(1, num_keys, 2)
+ keys2 = [i for i in keys1 if i not in remove2]
+
+ keys3 = keys2
+
+ remove4 = range(0, num_keys, 2)
+ keys4 = [i for i in keys3 if i not in remove4]
+
def setup(self):
self.dirname = tempfile.mkdtemp()
@@ -81,26 +92,23 @@ class BackwardsCompatibilityTester(cliapp.Application):
# First tree.
t = forest.new_tree()
- for i in range(self.num_keys):
+ for i in self.keys1:
t.insert(self.key(i), self.value(i))
# Second tree.
t = forest.new_tree(t)
- for i in range(self.num_keys):
- if (i % 2) == 1:
- t.remove(self.key(i))
+ for i in self.remove2:
+ t.remove(self.key(i))
# Third tree.
t = forest.new_tree(t)
- for i in range(self.num_keys):
- if (i % 2) == 1:
- t.insert(self.key(i), self.value(i))
+ for i in self.keys3:
+ t.insert(self.key(i), self.value(i))
# Fourth tree.
t = forest.new_tree(t)
- for i in range(self.num_keys):
- if (i % 2) == 0:
- t.remove(self.key(i))
+ for i in self.remove4:
+ t.remove(self.key(i))
# Commit and make into a tarball.
forest.commit()
@@ -108,6 +116,43 @@ class BackwardsCompatibilityTester(cliapp.Application):
tf.add(self.dirname, arcname='.')
tf.close()
+ def cmd_verify(self, args):
+ forest_dirname = os.path.join(self.dirname, 'forest')
+
+ for filename in args:
+ os.mkdir(forest_dirname)
+ tf = tarfile.open(filename)
+ tf.extractall(path=forest_dirname)
+ tf.close()
+
+ forest = larch.open_forest(dirname=forest_dirname,
+ allow_writes=False)
+ if len(forest.trees) != 4:
+ raise cliapp.AppException('Need 4 trees, not %d' %
+ len(forest.trees))
+ self.verify_tree(forest.trees[0], self.keys1)
+ self.verify_tree(forest.trees[1], self.keys2)
+ self.verify_tree(forest.trees[2], self.keys3)
+ self.verify_tree(forest.trees[3], self.keys4)
+
+ shutil.rmtree(forest_dirname)
+
+ self.output.write('%s is OK\n' % filename)
+
+ def verify_tree(self, tree, keys):
+ minkey = self.key(0)
+ maxkey = self.key(2**(8*self.key_size) - 1)
+
+ i = 0
+ for key, value in tree.lookup_range(minkey, maxkey):
+ if key != self.key(keys[i]):
+ raise cliapp.AppException('Wanted key %s, got %s' %
+ (keys[i], repr(key)))
+ if value != self.value(keys[i]):
+ raise cliapp.AppException('Wanted value %s, got %s' %
+ (keys[i], repr(value)))
+ i += 1
+
BackwardsCompatibilityTester().run()