summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2017-02-05 17:36:16 +0000
committerGerrit Code Review <review@openstack.org>2017-02-05 17:36:16 +0000
commit92db0e04b8567d8f93035dc6e82d0fb9a33aa0a0 (patch)
tree3bcab97d5b9601db50e312dce75d8ccdac6cf2f9
parent7af28bf91b555b3d24282d3830218a5e10e16511 (diff)
parent515afe532383f1163dc3e145e33d9dae0cffd21f (diff)
downloadtrove-92db0e04b8567d8f93035dc6e82d0fb9a33aa0a0.tar.gz
Merge "Prepare for using standard python tests"7.0.0.0rc1
-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 6bf4276d..9242f34a 100644
--- a/CONTRIBUTING.rst
+++ b/CONTRIBUTING.rst
@@ -319,3 +319,7 @@ If you want to run only the tests in one file you can use testtools e.g.
.. code-block:: bash
$ python -m testtools.run trove.tests.unittests.python.module.path
+
+Note that some unit tests can use an existing database. The script
+``tools/test-setup.sh`` sets up the database for CI jobs and can be
+used for local setup.
diff --git a/tools/test-setup.sh b/tools/test-setup.sh
new file mode 100755
index 00000000..07a07854
--- /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