Clean up packaging and docs to make this consumable
* add a convenience Makefile * add license headers * rationalized requirements.txt * add wheel building capabilities * update README
This commit is contained in:
parent
d570f5da52
commit
487ebec24f
23
Makefile
Normal file
23
Makefile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# simple Makefile for some common tasks
|
||||||
|
.PHONY: clean dist release pypi tagv
|
||||||
|
|
||||||
|
clean:
|
||||||
|
find . -name "*.pyc" |xargs rm || true
|
||||||
|
rm -r dist || true
|
||||||
|
rm -r build || true
|
||||||
|
rm -r .eggs || true
|
||||||
|
rm -r gabbi_tempest.egg-info || true
|
||||||
|
|
||||||
|
tagv:
|
||||||
|
git tag -s \
|
||||||
|
-m `python -c 'import gabbi_tempest; print gabbi_tempest.__version__'` \
|
||||||
|
`python -c 'import gabbi_tempest; print gabbi_tempest.__version__'`
|
||||||
|
git push origin master --tags
|
||||||
|
|
||||||
|
dist:
|
||||||
|
python setup.py sdist bdist_wheel
|
||||||
|
|
||||||
|
release: clean tagv pypi
|
||||||
|
|
||||||
|
pypi:
|
||||||
|
python setup.py sdist bdist_wheel upload --sign
|
59
README.rst
59
README.rst
@ -2,16 +2,26 @@
|
|||||||
Gabbi + Tempest
|
Gabbi + Tempest
|
||||||
===============
|
===============
|
||||||
|
|
||||||
This is an exploration of running gabbi_ as a tempest plugin. This
|
Gabbi-tempest is an experimental Tempest_ plugin_ that enables
|
||||||
code is based entirely on the work of Mehdi Abaakouk who made a
|
testing the APIs of running OpenStack services, integrated with
|
||||||
tempest plugin for gnocchi_. This code models that but tries to
|
tempest but without needing to write Python. Instead the YAML
|
||||||
be more generic: it allows you to set a ``GABBI_TEMPEST_PATH``
|
format_ provided by gabbi_ is used to write and evaluate HTTP
|
||||||
environment variable pointing to multiple directories containing
|
requests and responses.
|
||||||
gabbi YAML files.
|
|
||||||
|
Tests are placed in YAML files in one or more directories. Those
|
||||||
|
directories are added to a ``GABBI_TEMPEST_PATH`` environment
|
||||||
|
variable. When that variable is passed into a tempest test
|
||||||
|
runner that is aware of the gabbi plugin, the files on that path
|
||||||
|
will be used to create tempests tests.
|
||||||
|
|
||||||
The test harness sets a series of enviornment variables that can
|
The test harness sets a series of enviornment variables that can
|
||||||
be used in the YAML to reach the available services. These will
|
be used in the YAML to reach the available services. The available
|
||||||
eventually need to be extended (or can be extended by subclasses).
|
variables may be extended in two ways:
|
||||||
|
|
||||||
|
* Adding them to the environment that calls tempest if the values are
|
||||||
|
known.
|
||||||
|
* Setting them in a subclass of the plugin if the values need to
|
||||||
|
be calculated from what tempest knows.
|
||||||
|
|
||||||
For each service in the service catalog there are
|
For each service in the service catalog there are
|
||||||
``<SERVICE_TYPE>_SERVICE`` and ``<SERVICE_TYPE>_BASE`` variables
|
``<SERVICE_TYPE>_SERVICE`` and ``<SERVICE_TYPE>_BASE`` variables
|
||||||
@ -19,38 +29,55 @@ For each service in the service catalog there are
|
|||||||
``SERVICE_TOKEN``, ``IMAGE_REF``, ``FLAVOR_REF`` and ``FLAVOR_REF_ALT``
|
``SERVICE_TOKEN``, ``IMAGE_REF``, ``FLAVOR_REF`` and ``FLAVOR_REF_ALT``
|
||||||
are also available.
|
are also available.
|
||||||
|
|
||||||
|
For the time being the ``SERVICE_TOKEN`` is ``admin``.
|
||||||
|
|
||||||
Trying It
|
Trying It
|
||||||
---------
|
---------
|
||||||
|
|
||||||
To experiment with this you need a working tempest installation and
|
To experiment with this you need a working tempest installation and
|
||||||
configuration. I used devstack with::
|
configuration. One way to do that is to use devstack_ with the
|
||||||
|
following added to the local.conf::
|
||||||
|
|
||||||
enable_service tempest
|
enable_service tempest
|
||||||
INSTALL_TEMPEST=True
|
INSTALL_TEMPEST=True
|
||||||
|
|
||||||
in local.conf.
|
in local.conf.
|
||||||
|
|
||||||
Once tempest is confirmed to be working, make a clone of this repo,
|
Once tempest is confirmed to be working, gabbi-tempest must be
|
||||||
cd into it and do the equivalent of::
|
installed. Either install it from PyPI::
|
||||||
|
|
||||||
|
pip install gabbi-tempest
|
||||||
|
|
||||||
|
Or make a clone of this repo_, cd into it, and do the equivalent of::
|
||||||
|
|
||||||
pip install -e .
|
pip install -e .
|
||||||
|
|
||||||
If you are using virtualenvs or need sudo, your form will be
|
If you are using virtualenvs or need sudo, your form will be
|
||||||
different.
|
different.
|
||||||
|
|
||||||
|
Create some gabbi_ tests that exercise the OpenStack services. There
|
||||||
|
are sample files in the ``samples`` directory in the repo_.
|
||||||
|
|
||||||
Go to the tempest directory (often ``/opt/stack/tempest``) and run
|
Go to the tempest directory (often ``/opt/stack/tempest``) and run
|
||||||
tempest limiting the test run to gabbi related tests and setting
|
tempest as follows. Adding the ``regex`` will limit the test run
|
||||||
the PATH variable::
|
to just gabbi related tests::
|
||||||
|
|
||||||
GABBI_TEMPEST_PATH=/path/one:/path/two tempest run --regex gabbi
|
GABBI_TEMPEST_PATH=/path/one:/path/two tempest run --regex gabbi
|
||||||
|
|
||||||
This will run the tests described by the YAML files in
|
This will run the tests described by the YAML files in
|
||||||
``/path/one`` and ``/path/two``.
|
``/path/one`` and ``/path/two``.
|
||||||
|
|
||||||
There is a sample files in ``samples`` in the repo which you can try
|
History
|
||||||
with::
|
-------
|
||||||
|
|
||||||
GABBI_TEMPEST_PATH=/path/to/samples tempest run --regex gabbi
|
This code is based on the work of Mehdi Abaakouk who made a tempest
|
||||||
|
plugin for gnocchi_ that worked with gabbi_. He figured out the
|
||||||
|
details of the plugin structure.
|
||||||
|
|
||||||
|
.. _devstack: https://docs.openstack.org/devstack/latest/
|
||||||
|
.. _Tempest: https://docs.openstack.org/tempest/latest/
|
||||||
|
.. _plugin: https://docs.openstack.org/tempest/latest/plugin.html
|
||||||
.. _gnocchi: https://review.openstack.org/#/c/301585/
|
.. _gnocchi: https://review.openstack.org/#/c/301585/
|
||||||
.. _gabbi: https://gabbi.readthedocs.org/
|
.. _gabbi: https://gabbi.readthedocs.org/
|
||||||
|
.. _format: https://gabbi.readthedocs.io/en/latest/format.html
|
||||||
|
.. _repo: https://github.com/cdent/gabbi-tempest
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
__version__ = '0.1.0'
|
@ -0,0 +1,11 @@
|
|||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
@ -1 +1,3 @@
|
|||||||
|
pbr
|
||||||
gabbi
|
gabbi
|
||||||
|
six
|
||||||
|
@ -89,7 +89,9 @@ tests:
|
|||||||
response_json_paths:
|
response_json_paths:
|
||||||
$.server.status: VERIFY_RESIZE
|
$.server.status: VERIFY_RESIZE
|
||||||
|
|
||||||
|
# expected to fail because we don't double this way anymore
|
||||||
- name: check for double allocations
|
- name: check for double allocations
|
||||||
|
xfail: True
|
||||||
GET: *s1_alloc
|
GET: *s1_alloc
|
||||||
poll:
|
poll:
|
||||||
count: 10
|
count: 10
|
||||||
|
@ -15,8 +15,8 @@ classifier =
|
|||||||
Programming Language :: Python :: 2
|
Programming Language :: Python :: 2
|
||||||
Programming Language :: Python :: 2.7
|
Programming Language :: Python :: 2.7
|
||||||
Programming Language :: Python :: 3
|
Programming Language :: Python :: 3
|
||||||
Programming Language :: Python :: 3.4
|
|
||||||
Programming Language :: Python :: 3.5
|
Programming Language :: Python :: 3.5
|
||||||
|
Programming Language :: Python :: 3.6
|
||||||
Topic :: Software Development :: Testing
|
Topic :: Software Development :: Testing
|
||||||
|
|
||||||
[files]
|
[files]
|
||||||
@ -31,3 +31,6 @@ source-dir = docs/source
|
|||||||
[entry_points]
|
[entry_points]
|
||||||
tempest.test_plugins =
|
tempest.test_plugins =
|
||||||
gabbi = gabbi_tempest.plugin:GabbiTempestPlugin
|
gabbi = gabbi_tempest.plugin:GabbiTempestPlugin
|
||||||
|
|
||||||
|
[bdist_wheel]
|
||||||
|
universal=1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user