|
@@ -22,122 +22,18 @@ import sqlite3
|
|
TESTDATA_PATH = os.environ['TESTDATA_PATH'] + os.sep
|
|
TESTDATA_PATH = os.environ['TESTDATA_PATH'] + os.sep
|
|
TESTDATA_WRITE_PATH = os.environ['TESTDATA_WRITE_PATH'] + os.sep
|
|
TESTDATA_WRITE_PATH = os.environ['TESTDATA_WRITE_PATH'] + os.sep
|
|
|
|
|
|
-READ_ZONE_DB_FILE = TESTDATA_PATH + "example.com.sqlite3"
|
|
+DBFILE_NEWSCHEMA = TESTDATA_PATH + "/newschema.sqlite3";
|
|
-BROKEN_DB_FILE = TESTDATA_PATH + "brokendb.sqlite3"
|
|
+DBFILE_OLDSCHEMA = TESTDATA_PATH + "/oldschema.sqlite3";
|
|
-WRITE_ZONE_DB_FILE = TESTDATA_WRITE_PATH + "example.com.out.sqlite3"
|
|
+DBFILE_NEW_MINOR_SCHEMA = TESTDATA_PATH + "/new_minor_schema.sqlite3";
|
|
-NEW_DB_FILE = TESTDATA_WRITE_PATH + "new_db.sqlite3"
|
|
|
|
-
|
|
|
|
-def example_reader():
|
|
|
|
- my_zone = [
|
|
|
|
- ("example.com.", "3600", "IN", "SOA", "ns.example.com. admin.example.com. 1234 3600 1800 2419200 7200"),
|
|
|
|
- ("example.com.", "3600", "IN", "NS", "ns.example.com."),
|
|
|
|
- ("ns.example.com.", "3600", "IN", "A", "192.0.2.1")
|
|
|
|
- ]
|
|
|
|
- for rr in my_zone:
|
|
|
|
- yield rr
|
|
|
|
-
|
|
|
|
-def example_reader_nested():
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- sqlite3_ds.load(WRITE_ZONE_DB_FILE,
|
|
|
|
- ".",
|
|
|
|
- example_reader)
|
|
|
|
- return example_reader()
|
|
|
|
-
|
|
|
|
-class TestSqlite3_ds(unittest.TestCase):
|
|
|
|
- def test_zone_exist(self):
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- nodir = "/nodir/notexist"
|
|
|
|
- self.assertRaises(sqlite3_ds.Sqlite3DSError,
|
|
|
|
- sqlite3_ds.zone_exist, "example.com", nodir)
|
|
|
|
-
|
|
|
|
- self.assertRaises(sqlite3_ds.Sqlite3DSError,
|
|
|
|
- sqlite3_ds.zone_exist, "example.com",
|
|
|
|
- BROKEN_DB_FILE)
|
|
|
|
- self.assertTrue(sqlite3_ds.zone_exist("example.com.",
|
|
|
|
- READ_ZONE_DB_FILE))
|
|
|
|
- self.assertFalse(sqlite3_ds.zone_exist("example.org.",
|
|
|
|
- READ_ZONE_DB_FILE))
|
|
|
|
-
|
|
|
|
- def test_load_db(self):
|
|
|
|
- sqlite3_ds.load(WRITE_ZONE_DB_FILE, ".", example_reader)
|
|
|
|
-
|
|
|
|
- def test_locked_db(self):
|
|
|
|
-
|
|
|
|
- sqlite3_ds.load(WRITE_ZONE_DB_FILE, ".", example_reader)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- con = sqlite3.connect(WRITE_ZONE_DB_FILE);
|
|
|
|
- cur = con.cursor()
|
|
|
|
- cur.execute("delete from records")
|
|
|
|
-
|
|
|
|
- self.assertRaises(sqlite3_ds.Sqlite3DSError,
|
|
|
|
- sqlite3_ds.load, WRITE_ZONE_DB_FILE, ".",
|
|
|
|
- example_reader)
|
|
|
|
-
|
|
|
|
- con.rollback()
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- sqlite3_ds.load(WRITE_ZONE_DB_FILE, ".", example_reader)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- self.assertRaises(sqlite3_ds.Sqlite3DSError,
|
|
|
|
- sqlite3_ds.load, WRITE_ZONE_DB_FILE, ".",
|
|
|
|
- example_reader_nested)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- sqlite3_ds.load(WRITE_ZONE_DB_FILE, ".", example_reader)
|
|
|
|
|
|
|
|
class NewDBFile(unittest.TestCase):
|
|
class NewDBFile(unittest.TestCase):
|
|
- def tearDown(self):
|
|
+ def test_different_version(self):
|
|
-
|
|
+ self.assertTrue(os.path.exists(DBFILE_NEWSCHEMA))
|
|
- if (os.path.exists(NEW_DB_FILE)):
|
|
+ self.assertRaises(sqlite3_ds.Sqlite3DSError, sqlite3_ds.open,
|
|
- os.remove(NEW_DB_FILE)
|
|
+ DBFILE_NEWSCHEMA)
|
|
-
|
|
+ self.assertRaises(sqlite3_ds.Sqlite3DSError, sqlite3_ds.open,
|
|
- def setUp(self):
|
|
+ DBFILE_OLDSCHEMA)
|
|
-
|
|
+ self.assertNotEqual(None, sqlite3_ds.open(DBFILE_NEW_MINOR_SCHEMA)[0])
|
|
-
|
|
|
|
- if (os.path.exists(NEW_DB_FILE)):
|
|
|
|
- os.remove(NEW_DB_FILE)
|
|
|
|
-
|
|
|
|
- def test_new_db(self):
|
|
|
|
- self.assertFalse(os.path.exists(NEW_DB_FILE))
|
|
|
|
- sqlite3_ds.open(NEW_DB_FILE)
|
|
|
|
- self.assertTrue(os.path.exists(NEW_DB_FILE))
|
|
|
|
-
|
|
|
|
- def test_new_db_locked(self):
|
|
|
|
- self.assertFalse(os.path.exists(NEW_DB_FILE))
|
|
|
|
- con = sqlite3.connect(NEW_DB_FILE);
|
|
|
|
- con.isolation_level = None
|
|
|
|
- cur = con.cursor()
|
|
|
|
- cur.execute("BEGIN IMMEDIATE TRANSACTION")
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- self.assertRaises(sqlite3.OperationalError,
|
|
|
|
- sqlite3_ds.open, NEW_DB_FILE, 0.1)
|
|
|
|
-
|
|
|
|
- con.rollback()
|
|
|
|
- cur.close()
|
|
|
|
- con.close()
|
|
|
|
- self.assertTrue(os.path.exists(NEW_DB_FILE))
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- sqlite3_ds.open(NEW_DB_FILE)
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- con = sqlite3.connect(NEW_DB_FILE);
|
|
|
|
- cur = con.cursor()
|
|
|
|
- cur.execute("BEGIN IMMEDIATE TRANSACTION")
|
|
|
|
- sqlite3_ds.open(NEW_DB_FILE, 0.1)
|
|
|
|
- con.rollback()
|
|
|
|
- cur.close()
|
|
|
|
- con.close()
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
unittest.main()
|