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
2015-05-29 07:27:59 +00:00
2015-05-27 11:08:57 +03:00
2015-08-26 19:38:49 -04:00
2014-12-02 09:57:52 +01:00
2013-06-24 14:11:15 -07:00
2013-06-14 18:25:42 -04:00
2013-06-24 14:11:15 -07:00
2014-03-19 15:06:23 +01:00
2015-02-04 11:10:28 -08:00
2015-05-29 07:27:59 +00:00
2013-04-29 18:01:12 -04:00
2013-06-25 10:41:57 +02:00
2015-07-23 19:54:04 +03:00
2015-06-17 20:23:51 +00:00
2015-07-15 21:27:34 +00:00
2015-07-16 11:14:33 +08:00

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
Description
RETIRED, further work has moved to Debian project infrastructure
Readme 6.6 MiB