Xen UT failures seem to have cleared up, which may or may not have
anything to do with [1]. Remove the blacklist file and get these back
in the py3 jobs.
[1] https://review.openstack.org/#/c/591061/
Change-Id: Iacc1ae01f535caed64793d57b757ea07a8c46620
Without this, you can successfully run a 'functional-py36' environment,
but no actual tests are run. Python 3.6 is common in many environments
these days, and we want devs to test locally. This helps.
Change-Id: I2c04b7a8b6ee06638c6ce92dc51e200fa2b13539
In commit df669caf, we modified tox.ini to reuse a shared directory for
environments with the same dependencies. The 'venv' directory was
chosen as this seemed like a suitably generic target. However, the
'venv' target actually uses a non-default values for 'deps' as doc
requirements are included to allow things like reno using this target.
This means switching between the 'venv' target and any of the other
other targets using this directory will result in the virtualenv being
rebuilt each time.
Resolve this by using an explicit directory for these shared
environments. A single setting of 'deps' for one of the targets is
removed to make this clear.
Change-Id: I239606f5f354a5536b20b1d31ee81d80b4572106
There's nothing we can do to fix this so simply silence it until we no
longer support that version.
Change-Id: Ic7a199a1374e6f36c092e5ca6faa435aa5bf4cbd
- This change adds requirements.txt to the list
of requirements files used when createing
the tox venv environment.
Change-Id: Ib222b3cb68d2129c061400f51f50a19d186b9080
This massively reduces the amount of time needed to install dependencies
and saves a lot of disk space to boot #winning
Note that it's not possible to use 'envdir = {[testenv:py27]envdir}' as
that syntax doesn't work with implicit attributes.
Change-Id: I229e1961a66db08be2d4f7235d2c3724e875f13b
Take advantage of tox's expressiveness to avoid duplication wherever
possible and document the many targets we have.
Change-Id: I33675b7eedcffcebf1115dd48757874cb73f3e2f
Signed-off-by: Stephen Finucane <sfinucan@redhat.com>
We want to default to running all tox environments under python 3, so
set the basepython value in [testenv].
We do not want to specify a minor version number, because we do not
want to have to update the file every time we upgrade python.
We must explicitly set basepython in envs that are usually "automatic" -
otherwise due to https://github.com/tox-dev/tox/issues/425 these will
use `basepython` instead of their automatic equivalents.
Change-Id: I1026110f0f1736127cf0af8ec2ef791a0f999e3a
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
This adds a granular policy checking framework for
placement based on nova.policy but with a lot of
the legacy cruft removed, like the is_admin and
context_is_admin rules.
A new PlacementPolicyFixture is added along with
a new configuration option, [placement]/policy_file,
which is needed because the default policy file
that gets used in config is from [oslo_policy]/policy_file
which is being used as the nova policy file. As
far as I can tell, oslo.policy doesn't allow for
multiple policy files with different names unless
I'm misunderstanding how the policy_dirs option works.
With these changes, we can have something like:
/etc/nova/policy.json - for nova policy rules
/etc/nova/placement-policy.yaml - for placement rules
The docs are also updated to include the placement
policy sample along with a tox builder for the sample.
This starts by adding granular rules for CRUD operations
on the /resource_providers and /resource_providers/{uuid}
routes which use the same descriptions from the placement
API reference. Subsequent patches will add new granular
rules for the other routes.
Part of blueprint granular-placement-policy
Change-Id: I17573f5210314341c332fdcb1ce462a989c21940
Create a tox environment for running the unit tests against the lower
bounds of the dependencies.
Create a lower-constraints.txt to be used to enforce the lower bounds
in those tests.
Add openstack-tox-lower-constraints job to the zuul configuration.
See http://lists.openstack.org/pipermail/openstack-dev/2018-March/128352.html
for more details.
Change-Id: Ic28558ee6481d49a9b4e5dc2c4182504e330448f
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
Co-Authored-by: Eric Fried <efried@us.ibm.com>
Co-Authored-by: Jim Rollenhagen <jim@jimrollenhagen.com>
We recently fixed a couple of pep8 failures under py3 [0] which got
through because we're not gating pep8 on py3. This changes the python
version for the pep8 tox env to python3 because the py3 checks are
stricter. This updates the fast8 tox env as well.
[0] https://review.openstack.org/#/c/557633
Change-Id: I540377606a8224ba569b8c145773e7d057575bd8
The Project Testing Interface [1] asks that we list requirements in
'doc/requirements.txt' and build docs by calling 'sphinx-build' directly
instead of via the 'build_sphinx' setuptool/distutils wrapper. Start
doing this.
[1] https://governance.openstack.org/tc/reference/project-testing-interface.html
Change-Id: If9342c8ea757b1735f2488db751008984fb33baf
This commit removes the single quotes from all the stestr run commands
in the tox.ini. These were originally added as a workaround from the
ostestr days to ensure people could run a subset of tests with a regex
like:
tox -epy27 regex
With the switch to stestr this is no longer needed because stestr treats
extra arguments as a filter regex. Quoting the posargs has a negative
effect because '--' parameters are treated as a string on input instead
of a parameter.
Fixing this also uncovered another issue in the stestr commands for the
functional jobs. The CLI arg for stestr versions <=1.1.0 is
--group_regex not --group-regex. This commit fixes this to make those
jobs pass without the quotes.
Change-Id: I512a517fa6890b29de24060376b4d7e061dc3add
With the current super-explicit version of tox.ini, it is not possible
to run tox -epy<any version> and have tests discovered and run. This
is because the default testenv does not run tests. Therefore, the
easiest way to add another version is to simply add another testenv,
as done in this change.
Python3.6 is the default Python3 on recent distributions so it needs
to be present if people are expected to be able to run python3 unit
tests before pushing their changes.
Change-Id: I728e482af3142bb101fc6bf52ec7926e29a42594
Nova switched to using stestr for all it's in tree testing except for
the coverage job. This commit updates that job so it also uses stestr
and cleans up the last bits of testr setup left in tree. As part of
this change this moves all the one off per job configuration into the
tox job definitions instead of hiding it in either the .stestr.conf or
in a wrapper script.
Change-Id: I36e0e791d485b44641a1ed8770eca8e95aca19be
Use whereto to test that the redirect rules do what we expect. The
test coverage is a bit minimal for now, but should be useful as an
example of how it can be extended. The test files in the
openstack-manuals repo provide some other examples.
Depends-On: I36003d3525dcc9fef8e5f008ecabb2b2ac78088e
Change-Id: Ia14bfa6c89fd04844842d727d11ff8874ec7fc2a
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
Since ostestr switched to running stestr under the covers, we lost the
old magic setting of the environment variables via .testr.conf for
capturing stderr/stdout and the test timeout. This makes the unit,
functional, and api-samples envs consistent with the py27 env that was
already updated to set those variables.
This also updates the pretty_tox3.sh script to run stestr directly.
Change-Id: I27fa9b7e25c1a1dc921653eec84864423f898a85
This commit adds a printing of the 10 slowest tests during the run at
the end of the tox jobs. People have found this useful in the past and
ostestr used to do this by defualt. But, now that stestr is used to run
tests we need to make this call after a run to retain the output.
Change-Id: Ife81963e5ffb63e4ea09817e735eb768d7cf6209
People seem to hate the idea of using tox -epy27 -- foo to use a
test regex so add single quotes around posargs to make it so you can
just do tox -epy27 foo again.
Change-Id: I12c5d2dc78db3bc8954ff420492115ff53c42703
Now that we're using stestr directly we have more flexibility on how we
run the osprofiler tests. This patch makes it run second without test
discovery and combines the subunit output with the results of the
previous full test run.
Change-Id: I49db096dd3056a4fd2ec6e6603b59e70a8d25480
The os-testr 1.0.0 release had a couple of required config changes due
to it's internal usage of stestr. This commit fixes those by adding a
.stestr.conf (to remove a warning) sets the fixture env variables in
the tox.ini instead of being hidden in .testr.conf and removing the
quotes around posargs to make passing args to ostestr actually work.
Also to keep the expected dev experience stestr is used directly for
places where ostestr was called directly.
Change-Id: Ib0fbcb2e7710a6b8219c56ef2a4462c61ea498a9
In the unit test tox jobs we run the whole test suite first and after
that exits successfully we also run the osprofiler tests while setting
an osprofiler env variable to enable osprofiler. However the regex isn't
being set properly in ostestr, you set the selection regex with the
--regex flag. [1] This only works by chance because ostestr will pass
any unrecognized args to the subprocess used to run testr internally,
and testr leverages that as a regex. But in the latest os-testr release
it doesn't subprocess internally anymore and this doesn't work. This
commit fixes things to properly set the regex in ostestr so it works in
both old and new versions.
The order of the test runs is also switched because we capture the last
test run's subunit for openstack-health and other analysis, so we want
to full test run to be used for this.
[1] https://docs.openstack.org/os-testr/latest/user/ostestr.html#test-selection
Change-Id: I890505d65ca6043ddbdcc5895f2620391b505756
If there is no api reference for some placement API method
tox -e placement-api-ref will fail now.
Change-Id: Ifefedcd51f1f8d5e741ef6d02b7a0879a185e05f
In an environment where http_proxy env variable is needed to buil a
proper python virtualenv the functional test fails with:
RuntimeError: http_proxy or https_proxy set in environment, please unset
This patch removes passing proxy env varibles in tox.ini to avoid this
error.
Change-Id: Ia4d8fe952aecb5c3e688878ef0fdafd6fac4fc7a
Closes-Bug: #1706545
As pep8 does not run on doc generation python code so we have some
style violations there. As it not too hard to fix the problems and
therefore enable pep8 on these files this patch proposes such a
change.
Change-Id: I26104ea66fc4f3e67f8227025f43202e483beb25
Some time ago the placement-api-ref source structure was changed
(Ia2fd62ae7f401cad34ee7c2b355c9a5ab1c93f6b) to use inc-files istead of
putting all in index.rst, but that change broke placement_api_docs.py.
This change modifies placement_api_docs.py to go through all *.inc files
in placement-api-ref directory and scan for the "rest method" header.
Change-Id: I60150ab51173934f848662499dcf6af18625697e
This continues to make wrong guesses in many environments, and it only
slows down running pep8. Do not have this in the tree.
Change-Id: Ia63a279685160157385cc231c4b6dc2243f31d01
This consists of a duplicate of the [nova-]api-ref setup and
conf.py along with tooling to fail the tox -edocs target when
a route that is defined in
nova.api.openstack.placement.handler.ROUTE_DECLARATIONS is not
present in placement-api-ref/source/index.rst.
tools/placement_api_docs.py will report which routes are missing.
Though completely gameable (as demonstrated in the current lame
index.rst) it's better than nothing and provides some useful
structuring on what to do next. It's also the case that the 'docs'
target in tox is not part of gating.
The response for GET / is in place with the necessary
parameters.yaml for it to be correctly described. The 'get-root.json'
file provides the JSON of the expected response. The expectation is
that later commits will add information for other urls and their
JSON files will be named method-path-separated-by-dash.json with a
request/response qualifier as necessary.
Followup patches will add other routes.
A new parameters.yaml is used instead of reusing the one from
api-ref as there isn't a lot of expected overlap and having a
separate file will ease eventual extraction.
Running tox -eplacement-api-ref will generate the docs for review,
with output in placement-api-ref/build/html/index.html.
This will be hooked up with CI to deploy the generated docs,
eventually.
Change-Id: Ifb4d91d39db0e49b55952e37cdfc9f63dcd37aa3
Change 98cbf72e57e1d6950b3ea333b673c1c1c39a6cd7 handled this for
the py35 target but missed the functional-py35 target because
that one doesn't inherit the commands from the root testenv.
Change-Id: I018b809488f9e979f334c75415c15acb58dbd782
Related-Bug: #1229445