summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-02-07 09:37:43 +0000
committerGerrit Code Review <review@openstack.org>2017-02-07 09:37:43 +0000
commit08003cf63fa08dd8b30b917d7d80daeb512f51fb (patch)
tree88d075d8736e7c86d41c03d690c998993605c4de
parent47ff7d894bdc9870dd36cfbf9716d22ec61b4ad3 (diff)
parentc128d3c4bc655005fe1fdd04c7e9d2f2c2b3ca2c (diff)
downloadoslo-db-08003cf63fa08dd8b30b917d7d80daeb512f51fb.tar.gz
Merge "Prepare for using standard python tests" into stable/ocata
-rw-r--r--CONTRIBUTING.rst4
-rwxr-xr-xtools/test-setup.sh57
2 files changed, 61 insertions, 0 deletions
diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst
index aa704f9..51a0c3d 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -59,6 +59,10 @@ For MySQL you can use the following commands::
mysql> GRANT ALL PRIVILEGES ON * . * TO 'openstack_citest'@'localhost';
mysql> FLUSH PRIVILEGES;
+See the script ``tools/test-setup.sh`` on how the databases are set up
+excactly in the OpenStack CI infrastructure and use that for your
+set up.
+
Alternatively, you can use `pifpaf`_ to run the unit tests directly without
setting up the database yourself. You still need to have the database software
installed on your system. The following tox environments can be used::
diff --git a/tools/test-setup.sh b/tools/test-setup.sh
new file mode 100755
index 0000000..07a0785
--- /dev/null
+++ b/tools/test-setup.sh
@@ -0,0 +1,57 @@
+#!/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
+# a 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;
+ GRANT ALL PRIVILEGES ON *.*
+ TO '$DB_USER'@'%' identified by '$DB_PW' 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
+# The root password for the PostgreSQL database; pass it in via
+# POSTGRES_ROOT_PW.
+DB_ROOT_PW=${POSTGRES_ROOT_PW:-insecure_slave}
+
+# 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