diff --git a/.github/workflows/ceph-s3-tests.yaml b/.github/workflows/ceph-s3-tests.yaml index b2f5fb19a4..99f352436e 100644 --- a/.github/workflows/ceph-s3-tests.yaml +++ b/.github/workflows/ceph-s3-tests.yaml @@ -34,7 +34,7 @@ jobs: # Freeze the version of operator # to avoid a failed run due to code changes in the operator repo. # Need to update the commit once in a while - ref: f7358501716816250702d9a4c96f2526f98534e7 + ref: ca12ff9e360220bb50bb9a2b645846e4b241fa39 - name: Change settings for k8s and minikube run: | @@ -70,10 +70,11 @@ jobs: set -x cd ./noobaa-core kubectl apply -f ./src/test/system_tests/ceph_s3_tests/test_ceph_s3_job.yml - kubectl wait --for=condition=complete job/noobaa-tests-s3 --timeout=30m || TIMEOUT=true + kubectl wait --for=condition=complete job/noobaa-tests-s3 --timeout=45m || TIMEOUT=true kubectl logs job/noobaa-tests-s3 --tail 10000 -f if kubectl logs job/noobaa-tests-s3 | grep -q "Ceph Test Failed:"; then echo "At least one test failed!" + kubectl get pods exit 1 fi if [ ${TIMEOUT} ]; then diff --git a/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_guide.md b/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_guide.md index 7704b7fc4e..d71a9c2672 100644 --- a/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_guide.md +++ b/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_guide.md @@ -6,11 +6,12 @@ 2) Run All Ceph S3 Tests 3) Run a Single Ceph S3 Test 4) Debug a Single Ceph S3 Test - 5) Examples -* This guide describes developer steps to run Ceph S3 on a noobaa system on minikube. + 5) Compare to AWS Response (Inside Tester Pod) + 6) Examples +* This guide describes developer steps to run Ceph S3 on a Noobaa system on minikube. ## General Settings For Ceph S3 Tests -We assume that it is not your first deployment of noobaa system, and you already succeeded with it (If not, please see the guide Deploy Noobaa On Minikube). +We assume that it is not your first deployment of Noobaa system, and you already succeeded with it (If not, please see the guide Deploy Noobaa On Minikube). We will run the commands in the terminal, you may work with at least two tabs: 1) For noobaa-core repository 2) For noobaa-operator repository @@ -46,14 +47,14 @@ docker tag noobaa:latest noobaa-core:s3-tests ### 4) Deploy Noobaa (Noobaa-Operator Tab) ```bash nb install --mini --noobaa-image='noobaa-core:s3-tests' -# or use dev flag for higher resources +# or use the dev flag for higher resources nb install --dev --noobaa-image='noobaa-core:s3-tests' ``` _Note: We have the alias to `nb` from the step 'Build Operator'._ The installation should take 5-10 minutes. -Once noobaa is installed please notice that the phase is Ready, you will see it in the CLI logs: +Once Noobaa is installed please notice that the phase is Ready, you will see it in the CLI logs: ✅ System Phase is "Ready". @@ -65,7 +66,7 @@ noobaa-core-0 1/1 Running 0 noobaa-db-pg-0 1/1 Running 0 51m noobaa-default-backing-store-noobaa-pod-a586c55b 1/1 Running 0 47m noobaa-endpoint-6cf5cccfc6-rmdrd 1/1 Running 0 47m -noobaa-operator-5c959d5564-qzgqb 1/1 Running 0 51m +noobaa-operator-5c959d5564-qzgqb 2/2 Running 0 51m ``` ### 5) Wait For Default Backingstore to Be Ready (Noobaa-Operator Tab) @@ -74,6 +75,8 @@ We will use the default backingstore pod to run the tests, we need it to be in p kubectl wait --for=condition=available backingstore/noobaa-default-backing-store --timeout=6m ``` +Note that the default backing store might not be up as soon as the noobaa installation completes. For this reason it is advised to run `kubectl get pods` to make sure the default backing store is up. In case its not, wait for it to be up. If you run kubectl wait on the backing store before its up, the command will fail. + ## Run All Ceph S3 Tests ### 1) Prerequisites: @@ -88,21 +91,31 @@ kubectl apply -f src/test/system_tests/ceph_s3_tests/test_ceph_s3_job.yml kubectl logs job/noobaa-tests-s3 -f ``` +Running all the tests on a local machine takes about 20 minutes. With the current setting, all tests should pass, but there are cases where the endpoint restarts and causes a test to fail. You can also run a single test to be sure that it passes. + +#### Skipped tests + We run all the tests except the tests that appear in the lists `src/test/system_tests/ceph_s3_tests/s3-tests-lists` if you would like to add or remove a test you can edit those files (and then repeat the steps starting from 'Build Core And Tester Images (Noobaa-Core)' above). +Some tests are marked to be skipped in the code of ceph/s3-tests repository. Usually, because the environment doesn't support certain criteria. Those tests will appear with a `[WARN]` tag and will be marked as "Test Skipped", for example: +`[WARN] CONSOLE:: Test skipped: s3tests_boto3/functional/test_s3.py::test_lifecycle_transition` + +In the test code the function: +`pytest.skip("")` will mark them to be skipped. + ## Run a Single Ceph S3 Test ### 1) Prerequisites: Following the 'General Settings For Ceph S3 Tests' steps. ### 2) Increasing Debug Level (Noobaa-Operator) -Before running a test, you can increase the debug level with noobaa CLI. +Before running a test, you can increase the debug level with Noobaa CLI. ```bash nb system set-debug-level 1 ``` A good level to start with is 1, the higher you go the more verbose and noisy the logs will become (it is recommended using 3 level at the most for those tests). -Tip: If there is an existing printing in higher level than 1 and you only want to see it (or you wish to add a certain printing) change the debug level of the printing in the code to 0 (repeat the steps starting from 'Build Core And Tester Images (Noobaa-Core)' above), for example: +Tip: If there is an existing printing in a higher level than 1 and you only want to see it (or you wish to add a certain printing) change the debug level of the printing in the code to 0 (repeat the steps starting from 'Build Core And Tester Images (Noobaa-Core)' above), for example: ```diff - dbg.log2('message'); @@ -137,70 +150,89 @@ Run the script that will create the necessary accounts in noobaa and update the node ./src/test/system_tests/ceph_s3_tests/test_ceph_s3_config_setup.js ``` -Note: If you want to ignore PythonDeprecationWarnings use (which will then ignore all Python warnings, so keep that in mind): +For example: + ```bash -export PYTHONWARNINGS="ignore" +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini -- --disable-pytest-warnings ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/s3tests/functional/test_headers.py::test_bucket_create_contentlength_none ``` ### 5) Run a Test (Inside The Tester Pod) To run a test, from noobaa working directory: ```bash -S3TEST_CONF=src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf ./src/test/system_tests/ceph_s3_tests/s3-tests/virtualenv/bin/nosetests +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/ ``` This should run the test on the noobaa deployment we've set up. #### Test Name -You can find a list of tests in the doc inside the file `ceph_s3_tests_list_single_test.txt`. Please notice that the test name has a certain structure are separated with `.` and the function to run (usually with a prefix `test_`) appears after the `:` sign. +You can find a list of tests in the doc inside the file `ceph_s3_tests_list_single_test.txt`. Please notice that the test name has a certain structure: directories are separated with `/`, the files end with the extension `.py` and the function to run (usually with a prefix `test_`) appears after the `::` sign. + +In case the test name is incorrect, for example if you add `:` instead of `::` to the test name, the command will fail. +The error will be `file or directory not found` and pytest will exit with error code 4 (which means "pytest command line usage error") + +#### Disable pytest warnings +If you want to disable summary warnings add the following flag to the test command: +`-- --disable-pytest-warnings` + +Note that every flag that comes after `--` is passed to pytest from tox. so if there is already `--` in the command just put `--disable-pytest-warnings` as part of the flags after it, no need to add another `--` notation. + +for example to add --disable-pytest-warnings to the command: +```bash +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini -- -m 'not fails_on_rgw' ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/s3tests/functional/test_headers.py::test_bucket_create_contentlength_none +``` + +it should be: +```bash +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini -- -m 'not fails_on_rgw' --disable-pytest-warnings ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/s3tests/functional/test_headers.py::test_bucket_create_contentlength_none +``` + ## Debug a Single Test (Inside The Tester Pod) ### 1) Prerequisites: Following the 'Run a Single Ceph S3 Test' steps. ### 2) View The Test Content -You can view the test by going to the test file and searching for the test function. e.g. if you are working on test `s3tests_boto3.functional.test_s3:test_set_bucket_tagging` then you should `vi ./src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/test_s3.py` and search for the function `test_set_bucket_tagging`. +You can view the test by going to the test file and searching for the test function. e.g. if you are working on test `s3tests_boto3.functional.test_s3:test_set_bucket_tagging` then you should `vim ./src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/test_s3.py` and search for the function `test_set_bucket_tagging`. The best place to start investigating is noobaa endpoint pod logs. if you are running with debug level that is higher than 1, you should see log messages of the S3 requests with the prefix `S3 REQUEST`. S3 replies will be with the prefix `HTTP REPLY`. ### 3) Change a Test Sometimes you would like to change a test: add printing of variables, skip an assertion as needed, or you suspect that it has a faulty and you would like to change the code. -Since the file `./src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/test_s3.py` is a read-only file, decide on one of the options: +#### A. Temporary change - this change will be saved in the file inside the container, useful when you need a small change. +You can edit a test by going to the test file and editing the test function. See [View The Test Content](#2-view-the-test-content) for how to find the test function. -#### A. Permanent change - this change will be saved in a repo, it is for continues investigating. + +#### B. Permanent change - this change will be saved in a repo, it is for continues investigating. 1) Fork and clone the repository [ceph/s3-test](https://github.com/ceph/s3-tests). 2) Create a new branch from the hash number that was set in the file `./src/test/system_tests/ceph_s3_tests/test_ceph_s3_deploy.sh`. 3) Change the code, commit, and push to the remote branch. 4) Inside the file `test_ceph_s3_deploy.sh` (mentioned above) Change the values of `CEPH_LINK` to your remote repository and the `CEPH_TESTS_VERSION` to the newest commit in your repository. 5) Build the tester image again, deploy noobaa, and run the test (repeat the steps starting from 'Build Core And Tester Images (Noobaa-Core)' above). -#### B. Temporary change - this change will be saved in the file inside the container, useful when you need a small change. -1) Find container ID: `minikube ssh docker container ls | grep test` -2) Enter container as the root user: `minikube ssh "docker container exec -it -u 0 /bin/bash"` -3) Change file permissions: `chmod 777 ./src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/test_s3.py` ## Compare to AWS Response (Inside Tester Pod) Prerequisites: Following the 'Run a Single Ceph S3 Test' steps until 'Deploy The Tester Deployment (Noobaa-Core Tab)'. In this section we will do some manual changes that will allow you to check AWS response for a specific test (tests that do not use neither ACL nor tenant group). -1) Find container ID: `minikube ssh docker container ls | grep test` -2) Enter container as the root user: `minikube ssh "docker container exec -it -u 0 /bin/bash"` (We use root user because we want to change content of read-only files). -3) Go to noobaa working directory: `cd /root/node_modules/noobaa-core/` -4) Run the script that will create the necessary accounts in noobaa and update the Ceph S3 tests config file accordingly: `node ./src/test/system_tests/ceph_s3_tests/test_ceph_s3_config_setup.js` -5) Change the configuration file to match AWS details, `vi ./src/test/system_tests/ceph_s3_tests/test_ceph_s3_config_setup.js`: +1) Copy configuration file - this will allow us to run a test on AWS and then back to NooBaa just by changing the configuration file (we would have 2 configuration files: `test_ceph_s3_config.conf` and `test_ceph_s3_config_aws.conf`): + ```bash + cp src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf src/test/system_tests/ceph_s3_tests/test_ceph_s3_config_aws.conf + ``` +2) Change the new configuration file to match AWS details: +```bash +vim src/test/system_tests/ceph_s3_tests/test_ceph_s3_config_aws.conf +``` * host = s3.amazonaws.com -* bucket prefix = choose_name (for example: `bucket prefix = foo-bucket` you will need to manually delete it from AWS, and its name will be `foo-bucket1`, it adds suffix of 1). +* bucket prefix = choose_name + + For example: + `bucket prefix = foo-bucket` In case the test will fail to delete the bucket, you will need to manually delete it from AWS, and its name will be `foo-bucket1`, it adds suffix of 1. + * access_key, secret_key appears 3 times each in the file. -6) Since we changed the name of the bucket and we will manually delete the bucket we will remove it from the code (add comments lines) by `vi ./src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/__init__.py` inside `teardown` and `setup` functions: -```python -# nuke_prefixed_buckets(prefix=prefix) -# nuke_prefixed_buckets(prefix=prefix, client=alt_client) -# nuke_prefixed_buckets(prefix=prefix, client=tenant_client) -``` -7) Run a single test: +3) Running tests with the new configuration files will run against AWS: ```bash -S3TEST_CONF=src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf ./src/test/system_tests/ceph_s3_tests/s3-tests/virtualenv/bin/nosetests +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config_aws.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/ ``` -8) Manually delete the bucket that was created in you AWS account (for example `foo-bucket1`). ## Examples ## Running All the Tests @@ -209,15 +241,19 @@ S3TEST_CONF=src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf ./src/t Following the 'Run All Ceph S3 Tests' steps. ### 1) All Running Tested Passed -a snippet from the last part of running all the tests. +a snippet from the last part of running all the tests, before the list of skipped and failed tests. You can see how many tests run and a status for each test. ``` ... -Test Passed: s3tests_boto3.functional.test_sts.test_assume_role_with_web_identity_resource_tag_copy_obj -Test Passed: s3tests_boto3.functional.test_sts.test_assume_role_with_web_identity_role_resource_tag -Test Passed: s3tests_boto3.functional.test_utils.test_generate +Test Passed: s3tests_boto3/functional/test_s3select.py::test_bool_cast_expressions +Test Passed: s3tests_boto3/functional/test_s3select.py::test_output_serial_expressions +Test Passed: s3tests_boto3/functional/test_utils.py::test_generate Finished Running Ceph S3 Tests -CEPH TEST SUMMARY: Suite contains 812, ran 387 tests, Passed: 387, Skipped: 0, Failed: 0 +CEPH TEST SUMMARY: Suite contains 779, ran 336 tests, Passed: 310, Skipped: 26, Failed: 0 +CEPH TEST SKIPPED TESTS SUMMARY: 26 skipped tests +s3tests/functional/test_s3.py::test_object_storage_class +s3tests/functional/test_s3.py::test_object_storage_class_multipart +... ``` ## Running a Single Test @@ -225,52 +261,30 @@ CEPH TEST SUMMARY: Suite contains 812, ran 387 tests, Passed: 387, Skipped: 0, F Following the 'Run a Single Ceph S3 Test' steps. ### 1) Test Pass -For example: `s3tests_boto3.functional.test_s3:test_basic_key_count` +For example: +```bash +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini -- --disable-pytest-warnings ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/s3tests/functional/test_headers.py::test_bucket_create_contentlength_none ``` -bash-4.4$ S3TEST_CONF=src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf ./src/test/system_tests/ceph_s3_tests/s3-tests/virtualenv/bin/nosetests s3tests_boto3.functional.test_s3:test_basic_key_count -. ----------------------------------------------------------------------- -Ran 1 test in 4.914s +![test pass screenshot](images/tox_test_pass.png) -OK -``` -### 2) Test Fail -For example: `s3tests_boto3.functional.test_s3:test_account_usage` +Note that there is the warning: +`WARNING: could not copy distfile to //.tox/distshare` +this warning is for tox to use the same dependancies between projects. this feature is deprecated and not used on this project. In order to remove the warning you can modify `src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini` to include the following line in the `[tox]` section: `distshare = /root/node_modules/noobaa-core/.tox/distshare` +### 2) Test Fail +For example: +```bash +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini -- --disable-pytest-warnings ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/test_s3.py::test_account_usage ``` -bash-4.4$ S3TEST_CONF=src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf ./src/test/system_tests/ceph_s3_tests/s3-tests/virtualenv/bin/nosetests s3tests_boto3.functional.test_s3:test_account_usage -E -====================================================================== -ERROR: s3tests_boto3.functional.test_s3.test_account_usage ----------------------------------------------------------------------- -Traceback (most recent call last): - File "/root/node_modules/noobaa-core/src/test/system_tests/ceph_s3_tests/s3-tests/virtualenv/lib/python3.6/site-packages/nose/case.py", line 198, in runTest - self.test(*self.arg) - File "/root/node_modules/noobaa-core/src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/test_s3.py", line 1325, in test_account_usage - summary = parsed['Summary'] -KeyError: 'Summary' --------------------- >> begin captured logging << -------------------- -... - -... ---------------------- >> end captured logging << --------------------- - ----------------------------------------------------------------------- -Ran 1 test in 0.391s - -FAILED (errors=1) +![test failed screenshot](images/tox_test_failed.png) +### 3) Test Skipped +For example: +```bash +S3TEST_CONF=${PWD}/src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf tox -c src/test/system_tests/ceph_s3_tests/s3-tests/tox.ini -- --disable-pytest-warnings ${PWD}/src/test/system_tests/ceph_s3_tests/s3-tests/s3tests_boto3/functional/test_s3.py::test_bucket_get_location ``` -### 3) Wrong Test Name -If you will use a test name that not written in the defined structure (as mentioned in 'Test Name' section) you will get a falsy OK. +![test skipped screenshot](images/tox_test_skipped.png) -For example: `s3tests_boto3.functional.test_s3.test_account_usage` instead of `s3tests_boto3.functional.test_s3:test_account_usage` (notice the use of the sign `:` before test). -``` -bash-4.4$ S3TEST_CONF=src/test/system_tests/ceph_s3_tests/test_ceph_s3_config.conf ./src/test/system_tests/ceph_s3_tests/s3-tests/virtualenv/bin/nosetests s3tests_boto3.functional.test_s3.test_account_usage +Notice that even though test commands succeeded the test itself was skipped. The test prints `1 skipped` meaning one test was skipped ----------------------------------------------------------------------- -Ran 0 tests in 0.389s -OK -``` -You can avoid it by using the name according to the structure or copy the test name from the file `ceph_s3_tests_list_single_test.txt`. diff --git a/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_list_single_test.txt b/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_list_single_test.txt index 23552f9899..0e82697df2 100644 --- a/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_list_single_test.txt +++ b/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_list_single_test.txt @@ -1,484 +1,488 @@ Test Name For Running a Single Test -Last Update: 07-2022 +Last Update: 06-2023 -s3tests.functional.test_headers:test_bucket_create_bad_contentlength_empty -s3tests.functional.test_headers:test_bucket_create_contentlength_none -s3tests.functional.test_headers:test_object_create_bad_authorization_none -s3tests.functional.test_headers:test_bucket_create_bad_contentlength_none -s3tests.functional.test_headers:test_bucket_create_bad_authorization_empty -s3tests.functional.test_headers:test_bucket_create_bad_authorization_none -s3tests.functional.test_headers:test_object_create_bad_authorization_incorrect_aws2 -s3tests.functional.test_headers:test_object_create_bad_authorization_invalid_aws2 -s3tests.functional.test_headers:test_bucket_create_bad_authorization_invalid_aws2 -s3tests.functional.test_headers:test_bucket_create_bad_date_none_aws2 -s3tests.functional.test_headers:test_object_create_bad_date_none_aws2 -s3tests.functional.test_headers:test_object_create_bad_md5_invalid_garbage_aws4 -s3tests.functional.test_headers:test_object_create_bad_contentlength_mismatch_below_aws4 -s3tests.functional.test_headers:test_object_create_bad_authorization_incorrect_aws4 -s3tests.functional.test_headers:test_object_create_bad_ua_empty_aws4 -s3tests.functional.test_headers:test_object_create_bad_authorization_invalid_aws4 -s3tests.functional.test_headers:test_object_acl_create_contentlength_none -s3tests.functional.test_headers:test_object_create_bad_ua_none_aws4 -s3tests.functional.test_headers:test_object_create_bad_date_invalid_aws4 -s3tests.functional.test_headers:test_object_create_bad_amz_date_invalid_aws4 -s3tests.functional.test_headers:test_object_create_bad_date_empty_aws4 -s3tests.functional.test_headers:test_object_create_bad_amz_date_empty_aws4 -s3tests.functional.test_headers:test_object_create_bad_amz_date_none_aws4 -s3tests.functional.test_headers:test_object_create_bad_date_before_today_aws4 -s3tests.functional.test_headers:test_object_create_bad_date_none_aws4 -s3tests.functional.test_headers:test_object_create_bad_amz_date_before_today_aws4 -s3tests.functional.test_headers:test_object_create_bad_amz_date_after_today_aws4 -s3tests.functional.test_headers:test_object_create_bad_date_after_today_aws4 -s3tests.functional.test_headers:test_object_create_bad_amz_date_before_epoch_aws4 -s3tests.functional.test_headers:test_object_create_bad_date_before_epoch_aws4 -s3tests.functional.test_headers:test_object_create_bad_date_after_end_aws4 -s3tests.functional.test_headers:test_object_create_missing_signed_custom_header_aws4 -s3tests.functional.test_headers:test_object_create_missing_signed_header_aws4 -s3tests.functional.test_headers:test_object_create_bad_amz_date_after_end_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_authorization_invalid_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_ua_empty_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_ua_none_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_date_invalid_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_amz_date_invalid_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_date_empty_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_amz_date_empty_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_date_none_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_date_before_today_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_amz_date_none_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_amz_date_before_today_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_date_after_today_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_amz_date_after_today_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_date_before_epoch_aws4 -s3tests.functional.test_headers:test_bucket_create_bad_amz_date_before_epoch_aws4 -s3tests.functional.test_s3:test_bucket_create_naming_bad_punctuation -s3tests.functional.test_s3:test_object_storage_class -s3tests.functional.test_s3:test_object_storage_class_multipart -s3tests.functional.test_s3:test_object_modify_storage_class -s3tests.functional.test_s3:test_object_modify_storage_class_multipart -s3tests.functional.test_s3:test_object_storage_class_copy_multipart -s3tests.functional.test_s3:test_object_storage_class_copy -s3tests.functional.test_s3:test_atomic_write_bucket_gone -s3tests.functional.test_utils:test_generate -s3tests_boto3.functional.test_headers:test_object_create_bad_md5_invalid_short -s3tests_boto3.functional.test_headers:test_object_create_bad_md5_empty -s3tests_boto3.functional.test_headers:test_object_create_bad_expect_empty -s3tests_boto3.functional.test_headers:test_object_create_bad_expect_mismatch -s3tests.functional.test_s3:test_atomic_dual_conditional_write_1mb -s3tests_boto3.functional.test_headers:test_object_create_bad_md5_none -s3tests_boto3.functional.test_headers:test_object_create_bad_expect_none -s3tests_boto3.functional.test_headers:test_object_create_bad_contentlength_empty -s3tests_boto3.functional.test_headers:test_object_create_bad_contentlength_negative -s3tests_boto3.functional.test_headers:test_object_create_bad_contenttype_invalid -s3tests_boto3.functional.test_headers:test_object_create_bad_contenttype_empty -s3tests_boto3.functional.test_headers:test_object_create_bad_contenttype_none -s3tests_boto3.functional.test_headers:test_bucket_create_contentlength_none -s3tests_boto3.functional.test_headers:test_object_acl_create_contentlength_none -s3tests_boto3.functional.test_headers:test_bucket_create_bad_expect_empty -s3tests_boto3.functional.test_headers:test_bucket_create_bad_contentlength_empty -s3tests_boto3.functional.test_headers:test_bucket_create_bad_contentlength_negative -s3tests_boto3.functional.test_headers:test_bucket_create_bad_contentlength_none -s3tests_boto3.functional.test_headers:test_object_create_bad_md5_invalid_garbage_aws2 -s3tests_boto3.functional.test_headers:test_object_create_bad_ua_empty_aws2 -s3tests_boto3.functional.test_headers:test_object_create_bad_ua_none_aws2 -s3tests_boto3.functional.test_headers:test_object_create_bad_date_before_today_aws2 -s3tests_boto3.functional.test_headers:test_object_create_bad_date_after_end_aws2 -s3tests_boto3.functional.test_headers:test_bucket_create_bad_ua_empty_aws2 -s3tests_boto3.functional.test_headers:test_object_create_bad_md5_bad -s3tests_boto3.functional.test_headers:test_bucket_create_bad_ua_none_aws2 -s3tests_boto3.functional.test_headers:test_bucket_create_bad_date_before_today_aws2 -s3tests_boto3.functional.test_headers:test_bucket_create_bad_date_after_today_aws2 -s3tests_boto3.functional.test_iam:test_put_user_policy_invalid_user -s3tests_boto3.functional.test_iam:test_put_user_policy -s3tests_boto3.functional.test_iam:test_put_user_policy_parameter_limit -s3tests_boto3.functional.test_iam:test_put_user_policy_invalid_element -s3tests_boto3.functional.test_iam:test_put_existing_user_policy -s3tests_boto3.functional.test_iam:test_list_user_policy_invalid_user -s3tests_boto3.functional.test_iam:test_get_user_policy -s3tests_boto3.functional.test_iam:test_list_user_policy -s3tests_boto3.functional.test_iam:test_get_user_policy_invalid_user -s3tests_boto3.functional.test_iam:test_get_user_policy_invalid_policy_name -s3tests_boto3.functional.test_iam:test_get_deleted_user_policy -s3tests_boto3.functional.test_iam:test_delete_user_policy_invalid_policy_name -s3tests_boto3.functional.test_iam:test_get_user_policy_from_multiple_policies -s3tests_boto3.functional.test_iam:test_delete_user_policy -s3tests_boto3.functional.test_iam:test_delete_user_policy_invalid_user -s3tests_boto3.functional.test_iam:test_delete_user_policy_from_multiple_policies -s3tests_boto3.functional.test_iam:test_allow_bucket_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_deny_bucket_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_allow_object_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_deny_object_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_allow_multipart_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_deny_multipart_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_allow_tagging_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_deny_tagging_actions_in_user_policy -s3tests_boto3.functional.test_iam:test_verify_conflicting_user_policy_statements -s3tests_boto3.functional.test_iam:test_verify_conflicting_user_policies -s3tests_boto3.functional.test_iam:test_verify_allow_iam_actions -s3tests_boto3.functional.test_s3:test_bucket_list_empty -s3tests_boto3.functional.test_s3:test_bucket_list_distinct -s3tests_boto3.functional.test_s3:test_bucket_list_many -s3tests_boto3.functional.test_s3:test_bucket_listv2_many -s3tests_boto3.functional.test_s3:test_basic_key_count -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_basic -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_basic -s3tests_boto3.functional.test_s3:test_bucket_listv2_encoding_basic -s3tests_boto3.functional.test_s3:test_bucket_list_encoding_basic -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_prefix_ends_with_delimiter -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_prefix -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_alt -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_alt -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_prefix_underscore -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_percentage -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_percentage -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_whitespace -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_whitespace -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_dot -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_empty -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_dot -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_empty -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_none -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_none -s3tests_boto3.functional.test_s3:test_bucket_listv2_fetchowner_notempty -s3tests_boto3.functional.test_s3:test_bucket_listv2_fetchowner_defaultempty -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_not_exist -s3tests_boto3.functional.test_s3:test_bucket_listv2_delimiter_not_exist -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_basic -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_basic -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_alt -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_alt -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_empty -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_empty -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_none -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_none -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_not_exist -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_not_exist -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_delimiter_basic -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_delimiter_basic -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_delimiter_alt -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_delimiter_alt -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_delimiter_prefix_not_exist -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_delimiter_prefix_not_exist -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_delimiter_delimiter_not_exist -s3tests_boto3.functional.test_s3:test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist -s3tests_boto3.functional.test_s3:test_bucket_list_maxkeys_one -s3tests_boto3.functional.test_s3:test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist -s3tests_boto3.functional.test_s3:test_bucket_listv2_maxkeys_one -s3tests_boto3.functional.test_s3:test_bucket_list_maxkeys_zero -s3tests_boto3.functional.test_s3:test_bucket_list_maxkeys_none -s3tests_boto3.functional.test_s3:test_bucket_listv2_maxkeys_none -s3tests_boto3.functional.test_s3:test_account_usage -s3tests_boto3.functional.test_bucket_policy_put_obj_s3_noenc:test_head_bucket_usage -s3tests_boto3.functional.test_s3:test_bucket_list_maxkeys_invalid -s3tests_boto3.functional.test_s3:test_bucket_list_marker_empty -s3tests_boto3.functional.test_s3:test_bucket_list_marker_none -s3tests_boto3.functional.test_s3:test_bucket_listv2_both_continuationtoken_startafter -s3tests_boto3.functional.test_s3:test_bucket_list_marker_unreadable -s3tests_boto3.functional.test_s3:test_bucket_list_marker_not_in_list -s3tests_boto3.functional.test_s3:test_bucket_listv2_startafter_not_in_list -s3tests_boto3.functional.test_s3:test_bucket_list_marker_after_list -s3tests_boto3.functional.test_s3:test_bucket_listv2_startafter_after_list -s3tests_boto3.functional.test_s3:test_bucket_notexist -s3tests_boto3.functional.test_s3:test_bucket_list_return_data -s3tests_boto3.functional.test_s3:test_bucketv2_notexist -s3tests_boto3.functional.test_s3:test_bucket_delete_notexist -s3tests_boto3.functional.test_s3:test_bucket_delete_nonempty -s3tests_boto3.functional.test_s3:test_object_write_to_nonexist_bucket -s3tests_boto3.functional.test_s3:test_bucket_concurrent_set_canned_acl -s3tests_boto3.functional.test_s3:test_bucket_create_delete -s3tests_boto3.functional.test_s3:test_object_read_not_exist -s3tests_boto3.functional.test_s3:test_object_requestid_matches_header_on_error -s3tests_boto3.functional.test_s3:test_multi_object_delete -s3tests_boto3.functional.test_s3:test_object_head_zero_bytes -s3tests_boto3.functional.test_s3:test_object_write_check_etag -s3tests_boto3.functional.test_s3:test_object_write_read_update_read_delete -s3tests_boto3.functional.test_s3:test_object_set_get_metadata_none_to_good -s3tests_boto3.functional.test_s3:test_object_set_get_metadata_none_to_empty -s3tests_boto3.functional.test_s3:test_object_set_get_metadata_overwrite_to_empty -s3tests_boto3.functional.test_s3:test_object_metadata_replaced_on_put -s3tests_boto3.functional.test_s3:test_object_write_file -s3tests_boto3.functional.test_s3:test_post_object_invalid_signature -s3tests_boto3.functional.test_s3:test_post_object_invalid_access_key -s3tests_boto3.functional.test_s3:test_post_object_missing_policy_condition -s3tests_boto3.functional.test_s3:test_post_object_expired_policy -s3tests_boto3.functional.test_s3:test_post_object_request_missing_policy_specified_field -s3tests_boto3.functional.test_s3:test_post_object_invalid_request_field_value -s3tests_boto3.functional.test_s3:test_get_object_ifmatch_good -s3tests_boto3.functional.test_s3:test_get_object_ifmatch_failed -s3tests_boto3.functional.test_s3:test_get_object_ifnonematch_good -s3tests_boto3.functional.test_s3:test_get_object_ifnonematch_failed -s3tests_boto3.functional.test_s3:test_get_object_ifmodifiedsince_good -s3tests_boto3.functional.test_s3:test_get_object_ifmodifiedsince_failed -s3tests_boto3.functional.test_s3:test_get_object_ifunmodifiedsince_good -s3tests_boto3.functional.test_s3:test_get_object_ifunmodifiedsince_failed -s3tests_boto3.functional.test_s3:test_put_object_ifmatch_good -s3tests_boto3.functional.test_s3:test_put_object_ifmatch_failed -s3tests_boto3.functional.test_s3:test_put_object_ifmatch_overwrite_existed_good -s3tests_boto3.functional.test_s3:test_put_object_ifnonmatch_good -s3tests_boto3.functional.test_s3:test_put_object_ifnonmatch_failed -s3tests_boto3.functional.test_s3:test_put_object_ifnonmatch_nonexisted_good -s3tests_boto3.functional.test_s3:test_bucket_head_notexist -s3tests_boto3.functional.test_s3:test_bucket_head -s3tests_boto3.functional.test_s3:test_put_object_ifnonmatch_overwrite_existed_failed -s3tests_boto3.functional.test_s3:test_object_raw_authenticated -s3tests_boto3.functional.test_s3:test_object_raw_authenticated_object_acl -s3tests_boto3.functional.test_s3:test_object_raw_authenticated_bucket_gone -s3tests_boto3.functional.test_s3:test_object_raw_authenticated_object_gone -s3tests_boto3.functional.test_s3:test_object_anon_put -s3tests_boto3.functional.test_s3:test_object_put_authenticated -s3tests_boto3.functional.test_s3:test_bucket_create_naming_bad_starts_nonalpha -s3tests_boto3.functional.test_s3:test_bucket_create_naming_bad_short_one -s3tests_boto3.functional.test_s3:test_bucket_create_naming_bad_short_two -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_long_60 -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_long_61 -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_long_62 -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_long_63 -s3tests_boto3.functional.test_s3:test_bucket_create_naming_bad_ip -s3tests_boto3.functional.test_s3:test_bucket_create_exists -s3tests_boto3.functional.test_s3:test_bucket_get_location -s3tests_boto3.functional.test_s3:test_bucket_create_exists_nonowner -s3tests_boto3.functional.test_s3:test_bucket_recreate_overwrite_acl -s3tests_boto3.functional.test_s3:test_bucket_recreate_new_acl -s3tests_boto3.functional.test_s3:test_bucket_list_delimiter_not_skip_special -s3tests_boto3.functional.test_s3:test_buckets_create_then_list -s3tests_boto3.functional.test_s3:test_buckets_list_ctime -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_starts_alpha -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_starts_digit -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_contains_period -s3tests_boto3.functional.test_s3:test_bucket_create_naming_good_contains_hyphen -s3tests_boto3.functional.test_s3:test_bucket_create_special_key_names -s3tests_boto3.functional.test_s3:test_bucket_list_special_prefix -s3tests_boto3.functional.test_s3:test_object_copy_zero_size -s3tests_boto3.functional.test_s3:test_object_copy_same_bucket -s3tests_boto3.functional.test_s3:test_object_copy_verify_contenttype -s3tests_boto3.functional.test_s3:test_object_copy_diff_bucket -s3tests_boto3.functional.test_s3:test_object_copy_canned_acl -s3tests_boto3.functional.test_s3:test_object_copy_retaining_metadata -s3tests_boto3.functional.test_s3:test_object_copy_bucket_not_found -s3tests_boto3.functional.test_s3:test_object_copy_replacing_metadata -s3tests_boto3.functional.test_s3:test_object_copy_key_not_found -s3tests_boto3.functional.test_s3:test_object_copy_versioned_url_encoding -s3tests_boto3.functional.test_s3:test_object_copy_versioned_bucket -s3tests_boto3.functional.test_s3:test_multipart_copy_small -s3tests_boto3.functional.test_s3:test_multipart_copy_without_range -s3tests_boto3.functional.test_s3:test_object_copy_versioning_multipart_upload -s3tests_boto3.functional.test_s3:test_multipart_copy_special_names -s3tests_boto3.functional.test_s3:test_list_multipart_upload -s3tests_boto3.functional.test_s3:test_multipart_copy_versioned -s3tests_boto3.functional.test_s3:test_multipart_copy_multiple_sizes -s3tests_boto3.functional.test_s3:test_set_bucket_tagging -s3tests_boto3.functional.test_s3:test_list_multipart_upload_owner -s3tests_boto3.functional.test_s3:test_atomic_read_1mb -s3tests_boto3.functional.test_s3:test_atomic_write_1mb -s3tests_boto3.functional.test_s3:test_atomic_read_4mb -s3tests_boto3.functional.test_s3:test_atomic_read_8mb -s3tests_boto3.functional.test_s3:test_atomic_write_4mb -s3tests_boto3.functional.test_s3:test_atomic_dual_write_1mb -s3tests_boto3.functional.test_s3:test_atomic_write_8mb -s3tests_boto3.functional.test_s3:test_atomic_dual_write_4mb -s3tests_boto3.functional.test_s3:test_atomic_dual_write_8mb -s3tests_boto3.functional.test_s3:test_multi_object_delete_key_limit -s3tests_boto3.functional.test_s3:test_atomic_write_bucket_gone -s3tests_boto3.functional.test_s3:test_atomic_conditional_write_1mb -s3tests_boto3.functional.test_s3:test_atomic_dual_conditional_write_1mb -s3tests_boto3.functional.test_s3:test_atomic_multipart_upload_write -s3tests_boto3.functional.test_s3:test_ranged_request_response_code -s3tests_boto3.functional.test_s3:test_ranged_request_skip_leading_bytes_response_code -s3tests_boto3.functional.test_s3:test_ranged_request_return_trailing_bytes_response_code -s3tests_boto3.functional.test_s3:test_ranged_request_invalid_range -s3tests_boto3.functional.test_s3:test_ranged_request_empty_object -s3tests_boto3.functional.test_s3:test_versioning_bucket_create_suspend -s3tests_boto3.functional.test_s3:test_versioning_obj_plain_null_version_removal -s3tests_boto3.functional.test_s3:test_versioning_obj_create_read_remove_head -s3tests_boto3.functional.test_s3:test_versioning_obj_plain_null_version_overwrite -s3tests_boto3.functional.test_s3:test_versioning_obj_create_read_remove -s3tests_boto3.functional.test_s3:test_versioning_obj_plain_null_version_overwrite_suspended -s3tests_boto3.functional.test_s3:test_versioning_obj_suspend_versions -s3tests_boto3.functional.test_s3:test_versioning_obj_create_versions_remove_all -s3tests_boto3.functional.test_s3:test_versioning_obj_list_marker -s3tests_boto3.functional.test_s3:test_versioning_obj_create_overwrite_multipart -s3tests_boto3.functional.test_s3:test_versioning_copy_obj_version -s3tests_boto3.functional.test_s3:test_ranged_big_request_response_code -s3tests_boto3.functional.test_s3:test_versioning_multi_object_delete -s3tests_boto3.functional.test_s3:test_versioning_multi_object_delete_with_marker_create -s3tests_boto3.functional.test_s3:test_versioning_multi_object_delete_with_marker -s3tests_boto3.functional.test_s3:test_versioning_obj_create_versions_remove_special_names -s3tests_boto3.functional.test_s3:test_lifecycle_set -s3tests_boto3.functional.test_s3:test_versioned_concurrent_object_create_and_remove -s3tests_boto3.functional.test_s3:test_lifecycle_expiration -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_versioning_enabled -s3tests_boto3.functional.test_s3:test_versioned_concurrent_object_create_concurrent_remove -s3tests_boto3.functional.test_s3:test_lifecycle_set_date -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_noncur_tags1 -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_header_put -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_header_head -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_header_tags_head -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_header_and_tags_head -s3tests_boto3.functional.test_s3:test_lifecycle_transition_set_invalid_date -s3tests_boto3.functional.test_s3:test_lifecycle_transition -s3tests_boto3.functional.test_s3:test_lifecycle_transition_single_rule_multi_trans -s3tests_boto3.functional.test_s3:test_lifecycle_noncur_transition -s3tests_boto3.functional.test_s3:test_lifecycle_cloud_transition -s3tests_boto3.functional.test_s3:test_lifecycle_cloud_multiple_transition -s3tests_boto3.functional.test_s3:test_lifecycle_noncur_cloud_transition -s3tests_boto3.functional.test_s3:test_lifecycle_cloud_transition_large_obj -s3tests_boto3.functional.test_s3:test_encrypted_transfer_1b -s3tests_boto3.functional.test_s3:test_encrypted_transfer_1kb -s3tests_boto3.functional.test_s3:test_encrypted_transfer_1MB -s3tests_boto3.functional.test_s3:test_encrypted_transfer_13b -s3tests_boto3.functional.test_s3:test_encryption_sse_c_method_head -s3tests_boto3.functional.test_s3:test_encryption_sse_c_present -s3tests_boto3.functional.test_s3:test_encryption_sse_c_other_key -s3tests_boto3.functional.test_s3:test_encryption_sse_c_invalid_md5 -s3tests_boto3.functional.test_s3:test_encryption_sse_c_no_md5 -s3tests_boto3.functional.test_s3:test_encryption_sse_c_no_key -s3tests_boto3.functional.test_s3:test_encryption_key_no_sse_c -s3tests_boto3.functional.test_s3:test_encryption_sse_c_multipart_invalid_chunks_2 -s3tests_boto3.functional.test_s3:test_sse_kms_method_head -s3tests_boto3.functional.test_s3:test_sse_kms_present -s3tests_boto3.functional.test_s3:test_sse_kms_no_key -s3tests_boto3.functional.test_s3:test_sse_kms_not_declared -s3tests_boto3.functional.test_s3:test_sse_kms_multipart_invalid_chunks_1 -s3tests_boto3.functional.test_s3:test_sse_kms_multipart_invalid_chunks_2 -s3tests_boto3.functional.test_s3:test_sse_kms_transfer_1b -s3tests_boto3.functional.test_s3:test_sse_kms_transfer_1kb -s3tests_boto3.functional.test_s3:test_sse_kms_transfer_1MB -s3tests_boto3.functional.test_s3:test_sse_kms_transfer_13b -s3tests_boto3.functional.test_s3:test_sse_kms_read_declare -s3tests_boto3.functional.test_s3:test_bucket_policy -s3tests_boto3.functional.test_s3:test_bucketv2_policy -s3tests_boto3.functional.test_s3:test_bucket_policy_another_bucket -s3tests_boto3.functional.test_s3:test_bucketv2_policy_another_bucket -s3tests_boto3.functional.test_s3:test_get_obj_tagging -s3tests_boto3.functional.test_s3:test_get_obj_head_tagging -s3tests_boto3.functional.test_s3:test_put_max_tags -s3tests_boto3.functional.test_s3:test_put_excess_tags -s3tests_boto3.functional.test_s3:test_put_max_kvsize_tags -s3tests_boto3.functional.test_s3:test_put_excess_key_tags -s3tests_boto3.functional.test_s3:test_put_excess_val_tags -s3tests_boto3.functional.test_s3:test_put_modify_tags -s3tests_boto3.functional.test_s3:test_put_delete_tags -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_tags1 -s3tests_boto3.functional.test_s3:test_versioning_bucket_atomic_upload_return_version_id -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_tags2 -s3tests_boto3.functional.test_s3:test_lifecycle_expiration_versioned_tags2 -s3tests_boto3.functional.test_s3:test_put_obj_enc_conflict_c_s3 -s3tests_boto3.functional.test_s3:test_put_obj_enc_conflict_c_kms -s3tests_boto3.functional.test_s3:test_put_obj_enc_conflict_s3_kms -s3tests_boto3.functional.test_s3:test_put_obj_enc_conflict_bad_enc_kms -s3tests_boto3.functional.test_s3:test_versioning_bucket_multipart_upload_return_version_id -s3tests_boto3.functional.test_s3:test_object_lock_multi_delete_object_with_retention -s3tests_boto3.functional.test_s3:test_object_lock_put_legal_hold -s3tests_boto3.functional.test_s3:test_object_lock_get_legal_hold -s3tests_boto3.functional.test_s3:test_bucket_policy_put_obj_kms_s3 -s3tests_boto3.functional.test_s3:test_object_lock_changing_mode_from_governance_with_bypass -s3tests_boto3.functional.test_s3:test_object_lock_changing_mode_from_governance_without_bypass -s3tests_boto3.functional.test_s3:test_object_lock_changing_mode_from_compliance -s3tests_boto3.functional.test_s3:test_copy_object_ifmatch_good -s3tests_boto3.functional.test_s3:test_copy_object_ifmatch_failed -s3tests_boto3.functional.test_s3:test_copy_object_ifnonematch_good -s3tests_boto3.functional.test_s3:test_bucket_policy_put_obj_s3_kms -s3tests_boto3.functional.test_s3:test_copy_object_ifnonematch_failed -s3tests_boto3.functional.test_s3:test_object_read_unreadable -s3tests_boto3.functional.test_s3:test_get_bucket_policy_status -s3tests_boto3.functional.test_s3:test_user_policy -s3tests_boto3.functional.test_s3:test_bucket_policy_put_obj_kms_noenc -s3tests_boto3.functional.test_s3:test_get_public_acl_bucket_policy_status -s3tests_boto3.functional.test_s3:test_bucket_policy_put_obj_s3_noenc -s3tests_boto3.functional.test_s3:test_get_authpublic_acl_bucket_policy_status -s3tests_boto3.functional.test_s3:test_get_publicpolicy_acl_bucket_policy_status -s3tests_boto3.functional.test_s3:test_get_nonpublicpolicy_acl_bucket_policy_status -s3tests_boto3.functional.test_s3:test_get_default_public_block -s3tests_boto3.functional.test_s3:test_get_nonpublicpolicy_deny_bucket_policy_status -s3tests_boto3.functional.test_s3:test_put_public_block -s3tests_boto3.functional.test_s3:test_block_public_put_bucket_acls -s3tests_boto3.functional.test_s3:test_block_public_object_canned_acls -s3tests_boto3.functional.test_s3:test_ignore_public_acls -s3tests_boto3.functional.test_s3:test_block_public_policy -s3tests_boto3.functional.test_s3:test_put_bucket_encryption_kms -s3tests_boto3.functional.test_s3:test_put_bucket_encryption_s3 -s3tests_boto3.functional.test_s3:test_get_bucket_encryption_s3 -s3tests_boto3.functional.test_s3:test_get_bucket_encryption_kms -s3tests_boto3.functional.test_s3:test_delete_bucket_encryption_s3 -s3tests_boto3.functional.test_s3:test_delete_bucket_encryption_kms -s3tests_boto3.functional.test_s3:test_sse_s3_default_upload_1b -s3tests_boto3.functional.test_s3:test_sse_s3_default_upload_1kb -s3tests_boto3.functional.test_s3:test_sse_s3_default_upload_1mb -s3tests_boto3.functional.test_s3:test_sse_s3_default_upload_8mb -s3tests_boto3.functional.test_s3:test_sse_kms_default_upload_1b -s3tests_boto3.functional.test_s3:test_sse_kms_default_upload_1mb -s3tests_boto3.functional.test_s3:test_sse_kms_default_upload_1kb -s3tests_boto3.functional.test_s3:test_sse_kms_default_upload_8mb -s3tests_boto3.functional.test_s3:test_sse_kms_default_post_object_authenticated_request -s3tests_boto3.functional.test_s3:test_sse_s3_default_method_head -s3tests_boto3.functional.test_s3:test_sse_s3_default_post_object_authenticated_request -s3tests_boto3.functional.test_s3:test_sse_s3_encrypted_upload_1b -s3tests_boto3.functional.test_s3select:test_generate_where_clause -s3tests_boto3.functional.test_s3:test_sse_s3_encrypted_upload_1kb -s3tests_boto3.functional.test_s3:test_sse_s3_encrypted_upload_1mb -s3tests_boto3.functional.test_s3:test_sse_s3_encrypted_upload_8mb -s3tests_boto3.functional.test_s3select:test_generate_projection -s3tests_boto3.functional.test_s3select:test_count_operation -s3tests_boto3.functional.test_s3select:test_column_sum_min_max -s3tests_boto3.functional.test_s3:test_sse_s3_default_multipart_upload -s3tests_boto3.functional.test_s3select:test_nullif_expressions -s3tests_boto3.functional.test_s3select:test_nulliftrue_expressions -s3tests_boto3.functional.test_s3select:test_lowerupper_expressions -s3tests_boto3.functional.test_s3select:test_in_expressions -s3tests_boto3.functional.test_s3select:test_is_not_null_expressions -s3tests_boto3.functional.test_s3select:test_true_false_in_expressions -s3tests_boto3.functional.test_s3select:test_like_expressions -s3tests_boto3.functional.test_s3select:test_truefalselike_expressions -s3tests_boto3.functional.test_s3select:test_alias -s3tests_boto3.functional.test_s3select:test_complex_expressions -s3tests_boto3.functional.test_s3select:test_datetime -s3tests_boto3.functional.test_s3select:test_alias_cyclic_refernce -s3tests_boto3.functional.test_s3select:test_csv_parser -s3tests_boto3.functional.test_s3select:test_csv_definition -s3tests_boto3.functional.test_s3select:test_true_false_datetime -s3tests_boto3.functional.test_s3select:test_schema_definition -s3tests_boto3.functional.test_s3select:test_when_then_else_expressions -s3tests_boto3.functional.test_s3select:test_coalesce_expressions -s3tests_boto3.functional.test_s3select:test_trim_expressions -s3tests_boto3.functional.test_s3select:test_cast_expressions -s3tests_boto3.functional.test_s3select:test_version -s3tests_boto3.functional.test_s3select:test_truefalse_trim_expressions -s3tests_boto3.functional.test_s3select:test_escape_expressions -s3tests_boto3.functional.test_s3select:test_bool_cast_expressions -s3tests_boto3.functional.test_s3select:test_case_value_expressions -s3tests_boto3.functional.test_s3select:test_progress_expressions -s3tests_boto3.functional.test_s3select:test_output_serial_expressions -s3tests_boto3.functional.test_sts:test_get_session_token -s3tests_boto3.functional.test_sts:test_get_session_token_permanent_creds_denied -s3tests_boto3.functional.test_sts:test_assume_role_allow -s3tests_boto3.functional.test_sts:test_assume_role_deny -s3tests_boto3.functional.test_sts:test_assume_role_creds_expiry -s3tests_boto3.functional.test_sts:test_assume_role_deny_head_nonexistent -s3tests_boto3.functional.test_sts:test_assume_role_allow_head_nonexistent -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity -s3tests_boto3.functional.test_sts:test_session_policy_check_on_different_buckets -s3tests_boto3.functional.test_sts:test_session_policy_check_on_same_bucket -s3tests_boto3.functional.test_sts:test_session_policy_check_put_obj_denial -s3tests_boto3.functional.test_sts:test_swapping_role_policy_and_session_policy -s3tests_boto3.functional.test_sts:test_session_policy_check_different_op_permissions -s3tests_boto3.functional.test_sts:test_session_policy_check_with_deny_effect -s3tests_boto3.functional.test_sts:test_session_policy_check_with_deny_on_same_op -s3tests_boto3.functional.test_sts:test_session_policy_bucket_policy_role_arn -s3tests_boto3.functional.test_sts:test_session_policy_copy_object -s3tests_boto3.functional.test_sts:test_session_policy_bucket_policy_session_arn -s3tests_boto3.functional.test_sts:test_session_policy_no_bucket_role_policy -s3tests_boto3.functional.test_sts:test_session_policy_bucket_policy_deny -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_with_sub -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_with_azp -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_with_principal_tag -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_with_request_tag -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_for_all_values -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_for_all_values_deny -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_tag_keys_trust_policy -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_resource_tag -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_tag_keys_role_policy -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_resource_tag_deny -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_wrong_resource_tag_deny -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_resource_tag_princ_tag -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_role_resource_tag -s3tests_boto3.functional.test_sts:test_assume_role_with_web_identity_resource_tag_copy_obj -s3tests_boto3.functional.test_utils:test_generate +s3tests/functional/test_headers.py::test_bucket_create_bad_contentlength_empty +s3tests/functional/test_headers.py::test_bucket_create_contentlength_none +s3tests/functional/test_headers.py::test_object_create_bad_authorization_none +s3tests/functional/test_headers.py::test_bucket_create_bad_contentlength_none +s3tests/functional/test_headers.py::test_bucket_create_bad_authorization_empty +s3tests/functional/test_headers.py::test_bucket_create_bad_authorization_none +s3tests/functional/test_headers.py::test_object_create_bad_authorization_incorrect_aws2 +s3tests/functional/test_headers.py::test_object_create_bad_authorization_invalid_aws2 +s3tests/functional/test_headers.py::test_bucket_create_bad_authorization_invalid_aws2 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_none_aws2 +s3tests/functional/test_headers.py::test_object_create_bad_date_none_aws2 +s3tests/functional/test_headers.py::test_object_create_bad_md5_invalid_garbage_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_contentlength_mismatch_below_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_authorization_incorrect_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_ua_empty_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_authorization_invalid_aws4 +s3tests/functional/test_headers.py::test_object_acl_create_contentlength_none +s3tests/functional/test_headers.py::test_object_create_bad_ua_none_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_invalid_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_invalid_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_empty_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_empty_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_none_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_before_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_none_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_before_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_after_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_after_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_before_epoch_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_before_epoch_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_after_end_aws4 +s3tests/functional/test_headers.py::test_object_create_missing_signed_custom_header_aws4 +s3tests/functional/test_headers.py::test_object_create_missing_signed_header_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_after_end_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_authorization_invalid_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_ua_empty_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_ua_none_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_invalid_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_invalid_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_empty_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_empty_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_none_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_before_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_none_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_before_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_after_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_after_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_before_epoch_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_before_epoch_aws4 +s3tests/functional/test_s3.py::test_bucket_create_naming_bad_punctuation +s3tests/functional/test_s3.py::test_object_storage_class +s3tests/functional/test_s3.py::test_object_storage_class_multipart +s3tests/functional/test_s3.py::test_object_modify_storage_class +s3tests/functional/test_s3.py::test_object_modify_storage_class_multipart +s3tests/functional/test_s3.py::test_object_storage_class_copy_multipart +s3tests/functional/test_s3.py::test_object_storage_class_copy +s3tests/functional/test_s3.py::test_atomic_write_bucket_gone +s3tests/functional/test_utils.py::test_generate +s3tests_boto3/functional/test_headers.py::test_object_create_bad_md5_invalid_short +s3tests_boto3/functional/test_headers.py::test_object_create_bad_md5_empty +s3tests_boto3/functional/test_headers.py::test_object_create_bad_expect_empty +s3tests_boto3/functional/test_headers.py::test_object_create_bad_expect_mismatch +s3tests/functional/test_s3.py::test_atomic_dual_conditional_write_1mb +s3tests_boto3/functional/test_headers.py::test_object_create_bad_md5_none +s3tests_boto3/functional/test_headers.py::test_object_create_bad_expect_none +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contentlength_empty +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contentlength_negative +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contenttype_invalid +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contenttype_empty +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contenttype_none +s3tests_boto3/functional/test_headers.py::test_bucket_create_contentlength_none +s3tests_boto3/functional/test_headers.py::test_object_acl_create_contentlength_none +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_expect_empty +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_contentlength_empty +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_contentlength_negative +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_contentlength_none +s3tests_boto3/functional/test_headers.py::test_object_create_bad_md5_invalid_garbage_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_ua_empty_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_ua_none_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_date_before_today_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_date_after_end_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_ua_empty_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_md5_bad +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_ua_none_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_date_before_today_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_date_after_today_aws2 +s3tests_boto3/functional/test_iam.py::test_put_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_put_user_policy +s3tests_boto3/functional/test_iam.py::test_put_user_policy_parameter_limit +s3tests_boto3/functional/test_iam.py::test_put_user_policy_invalid_element +s3tests_boto3/functional/test_iam.py::test_put_existing_user_policy +s3tests_boto3/functional/test_iam.py::test_list_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_get_user_policy +s3tests_boto3/functional/test_iam.py::test_list_user_policy +s3tests_boto3/functional/test_iam.py::test_get_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_get_user_policy_invalid_policy_name +s3tests_boto3/functional/test_iam.py::test_get_deleted_user_policy +s3tests_boto3/functional/test_iam.py::test_delete_user_policy_invalid_policy_name +s3tests_boto3/functional/test_iam.py::test_get_user_policy_from_multiple_policies +s3tests_boto3/functional/test_iam.py::test_delete_user_policy +s3tests_boto3/functional/test_iam.py::test_delete_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_delete_user_policy_from_multiple_policies +s3tests_boto3/functional/test_iam.py::test_allow_bucket_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_bucket_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_allow_object_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_object_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_allow_multipart_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_multipart_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_allow_tagging_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_tagging_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_verify_conflicting_user_policy_statements +s3tests_boto3/functional/test_iam.py::test_verify_conflicting_user_policies +s3tests_boto3/functional/test_iam.py::test_verify_allow_iam_actions +s3tests_boto3/functional/test_s3.py::test_bucket_list_empty +s3tests_boto3/functional/test_s3.py::test_bucket_list_distinct +s3tests_boto3/functional/test_s3.py::test_bucket_list_many +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_many +s3tests_boto3/functional/test_s3.py::test_basic_key_count +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_basic +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_basic +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_encoding_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_encoding_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix_ends_with_delimiter +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_alt +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_alt +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_prefix_underscore +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_percentage +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_percentage +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_whitespace +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_whitespace +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_dot +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_empty +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_dot +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_empty +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_none +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_none +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_notempty +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_defaultempty +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_alt +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_alt +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_empty +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_empty +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_none +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_none +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_alt +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_alt +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_delimiter_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_one +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_one +s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_zero +s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_none +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_none +s3tests_boto3/functional/test_s3.py::test_account_usage +s3tests_boto3/functional/test_bucket_policy_put_obj_s3_noenc.py::test_head_bucket_usage +s3tests_boto3/functional/test_s3.py::test_bucket_list_maxkeys_invalid +s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_empty +s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_none +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_both_continuationtoken_startafter +s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_unreadable +s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_not_in_list +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_not_in_list +s3tests_boto3/functional/test_s3.py::test_bucket_list_marker_after_list +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_after_list +s3tests_boto3/functional/test_s3.py::test_bucket_notexist +s3tests_boto3/functional/test_s3.py::test_bucket_list_return_data +s3tests_boto3/functional/test_s3.py::test_bucketv2_notexist +s3tests_boto3/functional/test_s3.py::test_bucket_delete_notexist +s3tests_boto3/functional/test_s3.py::test_bucket_delete_nonempty +s3tests_boto3/functional/test_s3.py::test_object_write_to_nonexist_bucket +s3tests_boto3/functional/test_s3.py::test_bucket_concurrent_set_canned_acl +s3tests_boto3/functional/test_s3.py::test_bucket_create_delete +s3tests_boto3/functional/test_s3.py::test_object_read_not_exist +s3tests_boto3/functional/test_s3.py::test_object_requestid_matches_header_on_error +s3tests_boto3/functional/test_s3.py::test_multi_object_delete +s3tests_boto3/functional/test_s3.py::test_object_head_zero_bytes +s3tests_boto3/functional/test_s3.py::test_object_write_check_etag +s3tests_boto3/functional/test_s3.py::test_object_write_read_update_read_delete +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_none_to_good +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_none_to_empty +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_overwrite_to_empty +s3tests_boto3/functional/test_s3.py::test_object_metadata_replaced_on_put +s3tests_boto3/functional/test_s3.py::test_object_write_file +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_signature +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_access_key +s3tests_boto3/functional/test_s3.py::test_post_object_missing_policy_condition +s3tests_boto3/functional/test_s3.py::test_post_object_expired_policy +s3tests_boto3/functional/test_s3.py::test_post_object_request_missing_policy_specified_field +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_request_field_value +s3tests_boto3/functional/test_s3.py::test_get_object_ifmatch_good +s3tests_boto3/functional/test_s3.py::test_get_object_ifmatch_failed +s3tests_boto3/functional/test_s3.py::test_get_object_ifnonematch_good +s3tests_boto3/functional/test_s3.py::test_get_object_ifnonematch_failed +s3tests_boto3/functional/test_s3.py::test_get_object_ifmodifiedsince_good +s3tests_boto3/functional/test_s3.py::test_get_object_ifmodifiedsince_failed +s3tests_boto3/functional/test_s3.py::test_get_object_ifunmodifiedsince_good +s3tests_boto3/functional/test_s3.py::test_get_object_ifunmodifiedsince_failed +s3tests_boto3/functional/test_s3.py::test_put_object_ifmatch_good +s3tests_boto3/functional/test_s3.py::test_put_object_ifmatch_failed +s3tests_boto3/functional/test_s3.py::test_put_object_ifmatch_overwrite_existed_good +s3tests_boto3/functional/test_s3.py::test_put_object_ifnonmatch_good +s3tests_boto3/functional/test_s3.py::test_put_object_ifnonmatch_failed +s3tests_boto3/functional/test_s3.py::test_put_object_ifnonmatch_nonexisted_good +s3tests_boto3/functional/test_s3.py::test_bucket_head_notexist +s3tests_boto3/functional/test_s3.py::test_bucket_head +s3tests_boto3/functional/test_s3.py::test_put_object_ifnonmatch_overwrite_existed_failed +s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated +s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_object_acl +s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_bucket_gone +s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_object_gone +s3tests_boto3/functional/test_s3.py::test_object_anon_put +s3tests_boto3/functional/test_s3.py::test_object_put_authenticated +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_bad_starts_nonalpha +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_bad_short_one +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_bad_short_two +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_60 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_61 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_62 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_63 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_bad_ip +s3tests_boto3/functional/test_s3.py::test_bucket_create_exists +s3tests_boto3/functional/test_s3.py::test_bucket_get_location +s3tests_boto3/functional/test_s3.py::test_bucket_create_exists_nonowner +s3tests_boto3/functional/test_s3.py::test_bucket_recreate_overwrite_acl +s3tests_boto3/functional/test_s3.py::test_bucket_recreate_new_acl +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_not_skip_special +s3tests_boto3/functional/test_s3.py::test_buckets_create_then_list +s3tests_boto3/functional/test_s3.py::test_buckets_list_ctime +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_starts_alpha +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_starts_digit +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_contains_period +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_contains_hyphen +s3tests_boto3/functional/test_s3.py::test_bucket_create_special_key_names +s3tests_boto3/functional/test_s3.py::test_bucket_list_special_prefix +s3tests_boto3/functional/test_s3.py::test_object_copy_zero_size +s3tests_boto3/functional/test_s3.py::test_object_copy_same_bucket +s3tests_boto3/functional/test_s3.py::test_object_copy_verify_contenttype +s3tests_boto3/functional/test_s3.py::test_object_copy_diff_bucket +s3tests_boto3/functional/test_s3.py::test_object_copy_canned_acl +s3tests_boto3/functional/test_s3.py::test_object_copy_retaining_metadata +s3tests_boto3/functional/test_s3.py::test_object_copy_bucket_not_found +s3tests_boto3/functional/test_s3.py::test_object_copy_replacing_metadata +s3tests_boto3/functional/test_s3.py::test_object_copy_key_not_found +s3tests_boto3/functional/test_s3.py::test_object_copy_versioned_url_encoding +s3tests_boto3/functional/test_s3.py::test_object_copy_versioned_bucket +s3tests_boto3/functional/test_s3.py::test_multipart_copy_small +s3tests_boto3/functional/test_s3.py::test_multipart_copy_without_range +s3tests_boto3/functional/test_s3.py::test_object_copy_versioning_multipart_upload +s3tests_boto3/functional/test_s3.py::test_multipart_copy_special_names +s3tests_boto3/functional/test_s3.py::test_list_multipart_upload +s3tests_boto3/functional/test_s3.py::test_multipart_copy_versioned +s3tests_boto3/functional/test_s3.py::test_multipart_copy_multiple_sizes +s3tests_boto3/functional/test_s3.py::test_set_bucket_tagging +s3tests_boto3/functional/test_s3.py::test_list_multipart_upload_owner +s3tests_boto3/functional/test_s3.py::test_atomic_read_1mb +s3tests_boto3/functional/test_s3.py::test_atomic_write_1mb +s3tests_boto3/functional/test_s3.py::test_atomic_read_4mb +s3tests_boto3/functional/test_s3.py::test_atomic_read_8mb +s3tests_boto3/functional/test_s3.py::test_atomic_write_4mb +s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_1mb +s3tests_boto3/functional/test_s3.py::test_atomic_write_8mb +s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_4mb +s3tests_boto3/functional/test_s3.py::test_atomic_dual_write_8mb +s3tests_boto3/functional/test_s3.py::test_multi_object_delete_key_limit +s3tests_boto3/functional/test_s3.py::test_atomic_write_bucket_gone +s3tests_boto3/functional/test_s3.py::test_atomic_conditional_write_1mb +s3tests_boto3/functional/test_s3.py::test_atomic_dual_conditional_write_1mb +s3tests_boto3/functional/test_s3.py::test_atomic_multipart_upload_write +s3tests_boto3/functional/test_s3.py::test_ranged_request_response_code +s3tests_boto3/functional/test_s3.py::test_ranged_request_skip_leading_bytes_response_code +s3tests_boto3/functional/test_s3.py::test_ranged_request_return_trailing_bytes_response_code +s3tests_boto3/functional/test_s3.py::test_ranged_request_invalid_range +s3tests_boto3/functional/test_s3.py::test_ranged_request_empty_object +s3tests_boto3/functional/test_s3.py::test_versioning_bucket_create_suspend +s3tests_boto3/functional/test_s3.py::test_versioning_obj_plain_null_version_removal +s3tests_boto3/functional/test_s3.py::test_versioning_obj_create_read_remove_head +s3tests_boto3/functional/test_s3.py::test_versioning_obj_plain_null_version_overwrite +s3tests_boto3/functional/test_s3.py::test_versioning_obj_create_read_remove +s3tests_boto3/functional/test_s3.py::test_versioning_obj_plain_null_version_overwrite_suspended +s3tests_boto3/functional/test_s3.py::test_versioning_obj_suspend_versions +s3tests_boto3/functional/test_s3.py::test_versioning_obj_create_versions_remove_all +s3tests_boto3/functional/test_s3.py::test_versioning_obj_list_marker +s3tests_boto3/functional/test_s3.py::test_versioning_obj_create_overwrite_multipart +s3tests_boto3/functional/test_s3.py::test_versioning_copy_obj_version +s3tests_boto3/functional/test_s3.py::test_ranged_big_request_response_code +s3tests_boto3/functional/test_s3.py::test_versioning_multi_object_delete +s3tests_boto3/functional/test_s3.py::test_versioning_multi_object_delete_with_marker_create +s3tests_boto3/functional/test_s3.py::test_versioning_multi_object_delete_with_marker +s3tests_boto3/functional/test_s3.py::test_versioning_obj_create_versions_remove_special_names +s3tests_boto3/functional/test_s3.py::test_lifecycle_set +s3tests_boto3/functional/test_s3.py::test_versioned_concurrent_object_create_and_remove +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_versioning_enabled +s3tests_boto3/functional/test_s3.py::test_versioned_concurrent_object_create_concurrent_remove +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_date +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_noncur_tags1 +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_header_put +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_header_head +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_header_tags_head +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_header_and_tags_head +s3tests_boto3/functional/test_s3.py::test_lifecycle_transition_set_invalid_date +s3tests_boto3/functional/test_s3.py::test_lifecycle_transition +s3tests_boto3/functional/test_s3.py::test_lifecycle_transition_single_rule_multi_trans +s3tests_boto3/functional/test_s3.py::test_lifecycle_noncur_transition +s3tests_boto3/functional/test_s3.py::test_lifecycle_cloud_transition +s3tests_boto3/functional/test_s3.py::test_lifecycle_cloud_multiple_transition +s3tests_boto3/functional/test_s3.py::test_lifecycle_noncur_cloud_transition +s3tests_boto3/functional/test_s3.py::test_lifecycle_cloud_transition_large_obj +s3tests_boto3/functional/test_s3.py::test_encrypted_transfer_1b +s3tests_boto3/functional/test_s3.py::test_encrypted_transfer_1kb +s3tests_boto3/functional/test_s3.py::test_encrypted_transfer_1MB +s3tests_boto3/functional/test_s3.py::test_encrypted_transfer_13b +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_method_head +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_present +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_other_key +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_invalid_md5 +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_no_md5 +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_no_key +s3tests_boto3/functional/test_s3.py::test_encryption_key_no_sse_c +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_multipart_invalid_chunks_2 +s3tests_boto3/functional/test_s3.py::test_sse_kms_method_head +s3tests_boto3/functional/test_s3.py::test_sse_kms_present +s3tests_boto3/functional/test_s3.py::test_sse_kms_no_key +s3tests_boto3/functional/test_s3.py::test_sse_kms_not_declared +s3tests_boto3/functional/test_s3.py::test_sse_kms_multipart_invalid_chunks_1 +s3tests_boto3/functional/test_s3.py::test_sse_kms_multipart_invalid_chunks_2 +s3tests_boto3/functional/test_s3.py::test_sse_kms_transfer_1b +s3tests_boto3/functional/test_s3.py::test_sse_kms_transfer_1kb +s3tests_boto3/functional/test_s3.py::test_sse_kms_transfer_1MB +s3tests_boto3/functional/test_s3.py::test_sse_kms_transfer_13b +s3tests_boto3/functional/test_s3.py::test_sse_kms_read_declare +s3tests_boto3/functional/test_s3.py::test_bucket_policy +s3tests_boto3/functional/test_s3.py::test_bucketv2_policy +s3tests_boto3/functional/test_s3.py::test_bucket_policy_another_bucket +s3tests_boto3/functional/test_s3.py::test_bucketv2_policy_another_bucket +s3tests_boto3/functional/test_s3.py::test_get_obj_tagging +s3tests_boto3/functional/test_s3.py::test_get_obj_head_tagging +s3tests_boto3/functional/test_s3.py::test_put_max_tags +s3tests_boto3/functional/test_s3.py::test_put_excess_tags +s3tests_boto3/functional/test_s3.py::test_put_max_kvsize_tags +s3tests_boto3/functional/test_s3.py::test_put_excess_key_tags +s3tests_boto3/functional/test_s3.py::test_put_excess_val_tags +s3tests_boto3/functional/test_s3.py::test_put_modify_tags +s3tests_boto3/functional/test_s3.py::test_put_delete_tags +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_tags1 +s3tests_boto3/functional/test_s3.py::test_versioning_bucket_atomic_upload_return_version_id +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_tags2 +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_versioned_tags2 +s3tests_boto3/functional/test_s3.py::test_put_obj_enc_conflict_c_s3 +s3tests_boto3/functional/test_s3.py::test_put_obj_enc_conflict_c_kms +s3tests_boto3/functional/test_s3.py::test_put_obj_enc_conflict_s3_kms +s3tests_boto3/functional/test_s3.py::test_put_obj_enc_conflict_bad_enc_kms +s3tests_boto3/functional/test_s3.py::test_versioning_bucket_multipart_upload_return_version_id +s3tests_boto3/functional/test_s3.py::test_object_lock_multi_delete_object_with_retention +s3tests_boto3/functional/test_s3.py::test_object_lock_put_legal_hold +s3tests_boto3/functional/test_s3.py::test_object_lock_get_legal_hold +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_kms_s3 +s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_governance_with_bypass +s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_governance_without_bypass +s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_compliance +s3tests_boto3/functional/test_s3.py::test_copy_object_ifmatch_good +s3tests_boto3/functional/test_s3.py::test_copy_object_ifmatch_failed +s3tests_boto3/functional/test_s3.py::test_copy_object_ifnonematch_good +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_s3_kms +s3tests_boto3/functional/test_s3.py::test_copy_object_ifnonematch_failed +s3tests_boto3/functional/test_s3.py::test_object_read_unreadable +s3tests_boto3/functional/test_s3.py::test_get_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_user_policy +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_kms_noenc +s3tests_boto3/functional/test_s3.py::test_get_public_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_s3_noenc +s3tests_boto3/functional/test_s3.py::test_get_authpublic_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_publicpolicy_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_nonpublicpolicy_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_default_public_block +s3tests_boto3/functional/test_s3.py::test_get_nonpublicpolicy_deny_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_put_public_block +s3tests_boto3/functional/test_s3.py::test_block_public_put_bucket_acls +s3tests_boto3/functional/test_s3.py::test_block_public_object_canned_acls +s3tests_boto3/functional/test_s3.py::test_ignore_public_acls +s3tests_boto3/functional/test_s3.py::test_block_public_policy +s3tests_boto3/functional/test_s3.py::test_put_bucket_encryption_kms +s3tests_boto3/functional/test_s3.py::test_put_bucket_encryption_s3 +s3tests_boto3/functional/test_s3.py::test_get_bucket_encryption_s3 +s3tests_boto3/functional/test_s3.py::test_get_bucket_encryption_kms +s3tests_boto3/functional/test_s3.py::test_delete_bucket_encryption_s3 +s3tests_boto3/functional/test_s3.py::test_delete_bucket_encryption_kms +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_upload_1b +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_upload_1kb +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_upload_1mb +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_upload_8mb +s3tests_boto3/functional/test_s3.py::test_sse_kms_default_upload_1b +s3tests_boto3/functional/test_s3.py::test_sse_kms_default_upload_1mb +s3tests_boto3/functional/test_s3.py::test_sse_kms_default_upload_1kb +s3tests_boto3/functional/test_s3.py::test_sse_kms_default_upload_8mb +s3tests_boto3/functional/test_s3.py::test_sse_kms_default_post_object_authenticated_request +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_method_head +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_post_object_authenticated_request +s3tests_boto3/functional/test_s3.py::test_sse_s3_encrypted_upload_1b +s3tests_boto3/functional/test_s3select.py::test_generate_where_clause +s3tests_boto3/functional/test_s3.py::test_sse_s3_encrypted_upload_1kb +s3tests_boto3/functional/test_s3.py::test_sse_s3_encrypted_upload_1mb +s3tests_boto3/functional/test_s3.py::test_sse_s3_encrypted_upload_8mb +s3tests_boto3/functional/test_s3select.py::test_generate_projection +s3tests_boto3/functional/test_s3select.py::test_count_operation +s3tests_boto3/functional/test_s3select.py::test_column_sum_min_max +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_multipart_upload +s3tests_boto3/functional/test_s3select.py::test_nullif_expressions +s3tests_boto3/functional/test_s3select.py::test_nulliftrue_expressions +s3tests_boto3/functional/test_s3select.py::test_lowerupper_expressions +s3tests_boto3/functional/test_s3select.py::test_in_expressions +s3tests_boto3/functional/test_s3select.py::test_is_not_null_expressions +s3tests_boto3/functional/test_s3select.py::test_true_false_in_expressions +s3tests_boto3/functional/test_s3select.py::test_like_expressions +s3tests_boto3/functional/test_s3select.py::test_truefalselike_expressions +s3tests_boto3/functional/test_s3select.py::test_alias +s3tests_boto3/functional/test_s3select.py::test_complex_expressions +s3tests_boto3/functional/test_s3select.py::test_datetime +s3tests_boto3/functional/test_s3select.py::test_alias_cyclic_refernce +s3tests_boto3/functional/test_s3select.py::test_csv_parser +s3tests_boto3/functional/test_s3select.py::test_csv_definition +s3tests_boto3/functional/test_s3select.py::test_true_false_datetime +s3tests_boto3/functional/test_s3select.py::test_schema_definition +s3tests_boto3/functional/test_s3select.py::test_when_then_else_expressions +s3tests_boto3/functional/test_s3select.py::test_coalesce_expressions +s3tests_boto3/functional/test_s3select.py::test_trim_expressions +s3tests_boto3/functional/test_s3select.py::test_cast_expressions +s3tests_boto3/functional/test_s3select.py::test_version +s3tests_boto3/functional/test_s3select.py::test_truefalse_trim_expressions +s3tests_boto3/functional/test_s3select.py::test_escape_expressions +s3tests_boto3/functional/test_s3select.py::test_bool_cast_expressions +s3tests_boto3/functional/test_s3select.py::test_case_value_expressions +s3tests_boto3/functional/test_s3select.py::test_progress_expressions +s3tests_boto3/functional/test_s3select.py::test_output_serial_expressions +s3tests_boto3/functional/test_sts.py::test_get_session_token +s3tests_boto3/functional/test_sts.py::test_get_session_token_permanent_creds_denied +s3tests_boto3/functional/test_sts.py::test_assume_role_allow +s3tests_boto3/functional/test_sts.py::test_assume_role_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_creds_expiry +s3tests_boto3/functional/test_sts.py::test_assume_role_deny_head_nonexistent +s3tests_boto3/functional/test_sts.py::test_assume_role_allow_head_nonexistent +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity +s3tests_boto3/functional/test_sts.py::test_session_policy_check_on_different_buckets +s3tests_boto3/functional/test_sts.py::test_session_policy_check_on_same_bucket +s3tests_boto3/functional/test_sts.py::test_session_policy_check_put_obj_denial +s3tests_boto3/functional/test_sts.py::test_swapping_role_policy_and_session_policy +s3tests_boto3/functional/test_sts.py::test_session_policy_check_different_op_permissions +s3tests_boto3/functional/test_sts.py::test_session_policy_check_with_deny_effect +s3tests_boto3/functional/test_sts.py::test_session_policy_check_with_deny_on_same_op +s3tests_boto3/functional/test_sts.py::test_session_policy_bucket_policy_role_arn +s3tests_boto3/functional/test_sts.py::test_session_policy_copy_object +s3tests_boto3/functional/test_sts.py::test_session_policy_bucket_policy_session_arn +s3tests_boto3/functional/test_sts.py::test_session_policy_no_bucket_role_policy +s3tests_boto3/functional/test_sts.py::test_session_policy_bucket_policy_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_sub +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_azp +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_principal_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_request_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_for_all_values +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_for_all_values_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_tag_keys_trust_policy +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_tag_keys_role_policy +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_wrong_resource_tag_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag_princ_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_role_resource_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag_copy_obj +s3tests_boto3/functional/test_utils.py::test_generate +s3tests_boto3/functional/test_s3.py::test_object_write_with_chunked_transfer_encoding +s3tests_boto3/functional/test_s3.py::test_versioning_concurrent_multi_object_delete +s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_rgw_chunk_size_bug +s3tests_boto3/functional/test_s3.py::test_get_object_torrent diff --git a/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_pending_list_status.md b/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_pending_list_status.md index 24466ffb15..03d5a4cc86 100644 --- a/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_pending_list_status.md +++ b/docs/dev_guide/ceph_s3_tests/ceph_s3_tests_pending_list_status.md @@ -36,4 +36,5 @@ Attached a table with tests that where investigated and their status (this table | test_schema_definition | Faulty Test | | Same as test_alias_cyclic_refernce | | test_progress_expressions | Faulty Test | [508](https://github.com/ceph/s3-tests/issues/508) | | | test_lifecycle_set_date | Faulty Test | [510](https://github.com/ceph/s3-tests/issues/510) | | -| test_lifecycle_transition_set_invalid_date | Not Implemented | | added because of the following PR [7270](https://github.com/noobaa/noobaa-core/pull/7270#discussion_r1175123422) | \ No newline at end of file +| test_lifecycle_transition_set_invalid_date | Not Implemented | | added because of the following PR [7270](https://github.com/noobaa/noobaa-core/pull/7270#discussion_r1175123422) | +| All aws4 tests (e.g test_bucket_create_bad_amz_date_before_epoch_aws4) | Faulty Test | [520](https://github.com/ceph/s3-tests/issues/520) | | \ No newline at end of file diff --git a/docs/dev_guide/ceph_s3_tests/images/tox_test_failed.png b/docs/dev_guide/ceph_s3_tests/images/tox_test_failed.png new file mode 100644 index 0000000000..9a21a6c428 Binary files /dev/null and b/docs/dev_guide/ceph_s3_tests/images/tox_test_failed.png differ diff --git a/docs/dev_guide/ceph_s3_tests/images/tox_test_pass.png b/docs/dev_guide/ceph_s3_tests/images/tox_test_pass.png new file mode 100644 index 0000000000..0881b95588 Binary files /dev/null and b/docs/dev_guide/ceph_s3_tests/images/tox_test_pass.png differ diff --git a/docs/dev_guide/ceph_s3_tests/images/tox_test_skipped.png b/docs/dev_guide/ceph_s3_tests/images/tox_test_skipped.png new file mode 100644 index 0000000000..d3810e582e Binary files /dev/null and b/docs/dev_guide/ceph_s3_tests/images/tox_test_skipped.png differ diff --git a/src/deploy/NVA_build/Tests.Dockerfile b/src/deploy/NVA_build/Tests.Dockerfile index d9139aac88..33970d9e26 100644 --- a/src/deploy/NVA_build/Tests.Dockerfile +++ b/src/deploy/NVA_build/Tests.Dockerfile @@ -15,7 +15,8 @@ ENV TEST_CONTAINER true RUN dnf group install -y -q "Development Tools" && \ dnf install -y -q --nogpgcheck vim \ which python3-virtualenv python36-devel libevent-devel libffi-devel libxml2-devel libxslt-devel zlib-devel \ - git && \ + git \ + tox && \ dnf clean all WORKDIR /root/node_modules/noobaa-core/ @@ -26,9 +27,11 @@ WORKDIR /root/node_modules/noobaa-core/ # Size: ~ 83.9 MB # ############################################################## -RUN ./src/test/system_tests/ceph_s3_tests/test_ceph_s3_deploy.sh $(pwd) -RUN cd ./src/test/system_tests/ceph_s3_tests/s3-tests/ && \ - ./bootstrap +RUN ./src/test/system_tests/ceph_s3_tests/test_ceph_s3_deploy.sh $(pwd) +# add group permissions to s3-tests directory (tox needs it in order to run) +RUN cd ./src/test/system_tests/ceph_s3_tests/ && \ + chgrp -R 0 s3-tests && \ + chmod -R g=u s3-tests ############################################################## # Layers: diff --git a/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_black_list.txt b/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_black_list.txt index 6a4ee91db0..849f5a712d 100644 --- a/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_black_list.txt +++ b/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_black_list.txt @@ -1,295 +1,355 @@ -s3tests.functional.test_s3.test_100_continue -s3tests.functional.test_headers.test_object_create_date_and_amz_date -s3tests.functional.test_headers.test_object_create_amz_date_and_no_date -s3tests.functional.test_headers.test_object_create_bad_authorization_empty -s3tests.functional.test_headers.test_object_create_bad_contentlength_none -s3tests.functional.test_headers.test_object_create_bad_contentlength_mismatch_below_aws2 -s3tests.functional.test_s3.test_versioning_obj_read_not_exist_null -s3tests.functional.test_s3.test_append_normal_object -s3tests.functional.test_s3.test_append_object -s3tests.functional.test_s3.test_append_object_position_wrong -s3tests.functional.test_s3.test_logging_toggle -s3tests.functional.test_s3.test_encryption_sse_c_multipart_invalid_chunks_2 -s3tests.functional.test_s3.test_bucket_policy_different_tenant -s3tests.functional.test_s3.test_bucket_policy_set_condition_operator_end_with_IfExists -s3tests.functional.test_s3.test_bucket_policy_put_obj_enc -s3tests.functional.test_s3.test_bucket_policy_put_obj_request_obj_tag -s3tests.functional.test_s3_website.check_can_test_website -s3tests.functional.test_s3_website.test_website_nonexistant_bucket_s3 -s3tests.functional.test_s3_website.test_website_nonexistant_bucket_rgw -s3tests.functional.test_s3_website.test_website_public_bucket_list_public_index -s3tests.functional.test_s3_website.test_website_private_bucket_list_public_index -s3tests.functional.test_s3_website.test_website_public_bucket_list_empty -s3tests.functional.test_s3_website.test_website_private_bucket_list_empty -s3tests.functional.test_s3_website.test_website_private_bucket_list_private_index -s3tests.functional.test_s3_website.test_website_private_bucket_list_empty_missingerrordoc -s3tests.functional.test_s3_website.test_website_public_bucket_list_private_index -s3tests.functional.test_s3_website.test_website_public_bucket_list_private_index_missingerrordoc -s3tests.functional.test_s3_website.test_website_private_bucket_list_private_index_missingerrordoc -s3tests.functional.test_s3_website.test_website_public_bucket_list_empty_missingerrordoc -s3tests.functional.test_s3_website.test_website_private_bucket_list_empty_blockederrordoc -s3tests.functional.test_s3_website.test_website_public_bucket_list_empty_blockederrordoc -s3tests.functional.test_s3_website.test_website_public_bucket_list_private_index_blockederrordoc -s3tests.functional.test_s3_website.test_website_private_bucket_list_private_index_blockederrordoc -s3tests.functional.test_s3_website.test_website_private_bucket_list_empty_gooderrordoc -s3tests.functional.test_s3_website.test_website_public_bucket_list_empty_gooderrordoc -s3tests.functional.test_s3_website.test_website_public_bucket_list_private_index_gooderrordoc -s3tests.functional.test_s3_website.test_website_private_bucket_list_private_index_gooderrordoc -s3tests.functional.test_s3_website.test_website_bucket_private_redirectall_base -s3tests.functional.test_s3_website.test_website_bucket_private_redirectall_path -s3tests.functional.test_s3_website.test_website_bucket_private_redirectall_path_upgrade -s3tests.functional.test_s3_website.test_website_xredirect_nonwebsite -s3tests.functional.test_s3_website.test_website_xredirect_private_relative -s3tests.functional.test_s3_website.test_website_xredirect_public_abs -s3tests.functional.test_s3_website.test_website_xredirect_public_relative -s3tests.functional.test_s3_website -s3tests.fuzz.test.test_fuzzer.test_load_graph -s3tests.functional.test_s3_website.test_website_xredirect_private_abs -test_realistic.TestFileValidator.test_new_file_is_valid_on_several_calls -test_realistic.TestFileValidator.test_new_file_is_valid_when_size_is_1 -test_realistic.TestFileValidator.test_new_file_is_valid -test_realistic.TestFiles.test_random_file_valid -s3tests_boto3.functional.test_headers.test_object_create_bad_contentlength_none -s3tests_boto3.functional.test_headers.test_object_create_bad_contentlength_mismatch_abov -s3tests_boto3.functional.test_headers.test_object_create_bad_authorization_empty -s3tests_boto3.functional.test_headers.test_object_create_date_and_amz_date -s3tests_boto3.functional.test_headers.test_object_create_amz_date_and_no_date -s3tests_boto3.functional.test_headers.test_object_create_bad_authorization_none -s3tests_boto3.functional.test_headers.test_bucket_put_bad_canned_acl -s3tests_boto3.functional.test_headers.test_bucket_create_bad_expect_mismatch -s3tests_boto3.functional.test_headers.test_bucket_create_bad_authorization_none -s3tests_boto3.functional.test_headers.test_bucket_create_bad_authorization_empty -s3tests_boto3.functional.test_headers.test_object_create_bad_contentlength_mismatch_below_aws2 -s3tests_boto3.functional.test_headers.test_object_create_bad_authorization_incorrect_aws2 -s3tests_boto3.functional.test_headers.test_object_create_bad_authorization_invalid_aws2 -s3tests_boto3.functional.test_headers.test_object_create_bad_date_invalid_aws2 -s3tests_boto3.functional.test_headers.test_object_create_bad_date_empty_aws2 -s3tests_boto3.functional.test_headers.test_object_create_bad_date_none_aws2 -s3tests_boto3.functional.test_headers.test_object_create_bad_date_before_epoch_aws2 -s3tests_boto3.functional.test_headers.test_bucket_create_bad_authorization_invalid_aws2 -s3tests_boto3.functional.test_headers.test_bucket_create_bad_date_invalid_aws2 -s3tests_boto3.functional.test_headers.test_bucket_create_bad_date_none_aws2 -s3tests_boto3.functional.test_headers.test_bucket_create_bad_date_empty_aws2 -s3tests_boto3.functional.test_headers.test_bucket_create_bad_date_before_epoch_aws2 -s3tests.functional.test_headers.test_object_acl_create_contentlength_none -s3tests_boto3.functional.test_s3.test_bucket_listv2_delimiter_prefix -s3tests_boto3.functional.test_s3.test_bucket_listv2_delimiter_prefix_underscore -s3tests_boto3.functional.test_s3.test_bucket_list_delimiter_unreadable -s3tests_boto3.functional.test_s3.test_bucket_listv2_delimiter_unreadable -s3tests_boto3.functional.test_s3.test_bucket_listv2_fetchowner_empty -s3tests.functional.test_s3.test_encryption_sse_c_multipart_invalid_chunks_1 -s3tests_boto3.functional.test_s3.test_bucket_list_prefix_unreadable -s3tests_boto3.functional.test_s3.test_bucket_listv2_prefix_unreadable -s3tests_boto3.functional.test_s3.test_bucket_listv2_prefix_delimiter_delimiter_not_exist -s3tests_boto3.functional.test_s3.test_bucket_listv2_maxkeys_zero -s3tests_boto3.functional.test_s3.test_bucket_list_unordered -s3tests_boto3.functional.test_s3.test_bucket_listv2_unordered -s3tests_boto3.functional.test_s3.test_bucket_listv2_continuationtoken -s3tests_boto3.functional.test_s3.test_bucket_listv2_startafter_unreadable -s3tests_boto3.functional.test_s3.test_bucket_list_return_data_versioning -s3tests_boto3.functional.test_s3.test_bucket_list_objects_anonymous -s3tests_boto3.functional.test_s3.test_bucket_listv2_objects_anonymous -s3tests_boto3.functional.test_s3.test_object_write_cache_control -s3tests_boto3.functional.test_s3.test_object_write_expires -s3tests_boto3.functional.test_s3.test_multi_objectv2_delete -s3tests_boto3.functional.test_s3.test_object_set_get_unicode_metadata -s3tests_boto3.functional.test_s3.test_object_set_get_metadata_empty_to_unreadable_prefix -s3tests_boto3.functional.test_s3.test_object_set_get_non_utf8_metadata -s3tests_boto3.functional.test_s3.test_object_set_get_metadata_empty_to_unreadable_suffix -s3tests_boto3.functional.test_s3.test_object_set_get_metadata_empty_to_unreadable_infix -s3tests_boto3.functional.test_s3.test_object_set_get_metadata_overwrite_to_unreadable_prefix -s3tests_boto3.functional.test_s3.test_object_set_get_metadata_overwrite_to_unreadable_suffix -s3tests_boto3.functional.test_s3.test_object_set_get_metadata_overwrite_to_unreadable_infix -s3tests_boto3.functional.test_s3.test_post_object_anonymous_request -s3tests_boto3.functional.test_s3.test_post_object_authenticated_request -s3tests_boto3.functional.test_s3.test_post_object_authenticated_no_content_type -s3tests_boto3.functional.test_s3.test_post_object_set_success_code -s3tests_boto3.functional.test_s3.test_post_object_set_invalid_success_code -s3tests_boto3.functional.test_s3.test_post_object_upload_larger_than_chunk -s3tests_boto3.functional.test_s3.test_post_object_set_key_from_filename -s3tests_boto3.functional.test_s3.test_post_object_case_insensitive_condition_fields -s3tests_boto3.functional.test_s3.test_post_object_ignored_header -s3tests_boto3.functional.test_s3.test_post_object_escaped_field_values -s3tests_boto3.functional.test_s3.test_post_object_success_redirect_action -s3tests_boto3.functional.test_s3.test_post_object_invalid_date_format -s3tests_boto3.functional.test_s3.test_post_object_no_key_specified -s3tests_boto3.functional.test_s3.test_post_object_missing_signature -s3tests_boto3.functional.test_s3.test_post_object_user_specified_header -s3tests_boto3.functional.test_s3.test_post_object_condition_is_case_sensitive -s3tests_boto3.functional.test_s3.test_post_object_expires_is_case_sensitive -s3tests_boto3.functional.test_s3.test_post_object_missing_expires_condition -s3tests_boto3.functional.test_s3.test_post_object_missing_conditions_list -s3tests_boto3.functional.test_s3.test_post_object_upload_size_limit_exceeded -s3tests_boto3.functional.test_s3.test_post_object_missing_content_length_argument -s3tests_boto3.functional.test_s3.test_post_object_invalid_content_length_argument -s3tests_boto3.functional.test_s3.test_post_object_upload_size_below_minimum -s3tests_boto3.functional.test_s3.test_post_object_empty_conditions -s3tests_boto3.functional.test_s3.test_put_object_ifmatch_nonexisted_failed -s3tests_boto3.functional.test_s3.test_object_raw_get_bucket_gone -s3tests_boto3.functional.test_s3.test_object_raw_get -s3tests_boto3.functional.test_s3.test_object_delete_key_bucket_gone -s3tests_boto3.functional.test_s3.test_object_raw_get_object_gone -s3tests_boto3.functional.test_s3.test_bucket_head_extended -s3tests_boto3.functional.test_s3.test_object_raw_get_bucket_acl -s3tests_boto3.functional.test_s3.test_object_raw_response_headers -s3tests_boto3.functional.test_s3.test_object_raw_authenticated_bucket_acl -s3tests_boto3.functional.test_s3.test_object_raw_get_x_amz_expires_out_range_zero -s3tests_boto3.functional.test_s3.test_object_raw_get_x_amz_expires_out_positive_range -s3tests_boto3.functional.test_s3.test_object_raw_get_x_amz_expires_out_max_range -s3tests_boto3.functional.test_s3.test_object_anon_put_write_access -s3tests_boto3.functional.test_s3.test_object_raw_put_authenticated_expired -s3tests_boto3.functional.test_s3.test_bucket_create_naming_bad_short_empty -s3tests_boto3.functional.test_s3.test_bucket_create_naming_good_long_250 -s3tests_boto3.functional.test_s3.test_bucket_create_naming_good_long_251 -s3tests_boto3.functional.test_s3.test_bucket_create_naming_good_long_252 -s3tests_boto3.functional.test_s3.test_bucket_create_naming_good_long_253 -s3tests_boto3.functional.test_s3.test_bucket_create_naming_good_long_254 -s3tests_boto3.functional.test_s3.test_bucket_create_naming_good_long_255 -s3tests_boto3.functional.test_s3.test_bucket_list_long_name -s3tests_boto3.functional.test_s3.test_bucket_create_naming_dns_underscore -s3tests_boto3.functional.test_s3.test_bucket_create_naming_dns_long -s3tests_boto3.functional.test_s3.test_bucket_create_naming_dns_dash_at_end -s3tests_boto3.functional.test_s3.test_bucket_create_naming_dns_dot_dot -s3tests_boto3.functional.test_s3.test_bucket_create_naming_dns_dot_dash -s3tests_boto3.functional.test_s3.test_bucket_create_naming_dns_dash_dot -s3tests_boto3.functional.test_s3.test_bucket_acl_default -s3tests_boto3.functional.test_s3.test_bucket_acl_canned_during_create -s3tests_boto3.functional.test_s3.test_bucket_acl_canned -s3tests_boto3.functional.test_s3.test_bucket_acl_canned_publicreadwrite -s3tests_boto3.functional.test_s3.test_bucket_acl_canned_authenticatedread -s3tests_boto3.functional.test_s3.test_object_acl_default -s3tests_boto3.functional.test_s3.test_object_acl_canned_during_create -s3tests_boto3.functional.test_s3.test_object_acl_canned_publicreadwrite -s3tests_boto3.functional.test_s3.test_object_acl_canned_bucketownerread -s3tests_boto3.functional.test_s3.test_object_acl_canned_authenticatedread -s3tests_boto3.functional.test_s3.test_object_acl_canned_bucketownerfullcontrol -s3tests_boto3.functional.test_s3.test_object_acl_full_control_verify_owner -s3tests_boto3.functional.test_s3.test_object_acl_full_control_verify_attributes -s3tests_boto3.functional.test_s3.test_object_acl -s3tests_boto3.functional.test_s3.test_object_acl_write -s3tests_boto3.functional.test_s3.test_object_acl_writeacp -s3tests_boto3.functional.test_s3.test_object_acl_read -s3tests_boto3.functional.test_s3.test_object_acl_readacp -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_userid_fullcontrol -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_userid_read -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_userid_readacp -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_userid_write -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_userid_writeacp -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_nonexist_user -s3tests_boto3.functional.test_s3.test_bucket_acl_no_grants -s3tests_boto3.functional.test_s3.test_bucket_header_acl_grants -s3tests_boto3.functional.test_s3.test_object_header_acl_grants -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_email -s3tests_boto3.functional.test_s3.test_bucket_acl_grant_email_not_exist -s3tests_boto3.functional.test_s3.test_bucket_acl_revoke_all -s3tests_boto3.functional.test_s3.test_logging_toggle -s3tests_boto3.functional.test_s3.test_access_bucket_private_object_private -s3tests_boto3.functional.test_s3.test_access_bucket_private_objectv2_private -s3tests_boto3.functional.test_s3.test_access_bucket_private_object_publicread -s3tests_boto3.functional.test_s3.test_object_acl_canned -s3tests_boto3.functional.test_s3.test_access_bucket_private_objectv2_publicread -s3tests_boto3.functional.test_s3.test_access_bucket_private_object_publicreadwrite -s3tests_boto3.functional.test_s3.test_access_bucket_private_objectv2_publicreadwrite -s3tests_boto3.functional.test_s3.test_access_bucket_publicread_object_private -s3tests_boto3.functional.test_s3.test_access_bucket_publicread_object_publicread -s3tests_boto3.functional.test_s3.test_access_bucket_publicread_object_publicreadwrite -s3tests_boto3.functional.test_s3.test_access_bucket_publicreadwrite_object_private -s3tests_boto3.functional.test_s3.test_access_bucket_publicreadwrite_object_publicread -s3tests_boto3.functional.test_s3.test_list_buckets_anonymous -s3tests_boto3.functional.test_s3.test_access_bucket_publicreadwrite_object_publicreadwrite -s3tests_boto3.functional.test_s3.test_list_buckets_invalid_auth -s3tests_boto3.functional.test_s3.test_list_buckets_bad_auth -s3tests_boto3.functional.test_s3.test_bucket_recreate_not_overriding -s3tests_boto3.functional.test_s3.test_object_copy_to_itself -s3tests_boto3.functional.test_s3.test_object_copy_not_owned_bucket -s3tests_boto3.functional.test_s3.test_object_copy_not_owned_object_bucket -s3tests_boto3.functional.test_s3.test_multipart_copy_invalid_range -s3tests_boto3.functional.test_s3.test_multipart_upload -s3tests_boto3.functional.test_s3.test_multipart_upload_size_too_small -s3tests_boto3.functional.test_s3.test_abort_multipart_upload -s3tests_boto3.functional.test_s3.test_multipart_copy_improper_range -s3tests_boto3.functional.test_s3.test_100_continue -s3tests_boto3.functional.test_s3.test_set_cors -s3tests_boto3.functional.test_s3.test_cors_origin_wildcard -s3tests_boto3.functional.test_s3.test_cors_origin_response -s3tests_boto3.functional.test_s3.test_cors_header_option -s3tests_boto3.functional.test_s3.test_set_tagging -s3tests_boto3.functional.test_s3.test_multipart_resend_first_finishes_last -s3tests_boto3.functional.test_s3.test_versioned_object_acl -s3tests_boto3.functional.test_s3.test_versioned_object_acl_no_version_specified -s3tests_boto3.functional.test_s3.test_lifecycle_get -s3tests_boto3.functional.test_s3.test_lifecycle_id_too_long -s3tests_boto3.functional.test_s3.test_lifecycle_same_id -s3tests_boto3.functional.test_s3.test_lifecycle_invalid_status -s3tests_boto3.functional.test_s3.test_lifecycle_set_invalid_date -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_date -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_days0 -s3tests_boto3.functional.test_s3.test_lifecycle_set_noncurrent -s3tests_boto3.functional.test_s3.test_lifecycle_noncur_expiration -s3tests_boto3.functional.test_s3.test_lifecycle_set_deletemarker -s3tests_boto3.functional.test_s3.test_lifecycle_set_filter -s3tests_boto3.functional.test_s3.test_lifecycle_deletemarker_expiration -s3tests_boto3.functional.test_s3.test_lifecycle_set_empty_filter -s3tests_boto3.functional.test_s3.test_lifecyclev2_expiration -s3tests_boto3.functional.test_s3.test_lifecycle_set_multipart -s3tests_boto3.functional.test_s3.test_encryption_sse_c_multipart_upload -s3tests_boto3.functional.test_s3.test_encryption_sse_c_post_object_authenticated_request -s3tests_boto3.functional.test_s3.test_lifecycle_multipart_expiration -s3tests_boto3.functional.test_s3.test_encryption_sse_c_multipart_bad_download -s3tests_boto3.functional.test_s3.test_sse_kms_multipart_upload -s3tests_boto3.functional.test_s3.test_sse_kms_post_object_authenticated_request -s3tests_boto3.functional.test_s3.test_bucket_policy_acl -s3tests_boto3.functional.test_s3.test_bucketv2_policy_acl -s3tests_boto3.functional.test_s3.test_bucket_policy_different_tenant -s3tests_boto3.functional.test_s3.test_encryption_sse_c_multipart_invalid_chunks_1 -s3tests_boto3.functional.test_s3.test_bucketv2_policy_different_tenant -s3tests_boto3.functional.test_s3.test_bucket_policy_set_condition_operator_end_with_IfExists -s3tests_boto3.functional.test_s3.test_post_object_tags_anonymous_request -s3tests_boto3.functional.test_s3.test_post_object_tags_authenticated_request -s3tests_boto3.functional.test_s3.test_put_obj_with_tags -s3tests_boto3.functional.test_s3.test_get_tags_acl_public -s3tests_boto3.functional.test_s3.test_delete_tags_obj_public -s3tests_boto3.functional.test_s3.test_put_tags_acl_public -s3tests_boto3.functional.test_s3.test_bucket_policy_get_obj_tagging_existing_tag -s3tests_boto3.functional.test_s3.test_bucket_policy_get_obj_existing_tag -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_tagging_existing_tag -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_copy_source -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_copy_source_meta -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_acl -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_enc -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_grant -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_request_obj_tag -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_lock -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_lock_invalid_bucket -s3tests_boto3.functional.test_s3.test_bucket_policy_get_obj_acl_existing_tag -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_lock_with_days_and_years -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_lock_invalid_days -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_lock_invalid_years -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_lock_invalid_status -s3tests_boto3.functional.test_s3.test_object_lock_suspend_versioning -s3tests_boto3.functional.test_s3.test_object_lock_get_obj_lock -s3tests_boto3.functional.test_s3.test_object_lock_get_obj_lock_invalid_bucket -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention_invalid_bucket -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention_invalid_mode -s3tests_boto3.functional.test_s3.test_object_lock_get_obj_retention -s3tests_boto3.functional.test_s3.test_object_lock_get_obj_retention_invalid_bucket -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention_versionid -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention_override_default_retention -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention_increase_period -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention_shorten_period -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_retention_shorten_period_bypass -s3tests_boto3.functional.test_s3.test_object_lock_delete_object_with_retention -s3tests_boto3.functional.test_s3.test_object_lock_put_legal_hold_invalid_bucket -s3tests_boto3.functional.test_s3.test_object_lock_put_legal_hold_invalid_status -s3tests_boto3.functional.test_s3.test_object_lock_get_legal_hold_invalid_bucket -s3tests_boto3.functional.test_s3.test_object_lock_delete_object_with_legal_hold_on -s3tests_boto3.functional.test_s3.test_object_lock_delete_object_with_legal_hold_off -s3tests_boto3.functional.test_s3.test_object_lock_get_obj_metadata -s3tests_boto3.functional.test_s3.test_object_lock_uploading_obj -s3tests_boto3.fuzz.test.test_fuzzer.test_load_graph -test_realistic.TestFileValidator.test_new_file_is_valid -test_realistic.TestFileValidator.test_new_file_is_valid_on_several_calls -test_realistic.TestFileValidator.test_new_file_is_valid_when_size_is_1 -test_realistic.TestFiles.test_random_file_valid -s3tests.functional.test_headers.test_object_create_bad_contentlength_mismatch_above \ No newline at end of file +s3tests/functional/test_s3.py::test_100_continue +s3tests/functional/test_headers.py::test_object_create_date_and_amz_date +s3tests/functional/test_headers.py::test_object_create_amz_date_and_no_date +s3tests/functional/test_headers.py::test_object_create_bad_authorization_empty +s3tests/functional/test_headers.py::test_object_create_bad_contentlength_none +s3tests/functional/test_headers.py::test_object_create_bad_contentlength_mismatch_below_aws2 +s3tests/functional/test_s3.py::test_versioning_obj_read_not_exist_null +s3tests/functional/test_s3.py::test_append_normal_object +s3tests/functional/test_s3.py::test_append_object +s3tests/functional/test_s3.py::test_append_object_position_wrong +s3tests/functional/test_s3.py::test_logging_toggle +s3tests/functional/test_s3.py::test_encryption_sse_c_multipart_invalid_chunks_2 +s3tests/functional/test_s3.py::test_bucket_policy_different_tenant +s3tests/functional/test_s3.py::test_bucket_policy_set_condition_operator_end_with_IfExists +s3tests/functional/test_s3.py::test_bucket_policy_put_obj_enc +s3tests/functional/test_s3.py::test_bucket_policy_put_obj_request_obj_tag +s3tests/functional/test_s3_website.py::check_can_test_website +s3tests/functional/test_s3_website.py::test_website_nonexistant_bucket_s3 +s3tests/functional/test_s3_website.py::test_website_nonexistant_bucket_rgw +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_public_index +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_public_index +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_empty +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_empty +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_private_index +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_empty_missingerrordoc +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_private_index +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_private_index_missingerrordoc +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_private_index_missingerrordoc +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_empty_missingerrordoc +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_empty_blockederrordoc +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_empty_blockederrordoc +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_private_index_blockederrordoc +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_private_index_blockederrordoc +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_empty_gooderrordoc +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_empty_gooderrordoc +s3tests/functional/test_s3_website.py::test_website_public_bucket_list_private_index_gooderrordoc +s3tests/functional/test_s3_website.py::test_website_private_bucket_list_private_index_gooderrordoc +s3tests/functional/test_s3_website.py::test_website_bucket_private_redirectall_base +s3tests/functional/test_s3_website.py::test_website_bucket_private_redirectall_path +s3tests/functional/test_s3_website.py::test_website_bucket_private_redirectall_path_upgrade +s3tests/functional/test_s3_website.py::test_website_xredirect_nonwebsite +s3tests/functional/test_s3_website.py::test_website_xredirect_private_relative +s3tests/functional/test_s3_website.py::test_website_xredirect_public_abs +s3tests/functional/test_s3_website.py::test_website_xredirect_public_relative +s3tests/functional/test_s3_website.py +s3tests/functional/test_s3_website.py::test_website_xredirect_private_abs +test_realistic/TestFileValidator.py::test_new_file_is_valid_on_several_calls +test_realistic/TestFileValidator.py::test_new_file_is_valid_when_size_is_1 +test_realistic/TestFileValidator.py::test_new_file_is_valid +test_realistic/TestFiles/test_random_file_valid +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contentlength_none +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contentlength_mismatch_abov +s3tests_boto3/functional/test_headers.py::test_object_create_bad_authorization_empty +s3tests_boto3/functional/test_headers.py::test_object_create_date_and_amz_date +s3tests_boto3/functional/test_headers.py::test_object_create_amz_date_and_no_date +s3tests_boto3/functional/test_headers.py::test_object_create_bad_authorization_none +s3tests_boto3/functional/test_headers.py::test_bucket_put_bad_canned_acl +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_expect_mismatch +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_authorization_none +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_authorization_empty +s3tests_boto3/functional/test_headers.py::test_object_create_bad_contentlength_mismatch_below_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_authorization_incorrect_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_authorization_invalid_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_date_invalid_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_date_empty_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_date_none_aws2 +s3tests_boto3/functional/test_headers.py::test_object_create_bad_date_before_epoch_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_authorization_invalid_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_date_invalid_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_date_none_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_date_empty_aws2 +s3tests_boto3/functional/test_headers.py::test_bucket_create_bad_date_before_epoch_aws2 +s3tests/functional/test_headers.py::test_object_acl_create_contentlength_none +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_prefix_underscore +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_unreadable +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_unreadable +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_fetchowner_empty +s3tests/functional/test_s3.py::test_encryption_sse_c_multipart_invalid_chunks_1 +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_unreadable +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_unreadable +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_prefix_delimiter_delimiter_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_maxkeys_zero +s3tests_boto3/functional/test_s3.py::test_bucket_list_unordered +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_unordered +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_continuationtoken +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_startafter_unreadable +s3tests_boto3/functional/test_s3.py::test_bucket_list_return_data_versioning +s3tests_boto3/functional/test_s3.py::test_bucket_list_objects_anonymous +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_objects_anonymous +s3tests_boto3/functional/test_s3.py::test_object_write_cache_control +s3tests_boto3/functional/test_s3.py::test_object_write_expires +s3tests_boto3/functional/test_s3.py::test_multi_objectv2_delete +s3tests_boto3/functional/test_s3.py::test_object_set_get_unicode_metadata +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_empty_to_unreadable_prefix +s3tests_boto3/functional/test_s3.py::test_object_set_get_non_utf8_metadata +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_empty_to_unreadable_suffix +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_empty_to_unreadable_infix +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_overwrite_to_unreadable_prefix +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_overwrite_to_unreadable_suffix +s3tests_boto3/functional/test_s3.py::test_object_set_get_metadata_overwrite_to_unreadable_infix +s3tests_boto3/functional/test_s3.py::test_post_object_anonymous_request +s3tests_boto3/functional/test_s3.py::test_post_object_authenticated_request +s3tests_boto3/functional/test_s3.py::test_post_object_authenticated_no_content_type +s3tests_boto3/functional/test_s3.py::test_post_object_set_success_code +s3tests_boto3/functional/test_s3.py::test_post_object_set_invalid_success_code +s3tests_boto3/functional/test_s3.py::test_post_object_upload_larger_than_chunk +s3tests_boto3/functional/test_s3.py::test_post_object_set_key_from_filename +s3tests_boto3/functional/test_s3.py::test_post_object_case_insensitive_condition_fields +s3tests_boto3/functional/test_s3.py::test_post_object_ignored_header +s3tests_boto3/functional/test_s3.py::test_post_object_escaped_field_values +s3tests_boto3/functional/test_s3.py::test_post_object_success_redirect_action +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_date_format +s3tests_boto3/functional/test_s3.py::test_post_object_no_key_specified +s3tests_boto3/functional/test_s3.py::test_post_object_missing_signature +s3tests_boto3/functional/test_s3.py::test_post_object_user_specified_header +s3tests_boto3/functional/test_s3.py::test_post_object_condition_is_case_sensitive +s3tests_boto3/functional/test_s3.py::test_post_object_expires_is_case_sensitive +s3tests_boto3/functional/test_s3.py::test_post_object_missing_expires_condition +s3tests_boto3/functional/test_s3.py::test_post_object_missing_conditions_list +s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_limit_exceeded +s3tests_boto3/functional/test_s3.py::test_post_object_missing_content_length_argument +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_content_length_argument +s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_below_minimum +s3tests_boto3/functional/test_s3.py::test_post_object_empty_conditions +s3tests_boto3/functional/test_s3.py::test_put_object_ifmatch_nonexisted_failed +s3tests_boto3/functional/test_s3.py::test_object_raw_get_bucket_gone +s3tests_boto3/functional/test_s3.py::test_object_raw_get +s3tests_boto3/functional/test_s3.py::test_object_delete_key_bucket_gone +s3tests_boto3/functional/test_s3.py::test_object_raw_get_object_gone +s3tests_boto3/functional/test_s3.py::test_bucket_head_extended +s3tests_boto3/functional/test_s3.py::test_object_raw_get_bucket_acl +s3tests_boto3/functional/test_s3.py::test_object_raw_response_headers +s3tests_boto3/functional/test_s3.py::test_object_raw_authenticated_bucket_acl +s3tests_boto3/functional/test_s3.py::test_object_raw_get_x_amz_expires_out_range_zero +s3tests_boto3/functional/test_s3.py::test_object_raw_get_x_amz_expires_out_positive_range +s3tests_boto3/functional/test_s3.py::test_object_raw_get_x_amz_expires_out_max_range +s3tests_boto3/functional/test_s3.py::test_object_anon_put_write_access +s3tests_boto3/functional/test_s3.py::test_object_raw_put_authenticated_expired +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_bad_short_empty +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_250 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_251 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_252 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_253 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_254 +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_good_long_255 +s3tests_boto3/functional/test_s3.py::test_bucket_list_long_name +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_dns_underscore +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_dns_long +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_dns_dash_at_end +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_dns_dot_dot +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_dns_dot_dash +s3tests_boto3/functional/test_s3.py::test_bucket_create_naming_dns_dash_dot +s3tests_boto3/functional/test_s3.py::test_bucket_acl_default +s3tests_boto3/functional/test_s3.py::test_bucket_acl_canned_during_create +s3tests_boto3/functional/test_s3.py::test_bucket_acl_canned +s3tests_boto3/functional/test_s3.py::test_bucket_acl_canned_publicreadwrite +s3tests_boto3/functional/test_s3.py::test_bucket_acl_canned_authenticatedread +s3tests_boto3/functional/test_s3.py::test_object_acl_default +s3tests_boto3/functional/test_s3.py::test_object_acl_canned_during_create +s3tests_boto3/functional/test_s3.py::test_object_acl_canned_publicreadwrite +s3tests_boto3/functional/test_s3.py::test_object_acl_canned_bucketownerread +s3tests_boto3/functional/test_s3.py::test_object_acl_canned_authenticatedread +s3tests_boto3/functional/test_s3.py::test_object_acl_canned_bucketownerfullcontrol +s3tests_boto3/functional/test_s3.py::test_object_acl_full_control_verify_owner +s3tests_boto3/functional/test_s3.py::test_object_acl_full_control_verify_attributes +s3tests_boto3/functional/test_s3.py::test_object_acl +s3tests_boto3/functional/test_s3.py::test_object_acl_write +s3tests_boto3/functional/test_s3.py::test_object_acl_writeacp +s3tests_boto3/functional/test_s3.py::test_object_acl_read +s3tests_boto3/functional/test_s3.py::test_object_acl_readacp +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_userid_fullcontrol +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_userid_read +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_userid_readacp +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_userid_write +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_userid_writeacp +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_nonexist_user +s3tests_boto3/functional/test_s3.py::test_bucket_acl_no_grants +s3tests_boto3/functional/test_s3.py::test_bucket_header_acl_grants +s3tests_boto3/functional/test_s3.py::test_object_header_acl_grants +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_email +s3tests_boto3/functional/test_s3.py::test_bucket_acl_grant_email_not_exist +s3tests_boto3/functional/test_s3.py::test_bucket_acl_revoke_all +s3tests_boto3/functional/test_s3.py::test_logging_toggle +s3tests_boto3/functional/test_s3.py::test_access_bucket_private_object_private +s3tests_boto3/functional/test_s3.py::test_access_bucket_private_objectv2_private +s3tests_boto3/functional/test_s3.py::test_access_bucket_private_object_publicread +s3tests_boto3/functional/test_s3.py::test_object_acl_canned +s3tests_boto3/functional/test_s3.py::test_access_bucket_private_objectv2_publicread +s3tests_boto3/functional/test_s3.py::test_access_bucket_private_object_publicreadwrite +s3tests_boto3/functional/test_s3.py::test_access_bucket_private_objectv2_publicreadwrite +s3tests_boto3/functional/test_s3.py::test_access_bucket_publicread_object_private +s3tests_boto3/functional/test_s3.py::test_access_bucket_publicread_object_publicread +s3tests_boto3/functional/test_s3.py::test_access_bucket_publicread_object_publicreadwrite +s3tests_boto3/functional/test_s3.py::test_access_bucket_publicreadwrite_object_private +s3tests_boto3/functional/test_s3.py::test_access_bucket_publicreadwrite_object_publicread +s3tests_boto3/functional/test_s3.py::test_list_buckets_anonymous +s3tests_boto3/functional/test_s3.py::test_access_bucket_publicreadwrite_object_publicreadwrite +s3tests_boto3/functional/test_s3.py::test_list_buckets_invalid_auth +s3tests_boto3/functional/test_s3.py::test_list_buckets_bad_auth +s3tests_boto3/functional/test_s3.py::test_bucket_recreate_not_overriding +s3tests_boto3/functional/test_s3.py::test_object_copy_to_itself +s3tests_boto3/functional/test_s3.py::test_object_copy_not_owned_bucket +s3tests_boto3/functional/test_s3.py::test_object_copy_not_owned_object_bucket +s3tests_boto3/functional/test_s3.py::test_multipart_copy_invalid_range +s3tests_boto3/functional/test_s3.py::test_multipart_upload +s3tests_boto3/functional/test_s3.py::test_multipart_upload_size_too_small +s3tests_boto3/functional/test_s3.py::test_abort_multipart_upload +s3tests_boto3/functional/test_s3.py::test_multipart_copy_improper_range +s3tests_boto3/functional/test_s3.py::test_100_continue +s3tests_boto3/functional/test_s3.py::test_set_cors +s3tests_boto3/functional/test_s3.py::test_cors_origin_wildcard +s3tests_boto3/functional/test_s3.py::test_cors_origin_response +s3tests_boto3/functional/test_s3.py::test_cors_header_option +s3tests_boto3/functional/test_s3.py::test_set_tagging +s3tests_boto3/functional/test_s3.py::test_multipart_resend_first_finishes_last +s3tests_boto3/functional/test_s3.py::test_versioned_object_acl +s3tests_boto3/functional/test_s3.py::test_versioned_object_acl_no_version_specified +s3tests_boto3/functional/test_s3.py::test_lifecycle_get +s3tests_boto3/functional/test_s3.py::test_lifecycle_id_too_long +s3tests_boto3/functional/test_s3.py::test_lifecycle_same_id +s3tests_boto3/functional/test_s3.py::test_lifecycle_invalid_status +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_invalid_date +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_date +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_days0 +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_noncurrent +s3tests_boto3/functional/test_s3.py::test_lifecycle_noncur_expiration +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_deletemarker +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_filter +s3tests_boto3/functional/test_s3.py::test_lifecycle_deletemarker_expiration +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_empty_filter +s3tests_boto3/functional/test_s3.py::test_lifecyclev2_expiration +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_multipart +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_multipart_upload +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_post_object_authenticated_request +s3tests_boto3/functional/test_s3.py::test_lifecycle_multipart_expiration +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_multipart_bad_download +s3tests_boto3/functional/test_s3.py::test_sse_kms_multipart_upload +s3tests_boto3/functional/test_s3.py::test_sse_kms_post_object_authenticated_request +s3tests_boto3/functional/test_s3.py::test_bucket_policy_acl +s3tests_boto3/functional/test_s3.py::test_bucketv2_policy_acl +s3tests_boto3/functional/test_s3.py::test_bucket_policy_different_tenant +s3tests_boto3/functional/test_s3.py::test_encryption_sse_c_multipart_invalid_chunks_1 +s3tests_boto3/functional/test_s3.py::test_bucketv2_policy_different_tenant +s3tests_boto3/functional/test_s3.py::test_bucket_policy_set_condition_operator_end_with_IfExists +s3tests_boto3/functional/test_s3.py::test_post_object_tags_anonymous_request +s3tests_boto3/functional/test_s3.py::test_post_object_tags_authenticated_request +s3tests_boto3/functional/test_s3.py::test_put_obj_with_tags +s3tests_boto3/functional/test_s3.py::test_get_tags_acl_public +s3tests_boto3/functional/test_s3.py::test_delete_tags_obj_public +s3tests_boto3/functional/test_s3.py::test_put_tags_acl_public +s3tests_boto3/functional/test_s3.py::test_bucket_policy_get_obj_tagging_existing_tag +s3tests_boto3/functional/test_s3.py::test_bucket_policy_get_obj_existing_tag +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_tagging_existing_tag +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_copy_source +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_copy_source_meta +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_acl +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_enc +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_grant +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_request_obj_tag +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_bucket +s3tests_boto3/functional/test_s3.py::test_bucket_policy_get_obj_acl_existing_tag +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_with_days_and_years +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_days +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_years +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_status +s3tests_boto3/functional/test_s3.py::test_object_lock_suspend_versioning +s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_lock +s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_lock_invalid_bucket +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_invalid_bucket +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_invalid_mode +s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_retention +s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_retention_invalid_bucket +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_versionid +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_override_default_retention +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_increase_period +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_shorten_period +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_retention_shorten_period_bypass +s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_retention +s3tests_boto3/functional/test_s3.py::test_object_lock_put_legal_hold_invalid_bucket +s3tests_boto3/functional/test_s3.py::test_object_lock_put_legal_hold_invalid_status +s3tests_boto3/functional/test_s3.py::test_object_lock_get_legal_hold_invalid_bucket +s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_legal_hold_on +s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_legal_hold_off +s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_metadata +s3tests_boto3/functional/test_s3.py::test_object_lock_uploading_obj +s3tests_boto3/fuzz/test/test_fuzzer/test_load_graph +test_realistic/TestFileValidator.py::test_new_file_is_valid +test_realistic/TestFileValidator.py::test_new_file_is_valid_on_several_calls +test_realistic/TestFileValidator.py::test_new_file_is_valid_when_size_is_1 +test_realistic/TestFiles/test_random_file_valid +s3tests/functional/test_headers.py::test_object_create_bad_contentlength_mismatch_above +s3tests_boto3/functional/test_iam.py::test_put_user_policy +s3tests_boto3/functional/test_iam.py::test_put_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_put_user_policy_parameter_limit +s3tests_boto3/functional/test_iam.py::test_put_user_policy_invalid_element +s3tests_boto3/functional/test_iam.py::test_put_existing_user_policy +s3tests_boto3/functional/test_iam.py::test_list_user_policy +s3tests_boto3/functional/test_iam.py::test_list_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_get_user_policy +s3tests_boto3/functional/test_iam.py::test_get_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_get_user_policy_invalid_policy_name +s3tests_boto3/functional/test_iam.py::test_get_deleted_user_policy +s3tests_boto3/functional/test_iam.py::test_get_user_policy_from_multiple_policies +s3tests_boto3/functional/test_iam.py::test_delete_user_policy +s3tests_boto3/functional/test_iam.py::test_delete_user_policy_invalid_user +s3tests_boto3/functional/test_iam.py::test_delete_user_policy_invalid_policy_name +s3tests_boto3/functional/test_iam.py::test_delete_user_policy_from_multiple_policies +s3tests_boto3/functional/test_iam.py::test_allow_bucket_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_bucket_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_allow_object_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_object_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_allow_multipart_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_multipart_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_allow_tagging_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_deny_tagging_actions_in_user_policy +s3tests_boto3/functional/test_iam.py::test_verify_conflicting_user_policy_statements +s3tests_boto3/functional/test_iam.py::test_verify_conflicting_user_policies +s3tests_boto3/functional/test_iam.py::test_verify_allow_iam_actions +s3tests_boto3/functional/test_sts.py::test_get_session_token +s3tests_boto3/functional/test_sts.py::test_get_session_token_permanent_creds_denied +s3tests_boto3/functional/test_sts.py::test_assume_role_allow +s3tests_boto3/functional/test_sts.py::test_assume_role_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_creds_expiry +s3tests_boto3/functional/test_sts.py::test_assume_role_deny_head_nonexistent +s3tests_boto3/functional/test_sts.py::test_assume_role_allow_head_nonexistent +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity +s3tests_boto3/functional/test_sts.py::test_session_policy_check_on_different_buckets +s3tests_boto3/functional/test_sts.py::test_session_policy_check_on_same_bucket +s3tests_boto3/functional/test_sts.py::test_session_policy_check_put_obj_denial +s3tests_boto3/functional/test_sts.py::test_swapping_role_policy_and_session_policy +s3tests_boto3/functional/test_sts.py::test_session_policy_check_different_op_permissions +s3tests_boto3/functional/test_sts.py::test_session_policy_check_with_deny_effect +s3tests_boto3/functional/test_sts.py::test_session_policy_check_with_deny_on_same_op +s3tests_boto3/functional/test_sts.py::test_session_policy_bucket_policy_role_arn +s3tests_boto3/functional/test_sts.py::test_session_policy_bucket_policy_session_arn +s3tests_boto3/functional/test_sts.py::test_session_policy_copy_object +s3tests_boto3/functional/test_sts.py::test_session_policy_no_bucket_role_policy +s3tests_boto3/functional/test_sts.py::test_session_policy_bucket_policy_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_sub +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_azp +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_request_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_with_principal_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_for_all_values +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_for_all_values_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_tag_keys_trust_policy +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_tag_keys_role_policy +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_wrong_resource_tag_deny +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag_princ_tag +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_resource_tag_copy_obj +s3tests_boto3/functional/test_sts.py::test_assume_role_with_web_identity_role_resource_tag \ No newline at end of file diff --git a/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_pending_list.txt b/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_pending_list.txt index c4dfcfa015..eb5305c681 100644 --- a/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_pending_list.txt +++ b/src/test/system_tests/ceph_s3_tests/s3-tests-lists/s3_tests_pending_list.txt @@ -1,72 +1,116 @@ -s3tests_boto3.functional.test_s3.test_get_bucket_policy_status -s3tests.functional.test_s3.test_atomic_dual_conditional_write_1mb -s3tests_boto3.functional.test_s3.test_bucket_listv2_encoding_basic -s3tests_boto3.functional.test_s3.test_bucket_list_encoding_basic -s3tests_boto3.functional.test_s3.test_bucket_list_delimiter_none -s3tests_boto3.functional.test_s3.test_bucket_listv2_delimiter_none -s3tests_boto3.functional.test_s3.test_bucket_list_delimiter_not_skip_special -s3tests_boto3.functional.test_s3.test_bucket_list_prefix_basic -s3tests_boto3.functional.test_s3.test_bucket_list_prefix_delimiter_basic -s3tests_boto3.functional.test_s3.test_account_usage -s3tests_boto3.functional.test_s3.test_head_bucket_usage -s3tests_boto3.functional.test_s3.test_post_object_invalid_signature -s3tests_boto3.functional.test_s3.test_post_object_invalid_access_key -s3tests_boto3.functional.test_s3.test_post_object_missing_policy_condition -s3tests_boto3.functional.test_s3.test_post_object_request_missing_policy_specified_field -s3tests_boto3.functional.test_s3.test_post_object_expired_policy -s3tests_boto3.functional.test_s3.test_post_object_invalid_request_field_value -s3tests_boto3.functional.test_s3.test_lifecycle_get_no_id -s3tests_boto3.functional.test_s3.test_object_lock_put_obj_lock_invalid_mode -s3tests_boto3.functional.test_s3.test_object_lock_get_obj_retention_iso8601 -s3tests_boto3.functional.test_s3.test_object_lock_delete_object_with_retention_and_marker -s3tests_boto3.functional.test_s3.test_multipart_upload_on_a_bucket_with_policy -s3tests_boto3.functional.test_s3.test_multipart_upload_small -s3tests_boto3.functional.test_s3.test_post_object_authenticated_request_bad_access_key -s3tests_boto3.functional.test_s3.test_bucket_create_exists -s3tests_boto3.functional.test_s3.test_bucket_create_exists_nonowner -s3tests_boto3.functional.test_s3.test_bucket_recreate_overwrite_acl -s3tests_boto3.functional.test_s3.test_bucket_recreate_new_acl -s3tests_boto3.functional.test_s3.test_list_multipart_upload_owner -s3tests_boto3.functional.test_s3.test_lifecycle_set -s3tests_boto3.functional.test_s3.test_lifecycle_expiration -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_versioning_enabled -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_tags2 -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_versioned_tags2 -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_noncur_tags1 -s3tests_boto3.functional.test_s3.test_lifecycle_set_date -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_header_put -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_header_head -s3tests_boto3.functional.test_s3.test_lifecycle_expiration_header_tags_head -s3tests_boto3.functional.test_s3.test_lifecycle_transition_set_invalid_date -s3tests_boto3.functional.test_s3.test_put_obj_enc_conflict_c_s3 -s3tests_boto3.functional.test_s3.test_put_obj_enc_conflict_c_kms -s3tests_boto3.functional.test_s3.test_put_obj_enc_conflict_s3_kms -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_s3_noenc -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_s3_kms -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_kms_noenc -s3tests_boto3.functional.test_s3.test_bucket_policy_put_obj_kms_s3 -s3tests_boto3.functional.test_s3.test_object_lock_multi_delete_object_with_retention -s3tests_boto3.functional.test_s3.test_object_lock_put_legal_hold -s3tests_boto3.functional.test_s3.test_object_lock_get_legal_hold -s3tests_boto3.functional.test_s3.test_object_lock_changing_mode_from_governance_with_bypass -s3tests_boto3.functional.test_s3.test_object_lock_changing_mode_from_governance_without_bypass -s3tests_boto3.functional.test_s3.test_object_lock_changing_mode_from_compliance -s3tests_boto3.functional.test_s3.test_object_read_unreadable -s3tests_boto3.functional.test_s3.test_user_policy -s3tests_boto3.functional.test_s3.test_get_public_acl_bucket_policy_status -s3tests_boto3.functional.test_s3.test_get_authpublic_acl_bucket_policy_status -s3tests_boto3.functional.test_s3.test_get_publicpolicy_acl_bucket_policy_status -s3tests_boto3.functional.test_s3.test_get_nonpublicpolicy_acl_bucket_policy_status -s3tests_boto3.functional.test_s3.test_get_nonpublicpolicy_deny_bucket_policy_status -s3tests_boto3.functional.test_s3.test_get_default_public_block -s3tests_boto3.functional.test_s3.test_put_public_block -s3tests_boto3.functional.test_s3.test_block_public_put_bucket_acls -s3tests_boto3.functional.test_s3.test_block_public_object_canned_acls -s3tests_boto3.functional.test_s3.test_block_public_policy -s3tests_boto3.functional.test_s3.test_ignore_public_acls -s3tests_boto3.functional.test_s3.test_sse_s3_default_post_object_authenticated_request -s3tests_boto3.functional.test_s3.test_sse_kms_default_post_object_authenticated_request -s3tests_boto3.functional.test_s3select.test_generate_projection -s3tests_boto3.functional.test_s3select.test_alias_cyclic_refernce -s3tests_boto3.functional.test_s3select.test_schema_definition -s3tests_boto3.functional.test_s3select.test_progress_expressions +s3tests_boto3/functional/test_s3.py::test_get_bucket_policy_status +s3tests/functional/test_s3.py::test_atomic_dual_conditional_write_1mb +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_encoding_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_encoding_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_none +s3tests_boto3/functional/test_s3.py::test_bucket_listv2_delimiter_none +s3tests_boto3/functional/test_s3.py::test_bucket_list_delimiter_not_skip_special +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_basic +s3tests_boto3/functional/test_s3.py::test_bucket_list_prefix_delimiter_basic +s3tests_boto3/functional/test_s3.py::test_account_usage +s3tests_boto3/functional/test_s3.py::test_head_bucket_usage +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_signature +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_access_key +s3tests_boto3/functional/test_s3.py::test_post_object_missing_policy_condition +s3tests_boto3/functional/test_s3.py::test_post_object_request_missing_policy_specified_field +s3tests_boto3/functional/test_s3.py::test_post_object_expired_policy +s3tests_boto3/functional/test_s3.py::test_post_object_invalid_request_field_value +s3tests_boto3/functional/test_s3.py::test_lifecycle_get_no_id +s3tests_boto3/functional/test_s3.py::test_object_lock_put_obj_lock_invalid_mode +s3tests_boto3/functional/test_s3.py::test_object_lock_get_obj_retention_iso8601 +s3tests_boto3/functional/test_s3.py::test_object_lock_delete_object_with_retention_and_marker +s3tests_boto3/functional/test_s3.py::test_multipart_upload_on_a_bucket_with_policy +s3tests_boto3/functional/test_s3.py::test_multipart_upload_small +s3tests_boto3/functional/test_s3.py::test_post_object_authenticated_request_bad_access_key +s3tests_boto3/functional/test_s3.py::test_bucket_create_exists +s3tests_boto3/functional/test_s3.py::test_bucket_create_exists_nonowner +s3tests_boto3/functional/test_s3.py::test_bucket_recreate_overwrite_acl +s3tests_boto3/functional/test_s3.py::test_bucket_recreate_new_acl +s3tests_boto3/functional/test_s3.py::test_list_multipart_upload_owner +s3tests_boto3/functional/test_s3.py::test_lifecycle_set +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_versioning_enabled +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_tags2 +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_versioned_tags2 +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_noncur_tags1 +s3tests_boto3/functional/test_s3.py::test_lifecycle_set_date +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_header_put +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_header_head +s3tests_boto3/functional/test_s3.py::test_lifecycle_expiration_header_tags_head +s3tests_boto3/functional/test_s3.py::test_lifecycle_transition_set_invalid_date +s3tests_boto3/functional/test_s3.py::test_put_obj_enc_conflict_c_s3 +s3tests_boto3/functional/test_s3.py::test_put_obj_enc_conflict_c_kms +s3tests_boto3/functional/test_s3.py::test_put_obj_enc_conflict_s3_kms +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_s3_noenc +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_s3_kms +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_kms_noenc +s3tests_boto3/functional/test_s3.py::test_bucket_policy_put_obj_kms_s3 +s3tests_boto3/functional/test_s3.py::test_object_lock_multi_delete_object_with_retention +s3tests_boto3/functional/test_s3.py::test_object_lock_put_legal_hold +s3tests_boto3/functional/test_s3.py::test_object_lock_get_legal_hold +s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_governance_with_bypass +s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_governance_without_bypass +s3tests_boto3/functional/test_s3.py::test_object_lock_changing_mode_from_compliance +s3tests_boto3/functional/test_s3.py::test_object_read_unreadable +s3tests_boto3/functional/test_s3.py::test_user_policy +s3tests_boto3/functional/test_s3.py::test_get_public_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_authpublic_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_publicpolicy_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_nonpublicpolicy_acl_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_nonpublicpolicy_deny_bucket_policy_status +s3tests_boto3/functional/test_s3.py::test_get_default_public_block +s3tests_boto3/functional/test_s3.py::test_put_public_block +s3tests_boto3/functional/test_s3.py::test_block_public_put_bucket_acls +s3tests_boto3/functional/test_s3.py::test_block_public_object_canned_acls +s3tests_boto3/functional/test_s3.py::test_block_public_policy +s3tests_boto3/functional/test_s3.py::test_ignore_public_acls +s3tests_boto3/functional/test_s3.py::test_sse_s3_default_post_object_authenticated_request +s3tests_boto3/functional/test_s3.py::test_sse_kms_default_post_object_authenticated_request +s3tests_boto3/functional/test_s3select.py::test_generate_projection +s3tests_boto3/functional/test_s3select.py::test_alias_cyclic_refernce +s3tests_boto3/functional/test_s3select.py::test_schema_definition +s3tests_boto3/functional/test_s3select.py::test_progress_expressions +s3tests_boto3/functional/test_s3.py::test_object_write_with_chunked_transfer_encoding +s3tests_boto3/functional/test_s3.py::test_versioning_concurrent_multi_object_delete +s3tests_boto3/functional/test_s3.py::test_post_object_upload_size_rgw_chunk_size_bug +s3tests_boto3/functional/test_s3.py::test_get_object_torrent +s3tests_boto3/functional/test_s3select.py::test_count_json_operation +s3tests_boto3/functional/test_s3select.py::test_column_sum_min_max +s3tests_boto3/functional/test_s3.py::test_multipart_upload_resend_part +s3tests/functional/test_headers.py::test_object_create_bad_md5_invalid_garbage_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_contentlength_mismatch_below_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_authorization_incorrect_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_authorization_invalid_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_ua_empty_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_ua_none_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_invalid_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_invalid_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_empty_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_empty_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_none_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_none_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_before_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_before_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_after_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_after_today_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_before_epoch_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_before_epoch_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_date_after_end_aws4 +s3tests/functional/test_headers.py::test_object_create_bad_amz_date_after_end_aws4 +s3tests/functional/test_headers.py::test_object_create_missing_signed_custom_header_aws4 +s3tests/functional/test_headers.py::test_object_create_missing_signed_header_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_authorization_invalid_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_ua_empty_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_ua_none_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_invalid_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_invalid_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_empty_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_empty_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_none_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_none_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_before_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_before_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_after_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_after_today_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_date_before_epoch_aws4 +s3tests/functional/test_headers.py::test_bucket_create_bad_amz_date_before_epoch_aws4 diff --git a/src/test/system_tests/ceph_s3_tests/test_ceph_s3.js b/src/test/system_tests/ceph_s3_tests/test_ceph_s3.js index fa4189e38a..ffe434385c 100644 --- a/src/test/system_tests/ceph_s3_tests/test_ceph_s3.js +++ b/src/test/system_tests/ceph_s3_tests/test_ceph_s3.js @@ -15,7 +15,7 @@ const dbg = require('../../../util/debug_module')(__filename); dbg.set_process_name('test_ceph_s3'); const argv = require('minimist')(process.argv.slice(2)); delete argv._; -const { S3_CEPH_TEST_STEMS, S3_CEPH_TEST_SIGV4, CEPH_TEST, DEFAULT_NUMBER_OF_WORKERS } = require('./test_ceph_s3_constants.js'); +const { CEPH_TEST, DEFAULT_NUMBER_OF_WORKERS, TOX_ARGS, AWS4_TEST_SUFFIX } = require('./test_ceph_s3_constants.js'); const testing_status = { pass: [], @@ -29,7 +29,6 @@ let tests_list; const OUT_OF_SCOPE_TESTS = create_out_of_scope_tests_list() || []; //Regexp match will be tested per each entry const S3_CEPH_TEST_OUT_OF_SCOPE_REGEXP = new RegExp(`(${OUT_OF_SCOPE_TESTS.join('\\b)|(')}\\b)`); -const S3_CEPH_TEST_STEMS_REGEXP = new RegExp(`(${S3_CEPH_TEST_STEMS.join(')|(')})`); async function main() { if (argv.help) usage(); @@ -66,7 +65,7 @@ async function run_s3_tests() { console.info(`CEPH TEST SUMMARY: Suite contains ${testing_status.total}, ran ${testing_status.pass.length + testing_status.fail.length + testing_status.skip.length} tests, Passed: ${testing_status.pass.length}, Skipped: ${testing_status.skip.length}, Failed: ${testing_status.fail.length}`); if (testing_status.skip.length) { - console.warn(`CEPH TEST SUMMARY: ${testing_status.skip.length} skipped tests ${testing_status.skip.join('\n')}`); + console.warn(`CEPH TEST SKIPPED TESTS SUMMARY: ${testing_status.skip.length} skipped tests \n${testing_status.skip.join('\n')}`); } if (testing_status.fail.length) { console.error(`CEPH TEST FAILED TESTS SUMMARY: ${testing_status.fail.length} failed tests \n${testing_status.fail.join('\n')}`); @@ -77,7 +76,7 @@ async function run_s3_tests() { async function run_all_tests() { console.info('Running Ceph S3 Tests...'); const tests_list_command = - `S3TEST_CONF=${CEPH_TEST.test_dir}${CEPH_TEST.ceph_config} ./${CEPH_TEST.test_dir}${CEPH_TEST.s3_test_dir}virtualenv/bin/nosetests -v --collect-only 2>&1 | awk '{print $1}' | grep test`; + `S3TEST_CONF=${process.cwd()}/${CEPH_TEST.test_dir}${CEPH_TEST.ceph_config} tox ${TOX_ARGS} -- -q --collect-only --disable-pytest-warnings 2>&1 | awk '{print $1}' | grep test`; try { tests_list = await os_utils.exec(tests_list_command, { ignore_rc: false, return_stdout: true }); } catch (err) { @@ -101,19 +100,16 @@ async function test_worker() { } async function run_single_test(test) { - let ceph_args = `S3TEST_CONF=${CEPH_TEST.test_dir}${CEPH_TEST.ceph_config}`; - if (S3_CEPH_TEST_SIGV4.includes(test)) { + let ceph_args = `S3TEST_CONF=${process.cwd()}/${CEPH_TEST.test_dir}${CEPH_TEST.ceph_config}`; + if (test.endsWith(AWS4_TEST_SUFFIX)) { ceph_args += ` S3_USE_SIGV4=true`; } - let base_cmd = `${ceph_args} ./${CEPH_TEST.test_dir}${CEPH_TEST.s3_test_dir}virtualenv/bin/nosetests`; + const base_cmd = `${ceph_args} tox ${TOX_ARGS}`; if (!S3_CEPH_TEST_OUT_OF_SCOPE_REGEXP.test(test)) { try { - const test_name = test.replace(S3_CEPH_TEST_STEMS_REGEXP, pref => `${pref.slice(0, -1)}:`); //Match against the common test path - if (test_name.includes('boto')) { - base_cmd = `${ceph_args} ./${CEPH_TEST.test_dir}${CEPH_TEST.s3_test_dir}virtualenv/bin/nosetests -v -s -A 'not fails_on_rgw'`; - } - const res = await os_utils.exec(`${base_cmd} ${test_name}`, { ignore_rc: false, return_stdout: true }); - if (res.indexOf('SKIP') >= 0) { + const full_test_command = `${base_cmd} ${process.cwd()}/${CEPH_TEST.test_dir}${CEPH_TEST.s3_test_dir}${test}`; + const res = await os_utils.exec(full_test_command, { ignore_rc: false, return_stdout: true }); + if (res.includes('skipped')) { console.warn('Test skipped:', test); testing_status.skip.push(test); } else { @@ -121,8 +117,15 @@ async function run_single_test(test) { testing_status.pass.push(test); } } catch (err) { - console.error('Test Failed:', test); - testing_status.fail.push(test); + // tox will exit with code 1 on error regardless of pytest exit code. pytest exit code 5 means no tests ran. + // can happen when 'not fails_on_rgw' flag is on for some tests (there are no boto3 tests for the test) + if (err.stdout.includes("exited with code 5")) { + console.warn('Test skipped:', test); + testing_status.skip.push(test); + } else { + console.error('Test Failed:', test); + testing_status.fail.push(test); + } } } } diff --git a/src/test/system_tests/ceph_s3_tests/test_ceph_s3_constants.js b/src/test/system_tests/ceph_s3_tests/test_ceph_s3_constants.js index 08f3ae2c1d..f2c0557e5f 100644 --- a/src/test/system_tests/ceph_s3_tests/test_ceph_s3_constants.js +++ b/src/test/system_tests/ceph_s3_tests/test_ceph_s3_constants.js @@ -1,82 +1,11 @@ /* Copyright (C) 2022 NooBaa */ "use strict"; -const S3_CEPH_TEST_STEMS = [ - 's3tests.functional.test_headers.', - 's3tests.functional.test_s3.', - 's3tests.fuzz.test.test_fuzzer.', - 's3tests.functional.test_s3_website.', - 's3tests.tests.test_realistic.', - 's3tests_boto3.functional.test_headers.', - 's3tests_boto3.functional.test_s3select.', - 's3tests_boto3.functional.test_s3.', - 's3tests_boto3.fuzz.test.test_fuzzer.', - 's3tests_boto3.functional.test_s3_website.', - 's3tests_boto3.tests.test_realistic.', -]; - -const S3_CEPH_TEST_SIGV4 = [ - 'check_can_test_multiregion', - 'test_bucket_create_bad_amz_date_after_today_aws4', - 'test_bucket_create_bad_amz_date_before_epoch_aws4', - 'test_bucket_create_bad_amz_date_before_today_aws4', - 'test_bucket_create_bad_amz_date_empty_aws4', - 'test_bucket_create_bad_amz_date_invalid_aws4', - 'test_bucket_create_bad_amz_date_none_aws4', - 'test_bucket_create_bad_amz_date_unreadable_aws4', - 'test_bucket_create_bad_authorization_invalid_aws4', - 'test_bucket_create_bad_date_after_today_aws4', - 'test_bucket_create_bad_date_before_epoch_aws4', - 'test_bucket_create_bad_date_before_today_aws4', - 'test_bucket_create_bad_date_empty_aws4', - 'test_bucket_create_bad_date_invalid_aws4', - 'test_bucket_create_bad_date_none_aws4', - 'test_bucket_create_bad_date_unreadable_aws4', - 'test_bucket_create_bad_ua_empty_aws4', - 'test_bucket_create_bad_ua_none_aws4', - 'test_bucket_create_bad_ua_unreadable_aws4', - 'test_object_create_bad_amz_date_after_end_aws4', - 'test_object_create_bad_amz_date_after_today_aws4', - 'test_object_create_bad_amz_date_before_epoch_aws4', - 'test_object_create_bad_amz_date_before_today_aws4', - 'test_object_create_bad_amz_date_empty_aws4', - 'test_object_create_bad_amz_date_invalid_aws4', - 'test_object_create_bad_amz_date_none_aws4', - 'test_object_create_bad_amz_date_unreadable_aws4', - 'test_object_create_bad_authorization_incorrect_aws4', - 'test_object_create_bad_authorization_invalid_aws4', - 'test_object_create_bad_contentlength_mismatch_below_aws4', - 'test_object_create_bad_date_after_end_aws4', - 'test_object_create_bad_date_after_today_aws4', - 'test_object_create_bad_date_before_epoch_aws4', - 'test_object_create_bad_date_before_today_aws4', - 'test_object_create_bad_date_empty_aws4', - 'test_object_create_bad_date_invalid_aws4', - 'test_object_create_bad_date_none_aws4', - 'test_object_create_bad_date_unreadable_aws4', - 'test_object_create_bad_md5_invalid_garbage_aws4', - 'test_object_create_bad_ua_empty_aws4', - 'test_object_create_bad_ua_none_aws4', - 'test_object_create_bad_ua_unreadable_aws4', - 'test_object_create_missing_signed_custom_header_aws4', - 'test_object_create_missing_signed_header_aws4', - 'test_object_raw_get_x_amz_expires_not_expired', - 'test_object_raw_get_x_amz_expires_out_max_range', - 'test_object_raw_get_x_amz_expires_out_positive_range', - 'test_object_raw_get_x_amz_expires_out_range_zero', - 'test_region_bucket_create_master_access_remove_secondary', - 'test_region_bucket_create_secondary_access_remove_master', - 'test_region_copy_object', - 'test_sse_kms_barb_transfer_13b', - 'test_sse_kms_barb_transfer_1b', - 'test_sse_kms_barb_transfer_1kb', - 'test_sse_kms_barb_transfer_1MB' -]; - const CEPH_TEST = { test_dir: 'src/test/system_tests/ceph_s3_tests/', s3_test_dir: 's3-tests/', ceph_config: 'test_ceph_s3_config.conf', + tox_config: 'tox.ini', new_account_params: { name: 'cephalt', email: 'ceph.alt@noobaa.com', @@ -93,8 +22,11 @@ const CEPH_TEST = { const DEFAULT_NUMBER_OF_WORKERS = 5; //5 was the number of workers in the previous CI/CD process +const TOX_ARGS = `-c ${CEPH_TEST.test_dir}${CEPH_TEST.s3_test_dir}${CEPH_TEST.tox_config}`; + +const AWS4_TEST_SUFFIX = '_aws4'; -exports.S3_CEPH_TEST_STEMS = S3_CEPH_TEST_STEMS; -exports.S3_CEPH_TEST_SIGV4 = S3_CEPH_TEST_SIGV4; exports.CEPH_TEST = CEPH_TEST; exports.DEFAULT_NUMBER_OF_WORKERS = DEFAULT_NUMBER_OF_WORKERS; +exports.TOX_ARGS = TOX_ARGS; +exports.AWS4_TEST_SUFFIX = AWS4_TEST_SUFFIX; diff --git a/src/test/system_tests/ceph_s3_tests/test_ceph_s3_deploy.sh b/src/test/system_tests/ceph_s3_tests/test_ceph_s3_deploy.sh index 9df6cdf23a..7b380ae31f 100755 --- a/src/test/system_tests/ceph_s3_tests/test_ceph_s3_deploy.sh +++ b/src/test/system_tests/ceph_s3_tests/test_ceph_s3_deploy.sh @@ -17,7 +17,7 @@ DIRECTORY="s3-tests" CEPH_LINK="https://github.com/ceph/s3-tests.git" # using a fixed version (commit) of ceph tests to avoid sudden changes. # we should retest and update the version once in a while -CEPH_TESTS_VERSION=114397c358c7e6b30e0ff2f5dd54607dad1ae8ce +CEPH_TESTS_VERSION=13e0d736a82f9e9bbc3773022b8c8dbd242f999b if [ ! -d $DIRECTORY ]; then echo "Downloading Ceph S3 Tests..." git clone $CEPH_LINK @@ -30,7 +30,7 @@ if [ ! -d $DIRECTORY ]; then # with a certain pattern like the bucket names get_new_bucket_name() generates. # The following manual fix will be obsolete if and when https://github.com/ceph/s3-tests/pull/488 is merged. echo "Manually Fixing S3select Tests" - sed -i '14 i from . import get_new_bucket_name' ./s3tests_boto3/functional/test_s3select.py + sed -i '16 i from . import get_new_bucket_name' ./s3tests_boto3/functional/test_s3select.py sed -i 's/bucket_name = \"test\"/bucket_name = get_new_bucket_name()/g' ./s3tests_boto3/functional/test_s3select.py fi @@ -38,7 +38,7 @@ commit_epoch=$(git show -s --format=%ci ${CEPH_TESTS_VERSION} | awk '{print $1}' commit_date=$(date -d ${commit_epoch} +%s) current_date=$(date +%s) -max_days="240" +max_days="180" if [ $((current_date-commit_date)) -gt $((3600*24*${max_days})) ] then echo "ceph tests were not updated for ${max_days} days, Exiting"