예제 #1
0
    def setUp(self):
        super(SchemaTest, self).setUp()
        sqlite_path = self.make_path("")
        self.database = create_database("sqlite:///%s" % sqlite_path)
        self.store = Store(self.database)
        self.patch_table = "my_patch_table"

        self.package = self.create_package(self.make_path(), "patch_package")
        # patch_package is created during the tests and is not around during
        # lint checks, so we'll diable the error
        import patch_package

        creates = ["CREATE TABLE person (id INTEGER, name TEXT)"]
        drops = ["DROP TABLE person"]
        deletes = ["DELETE FROM person"]

        self.schema = Schema(creates, drops, deletes, patch_package,
                             self.patch_table)
예제 #2
0
    def setUp(self):
        super(SchemaTest, self).setUp()
        sqlite_path = self.make_path("")
        self.database = create_database("sqlite:///%s" % sqlite_path)
        self.store = Store(self.database)
        self.patch_table = "my_patch_table"

        self.package = self.create_package(self.make_path(), "patch_package")
        # patch_package is created during the tests and is not around during
        # lint checks, so we'll diable the error
        import patch_package

        creates = ["CREATE TABLE person (id INTEGER, name TEXT)"]
        drops = ["DROP TABLE person"]
        deletes = ["DELETE FROM person"]

        self.schema = Schema(creates, drops, deletes, patch_package,
                             self.patch_table)
예제 #3
0
class SchemaTest(MakePackage, MakePath):
    """Test the Storm Schema Create, Delete, and Drop and upgrade"""
    def setUp(self):
        super(SchemaTest, self).setUp()
        sqlite_path = self.make_path("")
        self.database = create_database("sqlite:///%s" % sqlite_path)
        self.store = Store(self.database)
        self.patch_table = "my_patch_table"

        self.package = self.create_package(self.make_path(), "patch_package")
        # patch_package is created during the tests and is not around during
        # lint checks, so we'll diable the error
        import patch_package

        creates = ["CREATE TABLE person (id INTEGER, name TEXT)"]
        drops = ["DROP TABLE person"]
        deletes = ["DELETE FROM person"]

        self.schema = Schema(creates, drops, deletes, patch_package,
                             self.patch_table)

    def test_create(self):
        """Create a Schema"""
        self.assertRaises(StormError,
                          self.store.execute, "SELECT * FROM person")
        self.schema.create(self.store)
        self.assertEqual(list(self.store.execute("SELECT * FROM person")), [])

    def test_drop(self):
        """Drop a Schema"""
        self.schema.create(self.store)
        self.assertEqual(list(self.store.execute("SELECT * FROM person")), [])
        self.schema.drop(self.store)
        self.assertRaises(StormError,
                          self.store.execute, "SELECT * FROM person")

    def test_delete(self):
        """Delete a Schema"""
        self.schema.create(self.store)
        self.store.execute("INSERT INTO person (id, name) VALUES (1, 'Jane')")
        self.assertEqual(
            list(self.store.execute("SELECT * FROM person")), [(1, u"Jane")])
        self.schema.delete(self.store)
        self.assertEqual(list(self.store.execute("SELECT * FROM person")), [])

    def test_upgrade_creates_schema(self):
        """Upgrade a Schema, aka apply all patches"""
        self.assertRaises(StormError,
                          self.store.execute, "SELECT * FROM person")
        self.schema.upgrade(self.store)
        self.assertEqual(list(self.store.execute("SELECT * FROM person")), [])

    def test_upgrade_marks_patches_applied(self):
        """Test that an upgrade updates the patch table"""
        contents = """
def apply(store):
    store.execute('ALTER TABLE person ADD COLUMN phone TEXT')
"""
        self.package.create_module("patch_1.py", contents)
        self.assertRaises(StormError, self.store.execute,
                          "SELECT * FROM %s" % self.patch_table)
        self.schema.upgrade(self.store)
        self.assertEqual(
            list(self.store.execute("SELECT * FROM %s" % self.patch_table)),
            [(1,)])

    def test_upgrade_applies_patches(self):
        """Test that an upgrade actually applies the patches"""
        self.schema.create(self.store)
        contents = """
def apply(store):
    store.execute('ALTER TABLE person ADD COLUMN phone TEXT')
"""
        self.package.create_module("patch_1.py", contents)
        self.schema.upgrade(self.store)
        self.store.execute(
            "INSERT INTO person (id, name, phone) VALUES (1, 'Jane', '123')")
        self.assertEqual(
            list(self.store.execute("SELECT * FROM person")),
            [(1, u"Jane", u"123")])
예제 #4
0
def create_schema():
    """Return a Schema"""
    from backends.db.schemas import txlog as patch_package
    return Schema(CREATE, DROP, DELETE, patch_package, 'txlog.patch')
예제 #5
0
def create_schema():
    '''Creates the Schema with all the instructions.'''
    # We pass this very package to schema, so we need to reimport ourselves
    from backends.db.schemas import fsync_main as patch_package
    return Schema(CREATE, DROP, DELETE, patch_package, 'patch_main')
예제 #6
0
class SchemaTest(MakePackage, MakePath):
    """Test the Storm Schema Create, Delete, and Drop and upgrade"""
    def setUp(self):
        super(SchemaTest, self).setUp()
        sqlite_path = self.make_path("")
        self.database = create_database("sqlite:///%s" % sqlite_path)
        self.store = Store(self.database)
        self.patch_table = "my_patch_table"

        self.package = self.create_package(self.make_path(), "patch_package")
        # patch_package is created during the tests and is not around during
        # lint checks, so we'll diable the error
        import patch_package

        creates = ["CREATE TABLE person (id INTEGER, name TEXT)"]
        drops = ["DROP TABLE person"]
        deletes = ["DELETE FROM person"]

        self.schema = Schema(creates, drops, deletes, patch_package,
                             self.patch_table)

    def test_create(self):
        """Create a Schema"""
        self.assertRaises(StormError,
                          self.store.execute, "SELECT * FROM person")
        self.schema.create(self.store)
        self.assertEquals(list(self.store.execute("SELECT * FROM person")), [])

    def test_drop(self):
        """Drop a Schema"""
        self.schema.create(self.store)
        self.assertEquals(list(self.store.execute("SELECT * FROM person")), [])
        self.schema.drop(self.store)
        self.assertRaises(StormError,
                          self.store.execute, "SELECT * FROM person")

    def test_delete(self):
        """Delete a Schema"""
        self.schema.create(self.store)
        self.store.execute("INSERT INTO person (id, name) VALUES (1, 'Jane')")
        self.assertEquals(list(self.store.execute("SELECT * FROM person")),
                          [(1, u"Jane")])
        self.schema.delete(self.store)
        self.assertEquals(list(self.store.execute("SELECT * FROM person")), [])

    def test_upgrade_creates_schema(self):
        """Upgrade a Schema, aka apply all patches"""
        self.assertRaises(StormError,
                          self.store.execute, "SELECT * FROM person")
        self.schema.upgrade(self.store)
        self.assertEquals(list(self.store.execute("SELECT * FROM person")), [])

    def test_upgrade_marks_patches_applied(self):
        """Test that an upgrade updates the patch table"""
        contents = """
def apply(store):
    store.execute('ALTER TABLE person ADD COLUMN phone TEXT')
"""
        self.package.create_module("patch_1.py", contents)
        self.assertRaises(StormError, self.store.execute,
                          "SELECT * FROM %s" % self.patch_table)
        self.schema.upgrade(self.store)
        self.assertEquals(
            list(self.store.execute("SELECT * FROM %s" % self.patch_table)),
            [(1,)])

    def test_upgrade_applies_patches(self):
        """Test that an upgrade actually applies the patches"""
        self.schema.create(self.store)
        contents = """
def apply(store):
    store.execute('ALTER TABLE person ADD COLUMN phone TEXT')
"""
        self.package.create_module("patch_1.py", contents)
        self.schema.upgrade(self.store)
        self.store.execute(
            "INSERT INTO person (id, name, phone) VALUES (1, 'Jane', '123')")
        self.assertEquals(list(self.store.execute("SELECT * FROM person")),
                          [(1, u"Jane", u"123")])
예제 #7
0
def create_schema():
    """Return a Schema"""
    from backends.db.schemas import account as patch_package
    return Schema(CREATE, DROP, DELETE, patch_package, 'account2.patch')
예제 #8
0
def create_schema():
    """Returns a Schema"""
    from backends.db.schemas import auth as patch_package
    return Schema(CREATE, DROP, DELETE, patch_package, 'public.patch')