Makes running api tests via tox simpler
Change-Id: I92c7a010e6e6119f082459ca6b6748ca93cf95bd
This commit is contained in:
parent
149975ed11
commit
9ba23456cd
5
docker/fig/fig_cassandra.yml
Normal file
5
docker/fig/fig_cassandra.yml
Normal file
@ -0,0 +1,5 @@
|
||||
cassandra:
|
||||
build: ../cassandra/.
|
||||
ports:
|
||||
- "9160:9160"
|
||||
- "9042:9042"
|
@ -23,6 +23,17 @@ from poppy.openstack.common import log
|
||||
|
||||
LOG = log.getLogger(__name__)
|
||||
|
||||
_CLI_OPTIONS = (
|
||||
cfg.BoolOpt('daemon', default=False,
|
||||
help='Run Poppy server in the background.'),
|
||||
)
|
||||
|
||||
# NOTE (Obulpathi): Register daemon command line option for
|
||||
# poppy-server
|
||||
CONF = cfg.CONF
|
||||
CONF.register_cli_opts(_CLI_OPTIONS)
|
||||
|
||||
|
||||
_DEFAULT_OPTIONS = [
|
||||
cfg.StrOpt('datacenter', default='',
|
||||
help='Host datacenter of the API'),
|
||||
|
@ -12,6 +12,7 @@
|
||||
# implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
import os
|
||||
|
||||
from oslo.config import cfg
|
||||
|
||||
@ -28,4 +29,35 @@ def run():
|
||||
conf(project='poppy', prog='poppy')
|
||||
|
||||
server = bootstrap.Bootstrap(conf)
|
||||
|
||||
# The following code is to daemonize poppy-server to avoid
|
||||
# an issue with wsgiref writing to stdout/stderr when we don't
|
||||
# want it to. This is specifically needed to allow poppy to
|
||||
# run under devstack, but it may also be useful for other scenarios.
|
||||
# Open /dev/zero and /dev/null for redirection.
|
||||
# Daemonizing poppy-server is needed *just* when running under devstack
|
||||
# and when poppy is invoked with `daemon` command line option.
|
||||
if conf.daemon:
|
||||
zerofd = os.open('/dev/zero', os.O_RDONLY)
|
||||
nullfd = os.open('/dev/null', os.O_WRONLY)
|
||||
|
||||
# Close the stdthings and reassociate them with a non terminal
|
||||
os.dup2(zerofd, 0)
|
||||
os.dup2(nullfd, 1)
|
||||
os.dup2(nullfd, 2)
|
||||
|
||||
# Detach process context, this requires 2 forks.
|
||||
try:
|
||||
pid = os.fork()
|
||||
if pid > 0:
|
||||
os._exit(0)
|
||||
except OSError:
|
||||
os._exit(1)
|
||||
|
||||
try:
|
||||
pid = os.fork()
|
||||
if pid > 0:
|
||||
os._exit(0)
|
||||
except OSError:
|
||||
os._exit(2)
|
||||
server.run()
|
||||
|
@ -21,11 +21,14 @@ To run the tests
|
||||
export CAFE_ROOT_LOG_PATH=~/.poppy/logs
|
||||
export CAFE_TEST_LOG_PATH=~/.poppy/logs
|
||||
|
||||
3. Copy the api.conf file to the path set by CAFE_CONFIG_FILE_PATH::
|
||||
3. The API tests require a running database (eg cassandra), in order to
|
||||
run via tox.
|
||||
|
||||
4. Copy the api.conf file to the path set by CAFE_CONFIG_FILE_PATH::
|
||||
|
||||
cp tests/etc/api.conf ~/.poppy/tests.conf
|
||||
|
||||
4. Once you are ready to run the tests::
|
||||
5. Once you are ready to run the tests::
|
||||
|
||||
cd tests/api
|
||||
nosetests
|
||||
@ -34,26 +37,18 @@ To run the tests
|
||||
Tox Support
|
||||
-----------
|
||||
|
||||
The API tests require cassandra running in your local machine, in order to
|
||||
run via tox. It is assumed you already have the Cassandra instance up &
|
||||
running locally. You can make the API tests part of tox, by overriding the
|
||||
default positional argument in tox.ini::
|
||||
You can run tox using a docker container hosting Cassandra::
|
||||
|
||||
tox -- --exclude=None
|
||||
Note - This will require docker (or boot2docker for MacOSX) to already be installed on the system.
|
||||
|
||||
Alternatively, you can run tox with docker containers running Cassandra::
|
||||
1. Update your `~/.poppy/tests.conf` to point to your docker cassandra container ip address.
|
||||
|
||||
This will require docker (or boot2docker for MacOSX) to already be installed on the system.
|
||||
It will use the fig_local.yaml file to mount your local folder, as described in the Docker folder.
|
||||
Also, dont forget to update your ~/.poppy/tests.conf to point to your docker ip address.
|
||||
|
||||
|
||||
Example 1: Run all API tests::
|
||||
|
||||
tox -e apidocker api
|
||||
|
||||
Example 2: Run a particular test function::
|
||||
|
||||
tox -e apidocker api/services/test_services.py:TestCreateService -- -m test_create_service_positive
|
||||
Example 1: Run all API tests against a docker hosted cassandra instance::
|
||||
|
||||
tox -e api
|
||||
|
||||
Example 2: Run a particular API test function::
|
||||
|
||||
tox -e api api/services/test_services.py:TestCreateService -- -m test_create_service_positive
|
||||
|
||||
|
||||
|
10
tox.ini
10
tox.ini
@ -61,10 +61,12 @@ exclude = .venv*,venv*,.git,.tox,dist,doc,*openstack/common*,*lib/python*,*.egg,
|
||||
[hacking]
|
||||
import_exceptions = poppy.openstack.common.gettextutils._
|
||||
|
||||
[testenv:apidocker]
|
||||
[testenv:api]
|
||||
deps = -r{toxinidir}/requirements/requirements.txt
|
||||
-r{toxinidir}/tests/test-requirements.txt
|
||||
whitelist_externals = docker
|
||||
whitelist_externals =
|
||||
docker
|
||||
sleep
|
||||
setenv = CAFE_CONFIG_FILE_PATH={homedir}/.poppy/tests.conf
|
||||
CAFE_ROOT_LOG_PATH={homedir}/.poppy/logs
|
||||
CAFE_TEST_LOG_PATH={homedir}/.poppy/logs
|
||||
@ -80,5 +82,7 @@ commands =
|
||||
pip install git+https://github.com/stackforge/opencafe.git#egg=cafe
|
||||
pip install -U fig
|
||||
|
||||
{toxinidir}/docker/fig/dev -f fig_local.yml up -d
|
||||
fig -f docker/fig/fig_cassandra.yml up -d
|
||||
sleep 5
|
||||
poppy-server --daemon
|
||||
nosetests {posargs:--nologcapture}
|
||||
|
Loading…
x
Reference in New Issue
Block a user