1ed7b71bb56436e4aafc8210117b1d3c404e0bd8
84 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
Tim Burke
|
33f409ceba |
CI: run func tests during rolling upgrade job
We recently removed the "func-py3" tox env in favor of just "func" -- as a result, this went back to running unit tests! Keep "func-py3" for older releases where that tox env *is* still defined, though, as they won't have py27 around to run "func". Related-Change: I53153c4fde043e964e1daa7bbf2089e0471dede2 Change-Id: Ibbb8c305a8b8bac7ca1a8853208cd031957adac1 |
||
|
Tim Burke
|
f7db1ec3cf |
CI: use private IPs for multinode tests
If the nodepool provider uses NAT'd floating IPs, the public IP won't actually be available locally for binding. This has caused a bunch of failures on raxflex lately. Change-Id: I5669a814377242e9939a09a42bb36642358b85b3 |
||
|
Tim Burke
|
a290f445ef |
CI: make sure old swift is truly gone for rolling-upgrade jobs
While switching how some executable scripts were configured, I saw some strange rolling-upgrade failures that seemed to indicate that the new invocation method was trying to be used with old code. It seems like it maybe has something to do with whether swift was installed to /usr/local/lib/python3.9/site-packages/ or /usr/local/lib64/python3.9/site-packages/ but I'm not entirely sure. At any rate, a proper package manager ought to uninstall the old version then install the new one, so it seems reasonable to do that with pip, too. Change-Id: I12e84745e7601d162755bc9d0f1cda7b63e92197 |
||
|
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 |
||
|
Tim Burke
|
af15ad53fb |
tests: Update CORS geckodriver
Change-Id: I5ab762dfe0f85e346c4868ec4540884ba5f0a7f4 |
||
|
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 |
||
|
Tim Burke
|
f32f2dd023 |
CI: pin python-dateutil for py2
Their 2.9.0 release is known-broken for py27-py35. Change-Id: I40c1724fa673ac252f5052ac85006788ba69d5c7 |
||
|
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 |
||
|
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 |
||
|
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 |
||
|
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> |
||
|
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 |
||
|
afariasa
|
da52e56751 |
Migrate CentOS Stream 8 FIPS job to CentOS Stream 9
Change-Id: I8b0bd7ee1c649294ac3795cba801c9e07bc3d51b |
||
|
Tim Burke
|
27db5213dc |
CI: Run s3api test suite
Change-Id: I70dec389c1ac608a9d2767d162bd5edc315e564b |
||
|
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 |
||
|
Tim Burke
|
0bf5474bfa |
ceph tests: Register output/ceph-s3-summary.log as a job output
Change-Id: I7eed34ab19a97b2c561e4aac8c95a8a5e1689266 |
||
|
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 |
||
|
Tim Burke
|
ffb173f8ad |
CI: Run CORS tests under py3
Change-Id: I49d8480fd0c775249d8b586f9dea026448b8910d |
||
|
Tim Burke
|
7f2adb4e8b |
CI: Use xena on CentOS 8 Stream
Change-Id: I57430790c9c22bc7902bd9c8f8cbfadb47115bd0 |
||
|
jinyuanliu
|
9facfdc958 |
Clean up extra spaces
Although these errors are not important, they affect the code specification. Change-Id: Ibc0fe151ccd5a33c552bb72a3cd200642a0d8131 |
||
|
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 |
||
|
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 |
||
|
Zuul
|
b0464e79d8 | Merge "s3api: Pass through CORS headers" | ||
|
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 |
||
|
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 |
||
|
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 |
||
|
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 |
||
|
Tim Burke
|
0b870eb94d |
Prevent upgrading to pip 21+
Change-Id: I952690558486a1d981985eae0fe9d7e07ff30e17 |
||
|
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 |
||
|
Zuul
|
cb94d7539c | Merge "s3-tests: Only try to copy outputs when there *are* outputs" | ||
|
Tim Burke
|
d186af14fa |
Add py3 probe tests on CentOS 8
Change-Id: Iae86d8838854023010686d3d4bed3befe6160ca5 |
||
|
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 |
||
|
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 |
||
|
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 |
||
|
Tim Burke
|
ae8a89f042 |
gate: Make rolling upgrade job work with either 60xx or 62xx ports
Change-Id: If14f53993e6a0554345b327415812423b6b57434 Related-Change: If5dd79f926fa51a58b3a732b212b484a7e9f00db |
||
|
Zuul
|
50800aba37 | Merge "Update SAIO & docker image to use 62xx ports" | ||
|
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 |
||
|
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 |
||
|
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 |
||
|
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 |
||
|
Zuul
|
4f440ad44d | Merge "dsvm: Run service-user tests under tempauth" | ||
|
Zuul
|
8f1a40eaae | Merge "swift-dsvm: Enable s3api" | ||
|
Tim Burke
|
73f0b143d1 |
dsvm: Run service-user tests under tempauth
Change-Id: I0bdd3a1d044f8f99873f6270ca821862bb994d72 |
||
|
Tim Burke
|
bb9b0326fd |
swift-dsvm: Enable s3api
Depends-On: https://review.opendev.org/#/c/571021/ Change-Id: I3ac3288cd61b745ce7dbf2bded8eade026d0418f |
||
|
Zuul
|
a792255e79 | Merge "swift-dsvm: Enable more middlewares" | ||
|
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 |
||
|
Tim Burke
|
9581254e66 |
swift-dsvm: Enable more middlewares
Change-Id: I3cbbcd2ea9ced0923bee4a6b0783e4cf5e82e95b |
||
|
Tim Burke
|
cfb3ae6019 |
Update known-failures and config for up-rev'ed ceph/s3tests
Change-Id: I3833843cd8d23c498a2afe6c68a3f0afe26343c0 |
||
|
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 |
||
|
Clay Gerrard
|
db8b0b6bc4 |
Make ceph tests more portable
Change-Id: If93325f2651a02f98f9d480c10bf7b849cc9617e |