def test_serialization(self): obj = Database("/tmp/foo", DatabaseVersion(), Schema(), []) self.assertEqual(obj.serialization(), DatabaseVersion(0).serialization()) obj = Database("/tmp/foo", DatabaseVersion.preferred(), Schema(), []) self.assertEqual(obj.serialization(), DatabaseVersion.preferred().serialization())
def test_version(self): tdb = TemporaryDatabase() self.assertEqual(Database.read_version(tdb.ddir.name), DatabaseVersion()) tdb.db.store() tdb.db.upgrade() self.assertEqual(Database.read_version(tdb.ddir.name), DatabaseVersion.preferred())
def do_upgrade_test(self, version, pattern): tdb = TemporaryDatabase("txn:git\n") ddir, db = tdb.ddir, tdb.db if not isinstance(version, DatabaseVersion): version = DatabaseVersion(version) self.assertEqual(Database.read_version(ddir.name), DatabaseVersion()) db.store() db.upgrade(version=version) self.assertEqual(Database.read_version(ddir.name), version) with open(ddir.name + "/dtb", "rb") as fp: data = fp.read(len(pattern)) self.assertEqual(data, pattern) ddir.cleanup()
def test_multiple_types(self): tdb = TemporaryDatabase("txn:git:hash\n") ddir = tdb.ddir db = Database.load(ddir.name) db.records()[:] = [Record([1, 2, 3])] db.store() self.assertEqual(set(db.schema().transaction_types()), set(["git", "hash"]))
def do_test(self, expected, schema, configv): tdb = TemporaryDatabase(schema) ddir2 = tempfile.TemporaryDirectory() config = "%s/config" % ddir2.name with open(config, "w") as fp: fp.write("fmt:3:newfol config file:\n" + configv) db = Database.load(tdb.ddir.name, extra_config=[config]) db.records()[:] = [Record([1, 2, 3])] db.store() self.assertEqual(db.schema().execution_allowed(), expected) ddir2.cleanup()
def test_existing_config_file(self): tdb = TemporaryDatabase() ddir2 = tempfile.TemporaryDirectory() config = "%s/config" % ddir2.name with open(config, "w") as fp: fp.write("fmt:3:newfol config file:\ntxn:git:hash\n") db = Database.load(tdb.ddir.name, extra_config=[config]) db.records()[:] = [Record([1, 2, 3])] db.store() self.assertEqual(set(db.schema().transaction_types()), set(["git", "hash"])) ddir2.cleanup()
def db(self): return Database.load(self.ddir.name)
def test_version(self): obj = Database("/tmp/foo", DatabaseVersion(), Schema(), []) self.assertEqual(obj.version(), 0) obj = Database("/tmp/foo", DatabaseVersion.preferred(), Schema(), []) self.assertEqual(obj.version(), DatabaseVersion.preferred())
def test_records(self): obj = Database("/tmp/foo", 2, Schema(), [Record([1, 2, 3])]) records = obj.records() self.assertEqual(len(records), 1) self.assertEqual(len(records[0].fields), 3)
def test_location(self): for location in ("/tmp/foo", "/bar", "/home/quux/.newfol"): obj = Database(location, 2, Schema(), []) self.assertEqual(obj.location(), location)
def test_missing_config_file(self): tdb = TemporaryDatabase() config = "%s/config" % tdb.ddir.name db = Database.load(tdb.ddir.name, extra_config=[config]) db.records()[:] = [Record([1, 2, 3])] db.store()