Merge "Don't blindly skip first migration."
This commit is contained in:
@@ -366,36 +366,37 @@ class BaseMigrationTestCase(test.TestCase):
|
|||||||
self.migration_api.db_version(engine,
|
self.migration_api.db_version(engine,
|
||||||
self.REPOSITORY))
|
self.REPOSITORY))
|
||||||
|
|
||||||
self.migration_api.upgrade(engine,
|
|
||||||
self.REPOSITORY,
|
|
||||||
self.INIT_VERSION + 1)
|
|
||||||
|
|
||||||
LOG.debug('latest version is %s' % self.REPOSITORY.latest)
|
LOG.debug('latest version is %s' % self.REPOSITORY.latest)
|
||||||
|
versions = range(self.INIT_VERSION + 1, self.REPOSITORY.latest + 1)
|
||||||
|
|
||||||
for version in xrange(self.INIT_VERSION + 2,
|
for version in versions:
|
||||||
self.REPOSITORY.latest + 1):
|
|
||||||
# upgrade -> downgrade -> upgrade
|
# upgrade -> downgrade -> upgrade
|
||||||
self._migrate_up(engine, version, with_data=True)
|
self._migrate_up(engine, version, with_data=True)
|
||||||
if snake_walk:
|
if snake_walk:
|
||||||
self._migrate_down(engine, version - 1, with_data=True)
|
downgraded = self._migrate_down(
|
||||||
self._migrate_up(engine, version)
|
engine, version - 1, with_data=True)
|
||||||
|
if downgraded:
|
||||||
|
self._migrate_up(engine, version)
|
||||||
|
|
||||||
if downgrade:
|
if downgrade:
|
||||||
# Now walk it back down to 0 from the latest, testing
|
# Now walk it back down to 0 from the latest, testing
|
||||||
# the downgrade paths.
|
# the downgrade paths.
|
||||||
for version in reversed(
|
for version in reversed(versions):
|
||||||
xrange(self.INIT_VERSION + 2,
|
|
||||||
self.REPOSITORY.latest + 1)):
|
|
||||||
# downgrade -> upgrade -> downgrade
|
# downgrade -> upgrade -> downgrade
|
||||||
self._migrate_down(engine, version - 1)
|
downgraded = self._migrate_down(engine, version - 1)
|
||||||
if snake_walk:
|
|
||||||
|
if snake_walk and downgraded:
|
||||||
self._migrate_up(engine, version)
|
self._migrate_up(engine, version)
|
||||||
self._migrate_down(engine, version - 1)
|
self._migrate_down(engine, version - 1)
|
||||||
|
|
||||||
def _migrate_down(self, engine, version, with_data=False):
|
def _migrate_down(self, engine, version, with_data=False):
|
||||||
self.migration_api.downgrade(engine,
|
try:
|
||||||
self.REPOSITORY,
|
self.migration_api.downgrade(engine, self.REPOSITORY, version)
|
||||||
version)
|
except NotImplementedError:
|
||||||
|
# NOTE(sirp): some migrations, namely release-level
|
||||||
|
# migrations, don't support a downgrade.
|
||||||
|
return False
|
||||||
|
|
||||||
self.assertEqual(version,
|
self.assertEqual(version,
|
||||||
self.migration_api.db_version(engine,
|
self.migration_api.db_version(engine,
|
||||||
self.REPOSITORY))
|
self.REPOSITORY))
|
||||||
@@ -409,6 +410,8 @@ class BaseMigrationTestCase(test.TestCase):
|
|||||||
if post_downgrade:
|
if post_downgrade:
|
||||||
post_downgrade(engine)
|
post_downgrade(engine)
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
def _migrate_up(self, engine, version, with_data=False):
|
def _migrate_up(self, engine, version, with_data=False):
|
||||||
"""migrate up to a new version of the db.
|
"""migrate up to a new version of the db.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user