81 Commits

Author SHA1 Message Date
Tim Burke
1c03d58643 CI: Move probe tests to centos 9 stream
Pin selenium to 3.x for now, until we can run down the issues with 4.x

Change-Id: I596415d17f77f48a6e8a63a61b734a8ca0865847
2024-03-15 08:09:25 -07:00
Tim Burke
af15ad53fb tests: Update CORS geckodriver
Change-Id: I5ab762dfe0f85e346c4868ec4540884ba5f0a7f4
2024-03-14 20:45:47 -07:00
Tim Burke
bd3b2256a9 CI: Remove centos-7 jobs
CentOS 7 will go EOL later this year, and infra wants to drop the nodes
soon-ish -- don't make them wait on our account.

The only major loss is py2 probe tests, but officially, yoga was the
last release we pledged to support py2.

Change-Id: I8f6c247c21f16aa4717569cc69308f846c6a0245
2024-03-01 11:54:50 -08:00
Tim Burke
f32f2dd023 CI: pin python-dateutil for py2
Their 2.9.0 release is known-broken for py27-py35.

Change-Id: I40c1724fa673ac252f5052ac85006788ba69d5c7
2024-03-01 09:12:28 -08:00
Alistair Coles
60c04f116b s3api: Stop propagating storage policy to sub-requests
The proxy_logging middleware needs an X-Backend-Storage-Policy-Index
header to populate the storage policy field in logs, and will look in
both request and response headers to find it.

Previously, the s3api middleware would indiscriminately copy the
X-Backend-Storage-Policy-Index from swift backend requests into the
S3Request headers [1]. This works for logging but causes the header
to leak between backend requests [2] and break mixed policy
multipart uploads. This patch sets the X-Backend-Storage-Policy-Index
header on s3api responses rather than requests.

Additionally, the middleware now looks for the
X-Backend-Storage-Policy-Index header in the swift backend request
*and* response headers, in the same way that proxy_logging would
(preferring a response header over a request header). This means that
a policy index is now logged for bucket requests, which only have
X-Backend-Storage-Policy-Index header in their response headers.

The s3api adds the value from the *final* backend request/response
pair to its response headers. Returning the policy index from the
final backend request/response is consistent with swift.backend_path
being set to that backend request's path i.e. proxy_logging will log
the correct policy index for the logged path.

The FakeSwift helper no longer looks in registered object responses
for an X-Backend-Storage-Policy-Index header to update an object
request. Real Swift object responses do not have an
X-Backend-Storage-Policy-Index header. By default, FakeSwift will now
update *all* object requests with an X-Backend-Storage-Policy-Index as
follows:

  - If a matching container HEAD response has been registered then
    any X-Backend-Storage-Policy-Index found with that is used.
  - Otherwise the default policy index is used.

Furthermore, FakeSwift now adds the X-Backend-Storage-Policy-Index
header to the request *after* the request has been captured. Tests
using FakeSwift.calls_wth_headers() to make assertions about captured
headers no longer need to make allowance for the header that FakeSwift
added.

Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Closes-Bug: #2038459
[1] Related-Change: I5fe5ab31d6b2d9f7b6ecb3bfa246433a78e54808
[2] Related-Change: I40b252446b3a1294a5ca8b531f224ce9c16f9aba
Change-Id: I2793e335a08ad373c49cbbe6759d4e97cc420867
2023-11-14 15:09:18 +00:00
Tim Burke
2d7c1dc6dd CI: Fix our usage of tox
For tox 3.x and earlier, passenv was a space-separated list; as of tox
4.0.0, it's comma-separated. For a while, our spaces would be silently
included in the now-one-and-only passenv value parsed (which wasn't
great, but mostly just caused confusion) -- as of tox 4.0.6, however, it
became a hard error, and all tests would fail like

  pass_env values cannot contain whitespace, use comma to have multiple
  values in a single line, invalid values found 'SWIFT_* *_proxy'

Unfortunately, we don't really know what versions of tox all our various
stakeholders might want/need to use (though we previously set a
minversion of 2.3.2). We might be able to spread values over multiple
lines to make it compatible with both tox 3 *and* tox 4, but I'm fairly
certain *_proxy was only included for some variables that are recent
versions of tox include by default anyway, so just increase our
minversion (which was too low, anyway -- allowlist_externals which we
already configure was added in 3.18.0) and get rid of *_proxy.

FWIW, python-swiftclient was already specifying 3.18.0 as a minversion,
so I expect the new minversion to not be a problem.

Also, add ./.functests to a bunch of allowlist_externals, as newer tox
is more strict about that sort of thing.

Drop skipsdist in a bunch of places so we can import swift from func
tests and docs. (Still not sure why I don't see us hitting a similar
problem for unit tests...)

Change-Id: I4be1e86e3291ad1619c695fb93d7cadf053b556d
2022-12-29 13:36:06 -08:00
Tim Burke
ef155bd74a Switch to pytest
nose has not seen active development for many years now. With py310, we
can no longer use it due to import errors.

Also update lower contraints

Closes-Bug: #1993531
Change-Id: I215ba0d4654c9c637c3b97953d8659ac80892db8
2022-12-09 11:38:02 -08:00
Matthew Vernon
cc033154ad py2constraints: pin PasteDeploy version
PasteDeploy version 3.0 (2022-10-16) dropped support for python2 (as
well as <3.7), which causes our py2 tests to fail. So cap the version
here at 2.1.1, the last which is compatible with our tests.

Even doing this doesn't stop pip install swift pulling in a newer
PasteDeploy in the
tools/playbooks/saio_single_node_setup/make_rings.yaml playbook
(causing the probes test on CentOS-7 to fail); so handle CentOS 7
explicitly.

Change-Id: If69ae0f8eac8fe8ff7d5e4f4f1bff6d0ea9e7a8b
Signed-off-by: Matthew Vernon <mvernon@wikimedia.org>
2022-10-17 13:43:24 +01:00
Alistair Coles
07b5f139a5 playbooks: replace ansible_ssh_user with ansible_user
ansible_ssh_user has been deprecated since Ansible 2.0 [1]

[1] https://github.com/ansible/ansible/blob/stable-2.0/CHANGELOG.md

Change-Id: If1ef202b41af124637091a3527320b80734948fe
2022-10-11 11:27:03 +01:00
afariasa
da52e56751 Migrate CentOS Stream 8 FIPS job to CentOS Stream 9
Change-Id: I8b0bd7ee1c649294ac3795cba801c9e07bc3d51b
2022-08-25 16:14:41 -07:00
Tim Burke
27db5213dc CI: Run s3api test suite
Change-Id: I70dec389c1ac608a9d2767d162bd5edc315e564b
2022-05-27 23:46:20 -07:00
Tim Burke
238dc03535 CI: constrain py36 deps
Now that OpenStack writ large has dropped support for py36,
we're going to have to manage our constraints ourselves
more, just like we did for py27.

Change-Id: I0973be6692e3a9b871eb61cbf759e13644a25107
2022-05-24 11:53:59 -07:00
Tim Burke
0bf5474bfa ceph tests: Register output/ceph-s3-summary.log as a job output
Change-Id: I7eed34ab19a97b2c561e4aac8c95a8a5e1689266
2022-04-19 12:16:33 -07:00
Tim Burke
d29cbc3996 CI: Run ceph and rolling upgrade tests under py3
As part of that, the ceph test runner needed up-rev'ing to run under
py3. As a result, the known-failures shifted.

Trim the on-demand rolling upgrade jobs list -- now that it's running
py3, we only expect it to pass for train and beyond.

Also, pin smmap version on py2 -- otherwise, the remaining experimental
jobs running on centos-7 fail.

Change-Id: Ibe46aecf0f4461be59eb206bfe9063cc1bfff706
2022-04-04 17:17:06 -07:00
Tim Burke
ffb173f8ad CI: Run CORS tests under py3
Change-Id: I49d8480fd0c775249d8b586f9dea026448b8910d
2022-03-22 23:12:01 -07:00
Tim Burke
7f2adb4e8b CI: Use xena on CentOS 8 Stream
Change-Id: I57430790c9c22bc7902bd9c8f8cbfadb47115bd0
2022-02-03 10:43:24 -08:00
jinyuanliu
9facfdc958 Clean up extra spaces
Although these errors are not important, they affect the code specification.

Change-Id: Ibc0fe151ccd5a33c552bb72a3cd200642a0d8131
2021-09-14 21:47:51 -04:00
Tim Burke
1895213d25 Update some constraints for py2
We've recently started seeing some failures in the gate related to these
projects, and they have final py2-supporting versions.

Change-Id: If81fc352c8b2b1f03f3fa7b79c56dfcf981ced70
2021-04-06 11:33:44 -07:00
Alistair Coles
e572938af3 Use headless option for cors functional test runner
Some selenium webdrivers (e.g. Chrome, Firefox) support a headless
option so we can expose that as an option for the test runner too.

Use this in an attempt to fix "Error: cannot open display: :99" errors
seen in the gate.

Related-Bug: #1918864
Change-Id: I2a549ce829eb0bc38406575582202e1d8dd1a0e2
2021-03-17 15:57:02 -07:00
Zuul
b0464e79d8 Merge "s3api: Pass through CORS headers" 2021-03-12 23:39:05 +00:00
Tim Burke
1afad5c492 cors-tests: Increase timeouts for setup operations
Drive-bys:
* Only copy outputs when there are outputs to copy
* Print tracebacks when there's an issue running a selenium driver

Change-Id: I0807af4525a13a30baf27ada40eeabe311b44296
2021-03-11 17:33:48 -08:00
Tim Burke
81db980690 s3api: Pass through CORS headers
This adds support for presigned GET URLs, at least.

Note that there is no support yet for preflight requests, so a whole
bunch of other CORS stuff *doesn't* work (yet). This was just an easy
first step.

Change-Id: I43150a630a2a7620099e6bfecaed3bbe958ba423
2021-03-01 10:55:15 -08:00
Tim Burke
c5152ed4d3 Add some functional CORS tests
If you've got selenium installed (and working), the whole thing can be
automated pretty well; run main.py, wait while some windows pop up (or
use xvfb-run to run things on a virtual display), then check out what
tests were run on which browsers and whether any of them failed. Exit
code is the number of failed tests.

Includes tests against:
- Account
- Containers, with various ACLs/CORS settings
- Objects
- /info
- SLOs
- DLOs
- Symlinks

Include a gate job that runs the tests in firefox.

Areas for future work:

- Install chromium and chromedriver in the gate; tests should
  automatically pick up on the fact that it's available
- Capture the web browser's console logs, too, so we can get
  more info when things go wrong

Change-Id: Ic1d3a062419f1133c6e2f00a598867d567358c9f
2021-03-01 10:09:03 -08:00
Matthew Oliver
1de9834816 Report final in_progress when sharding is complete
On every sharder cycle up update in progress recon stats for each sharding
container. However, we tend to not run it one final time once sharding
is complete because the DB state is changed to SHARDED and therefore the
in_progress stats never get their final update.
For those collecting this data to monitor, this makes sharding/cleaving shards
never complete.

This patch, adds a new option `recon_shared_timeout` which will now
allow sharded containers to be processed by `_record_sharding_progress()`
after they've finished sharding for an amount of time.

Change-Id: I5fa39d41f9cd3b211e45d2012fd709f4135f595e
2021-02-26 15:56:30 +00:00
Tim Burke
0b870eb94d Prevent upgrading to pip 21+
Change-Id: I952690558486a1d981985eae0fe9d7e07ff30e17
2021-01-25 11:17:21 -08:00
Tim Burke
fb91993b47 s3-tests: Use my s3compat fork instead
Long term, though, we should look at moving this in-tree if we really care about it.

Change-Id: I0a25a6e395e5cf2bb39fa5b349418384eb513963
2020-12-24 17:12:51 +00:00
Zuul
cb94d7539c Merge "s3-tests: Only try to copy outputs when there *are* outputs" 2020-12-18 10:39:46 +00:00
Tim Burke
d186af14fa Add py3 probe tests on CentOS 8
Change-Id: Iae86d8838854023010686d3d4bed3befe6160ca5
2020-12-17 11:25:42 -08:00
Tim Burke
73aa48a823 s3-tests: Only try to copy outputs when there *are* outputs
That way we avoid POST_FAILUREs when the real problem was in run.

Change-Id: I9eb84d1c794d58f0af3b7d78d3bc4660c1823dc8
2020-12-17 18:58:09 +00:00
Tim Burke
d4c0a7d3b3 Give probe tests a second chance to pass
...and bump up their timeout, since that seems more likely to happen if
we have to retry.

Change-Id: Ie05521f6cd146234dc5615c96ad19681b43e9110
2020-12-08 15:24:20 -08:00
Tim Burke
24060f6e62 tests: Increase container-update timeouts for rolling upgrade jobs
This should help make tests that rely on up-to-date listings more reliable.

Change-Id: Ib888c84fa629cc78f48a8251eda98c0fa51242c0
2020-11-06 13:33:02 -08:00
Tim Burke
ae8a89f042 gate: Make rolling upgrade job work with either 60xx or 62xx ports
Change-Id: If14f53993e6a0554345b327415812423b6b57434
Related-Change: If5dd79f926fa51a58b3a732b212b484a7e9f00db
2020-09-09 15:47:00 -07:00
Zuul
50800aba37 Merge "Update SAIO & docker image to use 62xx ports" 2020-08-01 02:39:00 +00:00
Tim Burke
1c91547643 Use latest pip in gate jobs
We've seen failures with probe tests lately where dnspython 2.0.0 is
getting installed even though it doesn't support py2 anymore. I think
using latest pip should be better about noticing that and installing the
last 1.x release intead?

Change-Id: I6eda54ccd2792effadb334ce9324887132b62b6f
2020-07-20 17:18:43 -07:00
Tim Burke
314347a3cb Update SAIO & docker image to use 62xx ports
Note that existing SAIOs with 60xx ports should still work fine.

Change-Id: If5dd79f926fa51a58b3a732b212b484a7e9f00db
Related-Change: Ie1c778b159792c8e259e2a54cb86051686ac9d18
2020-07-20 15:17:12 -07:00
Tim Burke
51a587ed8d Use ensure-pip role
Hopefully this will fix the currently-broken probe test gate?

Depends-On: https://review.opendev.org/#/c/736070/
Change-Id: Ib652534b35236fdb6bcab131c7dc08a079bf72f6
2020-06-16 21:29:01 -07:00
Tim Burke
79811df34c Use ini_file to update timeout instead of crudini
crudini seems to have trouble on py3 -- still not sure *why* it's using
py3 for the losf job, though...

Change-Id: Id98055994c8d59e561372417c9eb4aec969afc6a
2020-06-09 18:27:54 -07:00
Zuul
4f440ad44d Merge "dsvm: Run service-user tests under tempauth" 2020-05-28 00:27:40 +00:00
Zuul
8f1a40eaae Merge "swift-dsvm: Enable s3api" 2020-05-28 00:27:36 +00:00
Tim Burke
73f0b143d1 dsvm: Run service-user tests under tempauth
Change-Id: I0bdd3a1d044f8f99873f6270ca821862bb994d72
2020-05-26 12:54:17 -07:00
Tim Burke
bb9b0326fd swift-dsvm: Enable s3api
Depends-On: https://review.opendev.org/#/c/571021/
Change-Id: I3ac3288cd61b745ce7dbf2bded8eade026d0418f
2020-05-22 16:04:52 -07:00
Zuul
a792255e79 Merge "swift-dsvm: Enable more middlewares" 2020-05-06 19:37:13 +00:00
Tim Burke
cb37d3acd6 docs: Clean up mount options
* Stop specifying logbufs=8; that's the default
* Stop including nodiratime with noatime; the latter implies the former

Nothing wrong with being explicit, I suppose, but may as well keep the
mount options to what we can easily explain: we want noatime because
Swift does not use atime, so we don't want to lose any performance to
tracking atime.

Change-Id: I1e52b4368ad7eb375964eee5132bc50297536355
2020-05-03 00:43:57 -07:00
Tim Burke
9581254e66 swift-dsvm: Enable more middlewares
Change-Id: I3cbbcd2ea9ced0923bee4a6b0783e4cf5e82e95b
2020-04-23 13:46:16 -07:00
Tim Burke
cfb3ae6019 Update known-failures and config for up-rev'ed ceph/s3tests
Change-Id: I3833843cd8d23c498a2afe6c68a3f0afe26343c0
2019-11-16 14:24:08 -08:00
Tim Burke
be41721888 Add experimental job to test upgrades from stein
Also, correct the version that we check out when upgrading from stable
branches.

Change-Id: Ie733bc50466c66d6e6eb5c6bd42e42a05ef88798
2019-09-28 08:53:07 -07:00
Clay Gerrard
db8b0b6bc4 Make ceph tests more portable
Change-Id: If93325f2651a02f98f9d480c10bf7b849cc9617e
2019-09-13 15:32:58 -07:00
Thiago da Silva
4ab3706b75 Remove nobarrier option
XFS no longer supports nobarrier mount option.
It has been deprecated for a long time[1] and removed in
recent kernel versions resulting in an error when trying to
mount: "kernel: XFS (loop0): unknown mount option [nobarrier]."

[1] - https://patchwork.kernel.org/patch/9486549/

Change-Id: Iaa9208fb20545ae9ac990f0e180899108d983123
2019-06-18 14:47:39 +01:00
Zuul
f55167a735 Merge "Increase node_timeout in gate" 2019-04-30 22:12:01 +00:00
Thiago da Silva
621e924883 Update openstack repo for libec install
Update to rocky release

Change-Id: Id35a41d689a24bf68d17647879780f5daaecdf37
2019-04-08 16:49:29 -04:00