summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDolph Mathews <dolph.mathews@gmail.com>2013-01-16 11:16:04 -0600
committerGerrit Code Review <review@openstack.org>2013-01-16 20:54:15 +0000
commitf6b133d1eedac401b4fde51ebea94dab9019a4fe (patch)
tree93fa44c1a729c594d91fd6433ae552b15b53854a
parentacc810da672912bf3e5b730f89f0108adadda65e (diff)
downloadkeystone-f6b133d1eedac401b4fde51ebea94dab9019a4fe.tar.gz
keystone-f6b133d1eedac401b4fde51ebea94dab9019a4fe.tar.xz
keystone-f6b133d1eedac401b4fde51ebea94dab9019a4fe.zip
Test that you can undo & re-apply all migrations
Change-Id: I72e2b979a8692657c225102f2562e1b1fbb3f67d
-rw-r--r--tests/test_sql_upgrade.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/tests/test_sql_upgrade.py b/tests/test_sql_upgrade.py
index 090756e0..0112473b 100644
--- a/tests/test_sql_upgrade.py
+++ b/tests/test_sql_upgrade.py
@@ -63,6 +63,20 @@ class SqlUpgradeTests(test.TestCase):
version = migration.db_version()
self.assertEqual(version, 0, "DB is at version 0")
+ def test_two_steps_forward_one_step_back(self):
+ """You should be able to cleanly undo a re-apply all upgrades.
+
+ Upgrades are run in the following order::
+
+ 0 -> 1 -> 0 -> 1 -> 2 -> 1 -> 2 -> 3 -> 2 -> 3 ...
+ ^---------^ ^---------^ ^---------^
+
+ """
+ for x in range(1, self.max_version + 1):
+ self.upgrade(x)
+ self.downgrade(x - 1)
+ self.upgrade(x)
+
def assertTableColumns(self, table_name, expected_cols):
"""Asserts that the table contains the expected set of columns."""
table = self.select_table(table_name)