oslo.db/CONTRIBUTING.rst
Jeremy Stanley 9b552046f5 Switch from MySQL-python to PyMySQL
As discussed in the Liberty Design Summit "Moving apps to Python 3"
cross-project workshop, the way forward in the near future is to
switch to the pure-python PyMySQL library as a default.

Added a special test environment to keep MySQL-python support.
Documentation modified.

https://etherpad.openstack.org/p/liberty-cross-project-python3

Change-Id: I12b32dc097a121bd43991bc38dd4d289b65e86c1
2015-06-18 15:42:23 +03:00

2.4 KiB

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;