Enable database migration unit tests
- Add taskflow backend config option, which is used in case mysql/postgres migrations test. - changes 006_add_persistence_tables migration to be able to use overridden configuration options - add test database setup script to be used on OpenStack CI (copied from Nova repo) - add database packages (mysql, postgresql, sqlite) to bindep.txt as part of test profile Co-Authored-By: Anton Arefiev <aarefiev@mirantis.com> Change-Id: Ic1482eb4a3758536be6cd831d754e95186ac54d3
This commit is contained in:
parent
67f92126f5
commit
bbe3f630bd
11
bindep.txt
11
bindep.txt
@ -4,3 +4,14 @@
|
||||
# libpq-dev is needed by openstack-tox-py37 build only.
|
||||
libpq-dev [platform:dpkg test]
|
||||
python-dev [platform:dpkg test]
|
||||
libmysqlclient-dev [platform:dpkg test]
|
||||
mysql [platform:rpm test]
|
||||
mysql-client [platform:dpkg test]
|
||||
mysql-devel [platform:rpm test]
|
||||
mysql-server [test]
|
||||
postgresql [test]
|
||||
postgresql-client [platform:dpkg test]
|
||||
postgresql-devel [platform:rpm test]
|
||||
postgresql-server [platform:rpm test]
|
||||
libsqlite3-dev [platform:dpkg test]
|
||||
sqlite-devel [platform:rpm test]
|
||||
|
@ -17,8 +17,6 @@ import masakari.conf
|
||||
from masakari.engine import driver
|
||||
|
||||
CONF = masakari.conf.CONF
|
||||
NOTIFICATION_DRIVER = CONF.notification_driver
|
||||
PERSISTENCE_BACKEND = CONF.taskflow.connection
|
||||
|
||||
|
||||
def upgrade(migrate_engine):
|
||||
@ -26,7 +24,7 @@ def upgrade(migrate_engine):
|
||||
|
||||
# Get the taskflow driver configured, default is 'taskflow_driver',
|
||||
# to load persistence tables to store progress details.
|
||||
taskflow_driver = driver.load_masakari_driver(NOTIFICATION_DRIVER)
|
||||
taskflow_driver = driver.load_masakari_driver(CONF.notification_driver)
|
||||
|
||||
if PERSISTENCE_BACKEND:
|
||||
taskflow_driver.upgrade_backend(PERSISTENCE_BACKEND)
|
||||
if CONF.taskflow.connection:
|
||||
taskflow_driver.upgrade_backend(CONF.taskflow.connection)
|
||||
|
@ -62,7 +62,8 @@ class MasakariMigrationsCheckers(test_migrations.WalkVersionsMixin):
|
||||
old_level = migrate_log.level
|
||||
migrate_log.setLevel(logging.WARN)
|
||||
self.addCleanup(migrate_log.setLevel, old_level)
|
||||
|
||||
CONF.set_override('connection', str(self.migrate_engine.url),
|
||||
group='taskflow')
|
||||
self.useFixture(masakari_fixtures.Timeout(
|
||||
os.environ.get('OS_TEST_TIMEOUT', 0),
|
||||
self.TIMEOUT_SCALING_FACTOR))
|
||||
|
54
tools/test-setup.sh
Executable file
54
tools/test-setup.sh
Executable file
@ -0,0 +1,54 @@
|
||||
#!/bin/bash -xe
|
||||
|
||||
# This script will be run by OpenStack CI before unit tests are run,
|
||||
# it sets up the test system as needed.
|
||||
# Developers should setup their test systems in a similar way.
|
||||
|
||||
# This setup needs to be run as a user that can run sudo.
|
||||
|
||||
# The root password for the MySQL database; pass it in via
|
||||
# MYSQL_ROOT_PW.
|
||||
DB_ROOT_PW=${MYSQL_ROOT_PW:-insecure_slave}
|
||||
|
||||
# This user and its password are used by the tests, if you change it,
|
||||
# your tests might fail.
|
||||
DB_USER=openstack_citest
|
||||
DB_PW=openstack_citest
|
||||
|
||||
sudo -H mysqladmin -u root password $DB_ROOT_PW
|
||||
|
||||
# It's best practice to remove anonymous users from the database. If
|
||||
# an anonymous user exists, then it matches first for connections and
|
||||
# other connections from that host will not work.
|
||||
sudo -H mysql -u root -p$DB_ROOT_PW -h localhost -e "
|
||||
DELETE FROM mysql.user WHERE User='';
|
||||
FLUSH PRIVILEGES;
|
||||
CREATE USER '$DB_USER'@'%' IDENTIFIED BY '$DB_PW';
|
||||
GRANT ALL PRIVILEGES ON *.* TO '$DB_USER'@'%' WITH GRANT OPTION;"
|
||||
|
||||
# Now create our database.
|
||||
mysql -u $DB_USER -p$DB_PW -h 127.0.0.1 -e "
|
||||
SET default_storage_engine=MYISAM;
|
||||
DROP DATABASE IF EXISTS openstack_citest;
|
||||
CREATE DATABASE openstack_citest CHARACTER SET utf8;"
|
||||
|
||||
# Same for PostgreSQL
|
||||
|
||||
# Setup user
|
||||
root_roles=$(sudo -H -u postgres psql -t -c "
|
||||
SELECT 'HERE' from pg_roles where rolname='$DB_USER'")
|
||||
if [[ ${root_roles} == *HERE ]];then
|
||||
sudo -H -u postgres psql -c "ALTER ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'"
|
||||
else
|
||||
sudo -H -u postgres psql -c "CREATE ROLE $DB_USER WITH SUPERUSER LOGIN PASSWORD '$DB_PW'"
|
||||
fi
|
||||
|
||||
# Store password for tests
|
||||
cat << EOF > $HOME/.pgpass
|
||||
*:*:*:$DB_USER:$DB_PW
|
||||
EOF
|
||||
chmod 0600 $HOME/.pgpass
|
||||
|
||||
# Now create our database
|
||||
psql -h 127.0.0.1 -U $DB_USER -d template1 -c "DROP DATABASE IF EXISTS openstack_citest"
|
||||
createdb -h 127.0.0.1 -U $DB_USER -l C -T template0 -E utf8 openstack_citest
|
Loading…
Reference in New Issue
Block a user