044cf85ef5
This leverage pifpaf to start MySQL or PostgreSQL temporarily and allow to test provisioning directly without being on OpenStack CI by adding new tox targets: - py27-mysql - py27-postgresql - py34-mysql - py34-postgresql - py27-all - py34-all These targets will start MySQL or PostgreSQL before running the tests, while exporting the connection string to $PIFPAF_URL. The `all' target will start both MySQL and PostgreSQL and will run the tests against these backends, plus SQLite. Also, this patches add OS_TEST_DBAPI_ADMIN_CONNECTION to be allowed to be passed through tox. This allows to run the opportunistic tests on a more persistent pifpaf database, for example by running tox with: $ eval `pifpaf -g OS_TEST_DBAPI_ADMIN_CONNECTION run postgresql` $ echo $OS_TEST_DBAPI_ADMIN_CONNECTION postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmpMGqN8C&port=9824 $ tox -e py27 […] $ tox -e py34 […] $ kill $PIFPAF_PID Change-Id: I1ee582e6f96e98378f02be79f4aaff0f447a062a Depends-On: Id3e6b694bb186724517599cd9875ad80ceeee053
90 lines
3.3 KiB
ReStructuredText
90 lines
3.3 KiB
ReStructuredText
=================
|
|
How to contribute
|
|
=================
|
|
|
|
If you would like to contribute to the development of OpenStack,
|
|
you must follow the steps in this page:
|
|
|
|
http://docs.openstack.org/infra/manual/developers.html
|
|
|
|
Once those steps have been completed, changes to OpenStack
|
|
should be submitted for review via the Gerrit tool, following
|
|
the workflow documented at:
|
|
|
|
http://docs.openstack.org/infra/manual/developers.html#development-workflow
|
|
|
|
Pull requests submitted through GitHub will be ignored.
|
|
|
|
Bugs should be filed on Launchpad, not GitHub:
|
|
|
|
https://bugs.launchpad.net/oslo.db
|
|
|
|
|
|
How to run unit tests
|
|
=====================
|
|
|
|
oslo.db (as all OpenStack projects) uses tox to run unit tests. You can find
|
|
general information about OpenStack unit tests and testing with tox in wiki_.
|
|
|
|
oslo.db tests use PyMySQL as the default MySQL DB API driver (which is true for
|
|
OpenStack), and psycopg2 for PostgreSQL. pip will build these libs in your
|
|
venv, so you must ensure that you have the required system packages installed
|
|
for psycopg2 (PyMySQL is a pure-Python implementation and so needs no
|
|
additional system packages). For Ubuntu/Debian they are python-dev, and
|
|
libpq-dev. For Fedora/CentOS - gcc, python-devel and postgresql-devel.
|
|
There is also a separate env for testing with MySQL-python. If you are suppose
|
|
to run these tests as well, you need to install libmysqlclient-dev on
|
|
Ubuntu/Debian or mysql-devel for Fedora/CentOS.
|
|
|
|
The oslo.db unit tests system allows to run unittests on real databases. At the
|
|
moment it supports MySQL, PostgreSQL and SQLite.
|
|
For testing on a real database backend you need to set up a user
|
|
``openstack_citest`` with password ``openstack_citest`` on localhost (some
|
|
OpenStack projects require a database named 'openstack_citest' too).
|
|
Please note, that this user must have permissions to create and drop databases.
|
|
If the testing system is not able to connect to the backend, tests on it will
|
|
be skipped.
|
|
|
|
For PostgreSQL on Ubuntu you can create a user in the following way::
|
|
|
|
sudo -u postgres psql
|
|
postgres=# create user openstack_citest with createdb login password
|
|
'openstack_citest';
|
|
|
|
For MySQL you can use the following commands::
|
|
|
|
mysql -u root
|
|
mysql> CREATE USER 'openstack_citest'@'localhost' IDENTIFIED BY
|
|
'openstack_citest';
|
|
mysql> GRANT ALL PRIVILEGES ON * . * TO 'openstack_citest'@'localhost';
|
|
mysql> FLUSH PRIVILEGES;
|
|
|
|
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::
|
|
|
|
tox -e py27-mysql
|
|
tox -e py27-postgresql
|
|
tox -e py34-mysql
|
|
tox -e py34-postgresql
|
|
tox -e py27-all
|
|
tox -e py34-all
|
|
|
|
The database will be set up for you locally and temporarily on each run.
|
|
|
|
Another way is to start `pifpaf` manually and use it to run the tests as you
|
|
wish::
|
|
|
|
$ eval `pifpaf -g OS_TEST_DBAPI_ADMIN_CONNECTION run postgresql`
|
|
$ echo $OS_TEST_DBAPI_ADMIN_CONNECTION
|
|
postgresql://localhost/postgres?host=/var/folders/7k/pwdhb_mj2cv4zyr0kyrlzjx40000gq/T/tmpMGqN8C&port=9824
|
|
$ tox -e py27
|
|
[…]
|
|
$ tox -e py34
|
|
[…]
|
|
# Kill pifpaf once you're done
|
|
$ kill $PIFPAF_PID
|
|
|
|
.. _wiki: https://wiki.openstack.org/wiki/Testing#Unit_Tests
|
|
.. _pifpaf: https://github.com/jd/pifpaf
|