OpenStack Database As A Service (Trove)
Go to file
Edmond Kotowski 2b963fa4b1 Fix instance from alternating status on create
Instances will currently alternate between
BUILD->ACTIVE->BUILD->ACTIVE on create. This was
happening because a race condition existed between
the datastore sending heartbeats that the service is
ACTIVE before and the prepare call manually stopping
the service to bring the status back to BUILD.

The fix is to add an optional param force to set_status
that is going to be set to True for end_install_or_restart
which is called at the end of prepare for all datastores either
directly or through app.complete_install_or_restart(). When
set_status is called it will now check if the instance status
was currently BUILDING and if the force flag is False. This
means that the prepare call has not yet finished and to skip
the heartbeat from updating the status. Once prepare is finished
it will call complete_install_or_restart which will in turn
call end_install_or_restart and force the status to be updated
from BUILD to ACTIVE. If setting status to FAILED or
BUILD_PENDING it will never skip the heartbeat.

For mongodb I added complete_install_or_restart to service.py
to be called at the end of prepare for single instance mongo
instead of calling set_status directly to RUNNING.

Cleaned up BaseDbStatusTests and added new tests covering new
logic.

Change-Id: I7cbd5667e27608edef9755280a8f072495839e1d
Closes-Bug: 1482795
2015-08-31 13:44:16 -07:00
apidocs Fix a few typos in log messages and comments 2015-08-11 17:32:15 +09:00
contrib Fixes hacking rules 2015-05-29 07:27:59 +00:00
devstack Have devstack plugin install Trove client 2015-07-30 20:49:34 +00:00
doc Improving manual install docs 2015-05-27 11:08:57 +03:00
etc Add generic int-test classes 2015-08-26 19:38:49 -04:00
tools Remove Python 2.6 classifier 2014-12-02 09:57:52 +01:00
trove Fix instance from alternating status on create 2015-08-31 13:44:16 -07:00
.coveragerc Rename from reddwarf to trove. 2013-06-24 14:11:15 -07:00
.gitignore Moved the apidocs from openstack/database-api 2014-04-24 14:41:40 -05:00
.gitreview Renamed repos to trove. 2013-06-14 18:25:42 -04:00
.testr.conf Rename from reddwarf to trove. 2013-06-24 14:11:15 -07:00
CONTRIBUTING.rst Update CONTRIBUTING.RST file 2015-02-04 11:10:28 -08:00
LICENSE Add Apache 2.0 LICENSE file. 2013-04-29 18:01:12 -04:00
MANIFEST.in Package AUTHORS and ChangeLog file 2013-06-25 10:41:57 +02:00
README.rst Fix description for "Inapt spelling of a word" 2015-08-20 04:07:30 +00:00
babel.cfg Setup trove for translation 2014-03-19 15:06:23 +01:00
doc-test.conf Update database-api to follow OpenStack conventions 2014-05-23 07:32:29 +02:00
generate_examples.py Fixes hacking rules 2015-05-29 07:27:59 +00:00
requirements.txt Updated from global requirements 2015-08-14 09:23:18 +00:00
run_tests.py Remove openstack.common package 2015-07-23 19:54:04 +03:00
run_tests.sh Remove extraneous vim configuration comments 2014-02-27 15:05:21 +08:00
setup.cfg Update version for Liberty 2015-06-17 20:23:51 +00:00
setup.py Updated from global requirements 2015-07-15 21:27:34 +00:00
test-requirements.txt Updated from global requirements 2015-07-23 12:54:25 +00:00
tox.ini Remove H305,H307,H402,H407,H904 2015-07-16 11:14:33 +08:00

README.rst

Trove

Trove is Database as a Service for OpenStack.

Usage for integration testing

If you'd like to start up a fake Trove API daemon for integration testing with your own tool, run:

$ ./tools/start-fake-mode.sh

Stop the server with:

$ ./tools/stop-fake-mode.sh

Tests

To run all tests and PEP8, run tox, like so:

$ tox

To run just the tests for Python 2.7, run:

$ tox -epy27

To run just PEP8, run:

$ tox -epep8

To generate a coverage report,run:

$ tox -ecover

(note: on some boxes, the results may not be accurate unless you run it twice)

If you want to run only the tests in one file you can use testtools e.g.

$ python -m testtools.run trove.tests.unittests.python.module.path