diff --git a/s3tests/functional/test_headers.py b/s3tests/functional/test_headers.py index ab91025..63f0c56 100644 --- a/s3tests/functional/test_headers.py +++ b/s3tests/functional/test_headers.py @@ -182,6 +182,7 @@ def tag(*tags): @attr(method='put') @attr(operation='create w/no content length') @attr(assertion='fails 411') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_contentlength_none(): key = _setup_bad_object(remove=('Content-Length',)) @@ -221,6 +222,7 @@ def test_object_create_bad_contentlength_mismatch_above(): @attr(method='put') @attr(operation='create w/empty authorization') @attr(assertion='fails 403') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_authorization_empty(): key = _setup_bad_object({'Authorization': ''}) @@ -235,6 +237,7 @@ def test_object_create_bad_authorization_empty(): @attr(method='put') @attr(operation='create w/date and x-amz-date') @attr(assertion='succeeds') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_date_and_amz_date(): date = formatdate(usegmt=True) @@ -246,6 +249,7 @@ def test_object_create_date_and_amz_date(): @attr(method='put') @attr(operation='create w/x-amz-date and no date') @attr(assertion='succeeds') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_amz_date_and_no_date(): date = formatdate(usegmt=True) @@ -259,6 +263,7 @@ def test_object_create_amz_date_and_no_date(): @attr(method='put') @attr(operation='create w/no authorization') @attr(assertion='fails 403') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_authorization_none(): key = _setup_bad_object(remove=('Authorization',)) @@ -274,6 +279,7 @@ def test_object_create_bad_authorization_none(): @attr(method='put') @attr(operation='create w/no content length') @attr(assertion='succeeds') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_contentlength_none(): _add_custom_headers(remove=('Content-Length',)) @@ -285,6 +291,7 @@ def test_bucket_create_contentlength_none(): @attr(method='acls') @attr(operation='set w/no content length') @attr(assertion='succeeds') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_acl_create_contentlength_none(): bucket = get_new_bucket() @@ -328,6 +335,7 @@ def test_bucket_create_bad_contentlength_empty(): @attr(method='put') @attr(operation='create w/no content length') @attr(assertion='succeeds') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_contentlength_none(): _add_custom_headers(remove=('Content-Length',)) @@ -339,6 +347,7 @@ def test_bucket_create_bad_contentlength_none(): @attr(method='put') @attr(operation='create w/empty authorization') @attr(assertion='fails 403') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_authorization_empty(): _add_custom_headers({'Authorization': ''}) @@ -354,6 +363,7 @@ def test_bucket_create_bad_authorization_empty(): @attr(method='put') @attr(operation='create w/no authorization') @attr(assertion='fails 403') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_authorization_none(): _add_custom_headers(remove=('Authorization',)) @@ -371,6 +381,7 @@ def test_bucket_create_bad_authorization_none(): @attr(method='put') @attr(operation='create w/content length too short') @attr(assertion='fails 400') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_contentlength_mismatch_below_aws2(): check_aws2_support() @@ -388,6 +399,7 @@ def test_object_create_bad_contentlength_mismatch_below_aws2(): @attr(method='put') @attr(operation='create w/incorrect authorization') @attr(assertion='fails 403') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_authorization_incorrect_aws2(): check_aws2_support() @@ -404,6 +416,7 @@ def test_object_create_bad_authorization_incorrect_aws2(): @attr(method='put') @attr(operation='create w/invalid authorization') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_object_create_bad_authorization_invalid_aws2(): check_aws2_support() key = _setup_bad_object({'Authorization': 'AWS HAHAHA'}) @@ -417,6 +430,7 @@ def test_object_create_bad_authorization_invalid_aws2(): @attr(method='put') @attr(operation='create w/no date') @attr(assertion='fails 403') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_object_create_bad_date_none_aws2(): check_aws2_support() @@ -446,6 +460,7 @@ def test_bucket_create_bad_authorization_invalid_aws2(): @attr(method='put') @attr(operation='create w/no date') @attr(assertion='fails 403') +@attr('fails_on_dbstore') @nose.with_setup(teardown=_clear_custom_headers) def test_bucket_create_bad_date_none_aws2(): check_aws2_support() diff --git a/s3tests/functional/test_s3.py b/s3tests/functional/test_s3.py index 781ec5d..432d4d9 100644 --- a/s3tests/functional/test_s3.py +++ b/s3tests/functional/test_s3.py @@ -133,6 +133,7 @@ def check_configure_versioning_retry(bucket, status, expected_string): @attr(operation='create versioned object, read not exist null version') @attr(assertion='read null version behaves correctly') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_read_not_exist_null(): bucket = get_new_bucket() check_versioning(bucket, None) @@ -155,6 +156,7 @@ def test_versioning_obj_read_not_exist_null(): @attr('fails_on_aws') @attr('fails_with_subdomain') @attr('appendobject') +@attr('fails_on_dbstore') def test_append_object(): bucket = get_new_bucket() key = bucket.new_key('foo') @@ -179,6 +181,7 @@ def test_append_object(): @attr('fails_on_aws') @attr('fails_with_subdomain') @attr('appendobject') +@attr('fails_on_dbstore') def test_append_normal_object(): bucket = get_new_bucket() key = bucket.new_key('foo') @@ -199,6 +202,7 @@ def test_append_normal_object(): @attr('fails_on_aws') @attr('fails_with_subdomain') @attr('appendobject') +@attr('fails_on_dbstore') def test_append_object_position_wrong(): bucket = get_new_bucket() key = bucket.new_key('foo') @@ -402,6 +406,7 @@ def lc_transitions(transitions=None): @attr(operation='test create object with storage class') @attr('storage_class') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_object_storage_class(): sc = configured_storage_classes() if len(sc) < 2: @@ -420,6 +425,7 @@ def test_object_storage_class(): @attr(operation='test create multipart object with storage class') @attr('storage_class') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_object_storage_class_multipart(): sc = configured_storage_classes() if len(sc) < 2: @@ -461,6 +467,7 @@ def _do_test_object_modify_storage_class(obj_write_func, size): @attr(operation='test changing objects storage class') @attr('storage_class') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_object_modify_storage_class(): _do_test_object_modify_storage_class(_populate_key, size=9*1024*1024) @@ -470,6 +477,7 @@ def test_object_modify_storage_class(): @attr(operation='test changing objects storage class') @attr('storage_class') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_object_modify_storage_class_multipart(): _do_test_object_modify_storage_class(_populate_multipart_key, size=11*1024*1024) @@ -499,6 +507,7 @@ def _do_test_object_storage_class_copy(obj_write_func, size): @attr(operation='test copy object to object with different storage class') @attr('storage_class') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_object_storage_class_copy(): _do_test_object_storage_class_copy(_populate_key, size=9*1024*1024) @@ -507,6 +516,7 @@ def test_object_storage_class_copy(): @attr(operation='test changing objects storage class') @attr('storage_class') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_object_storage_class_copy_multipart(): _do_test_object_storage_class_copy(_populate_multipart_key, size=9*1024*1024) @@ -613,6 +623,7 @@ def _test_atomic_dual_conditional_write(file_size): @attr(operation='write one or the other') @attr(assertion='1MB successful') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_atomic_dual_conditional_write_1mb(): _test_atomic_dual_conditional_write(1024*1024) @@ -621,6 +632,7 @@ def test_atomic_dual_conditional_write_1mb(): @attr(operation='write file in deleted bucket') @attr(assertion='fail 404') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_atomic_write_bucket_gone(): bucket = get_new_bucket() @@ -665,6 +677,7 @@ def _multipart_upload_enc(bucket, s3_key_name, size, part_size=5*1024*1024, @attr(operation='multipart upload with bad key for uploading chunks') @attr(assertion='successful') @attr('encryption') +@attr('fails_on_dbstore') def test_encryption_sse_c_multipart_invalid_chunks_1(): bucket = get_new_bucket() key = "multipart_enc" @@ -692,6 +705,7 @@ def test_encryption_sse_c_multipart_invalid_chunks_1(): @attr(operation='multipart upload with bad md5 for chunks') @attr(assertion='successful') @attr('encryption') +@attr('fails_on_dbstore') def test_encryption_sse_c_multipart_invalid_chunks_2(): bucket = get_new_bucket() key = "multipart_enc" @@ -720,6 +734,7 @@ def test_encryption_sse_c_multipart_invalid_chunks_2(): @attr(assertion='succeeds') @attr('fails_with_subdomain') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_different_tenant(): bucket = get_new_bucket() key = bucket.new_key('asdf') @@ -758,6 +773,7 @@ def test_bucket_policy_different_tenant(): @attr(method='put') @attr(operation='Test put condition operator end with ifExists') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_set_condition_operator_end_with_IfExists(): bucket = _create_keys(keys=['foo']) policy = '''{ @@ -798,6 +814,7 @@ def _make_arn_resource(path="*"): @attr(assertion='success') @attr('encryption') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_put_obj_enc(): bucket = get_new_bucket() @@ -843,6 +860,7 @@ def test_bucket_policy_put_obj_enc(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_put_obj_request_obj_tag(): bucket = get_new_bucket() diff --git a/s3tests/functional/test_s3_website.py b/s3tests/functional/test_s3_website.py index 30593fc..3696004 100644 --- a/s3tests/functional/test_s3_website.py +++ b/s3tests/functional/test_s3_website.py @@ -43,6 +43,7 @@ ERRORDOC_TEMPLATE = '

ErrorDoc

{random}' CAN_WEBSITE = None +@attr('fails_on_dbstore') def check_can_test_website(): global CAN_WEBSITE # This is a bit expensive, so we cache this @@ -265,6 +266,7 @@ def test_website_nonexistant_bucket_s3(): @attr(assertion='non-existant bucket via website endpoint should give NoSuchBucket') @attr('s3website') @attr('fails_on_s3') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_nonexistant_bucket_rgw(): bucket_name = get_new_bucket_name() @@ -278,6 +280,7 @@ def test_website_nonexistant_bucket_rgw(): @attr(operation='list') @attr(assertion='non-empty public buckets via s3website return page for /, where page is public') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) @timed(10) def test_website_public_bucket_list_public_index(): @@ -306,6 +309,7 @@ def test_website_public_bucket_list_public_index(): @attr(operation='list') @attr(assertion='non-empty private buckets via s3website return page for /, where page is private') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_public_index(): bucket = get_new_bucket() @@ -336,6 +340,7 @@ def test_website_private_bucket_list_public_index(): @attr(operation='list') @attr(assertion='empty private buckets via s3website return a 403 for /') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_empty(): bucket = get_new_bucket() @@ -352,6 +357,7 @@ def test_website_private_bucket_list_empty(): @attr(operation='list') @attr(assertion='empty public buckets via s3website return a 404 for /') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty(): bucket = get_new_bucket() @@ -367,6 +373,7 @@ def test_website_public_bucket_list_empty(): @attr(operation='list') @attr(assertion='non-empty public buckets via s3website return page for /, where page is private') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index(): bucket = get_new_bucket() @@ -392,6 +399,7 @@ def test_website_public_bucket_list_private_index(): @attr(operation='list') @attr(assertion='non-empty private buckets via s3website return page for /, where page is private') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index(): bucket = get_new_bucket() @@ -418,6 +426,7 @@ def test_website_private_bucket_list_private_index(): @attr(operation='list') @attr(assertion='empty private buckets via s3website return a 403 for /, missing errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_empty_missingerrordoc(): bucket = get_new_bucket() @@ -434,6 +443,7 @@ def test_website_private_bucket_list_empty_missingerrordoc(): @attr(operation='list') @attr(assertion='empty public buckets via s3website return a 404 for /, missing errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty_missingerrordoc(): bucket = get_new_bucket() @@ -449,6 +459,7 @@ def test_website_public_bucket_list_empty_missingerrordoc(): @attr(operation='list') @attr(assertion='non-empty public buckets via s3website return page for /, where page is private, missing errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index_missingerrordoc(): bucket = get_new_bucket() @@ -473,6 +484,7 @@ def test_website_public_bucket_list_private_index_missingerrordoc(): @attr(operation='list') @attr(assertion='non-empty private buckets via s3website return page for /, where page is private, missing errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index_missingerrordoc(): bucket = get_new_bucket() @@ -498,6 +510,7 @@ def test_website_private_bucket_list_private_index_missingerrordoc(): @attr(operation='list') @attr(assertion='empty private buckets via s3website return a 403 for /, blocked errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_empty_blockederrordoc(): bucket = get_new_bucket() @@ -526,6 +539,7 @@ def test_website_private_bucket_list_empty_blockederrordoc(): @attr(operation='list') @attr(assertion='check if there is an invalid payload after serving error doc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_pubilc_errordoc(): bucket = get_new_bucket() @@ -577,6 +591,7 @@ def test_website_public_bucket_list_pubilc_errordoc(): @attr(operation='list') @attr(assertion='empty public buckets via s3website return a 404 for /, blocked errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty_blockederrordoc(): bucket = get_new_bucket() @@ -604,6 +619,7 @@ def test_website_public_bucket_list_empty_blockederrordoc(): @attr(operation='list') @attr(assertion='non-empty public buckets via s3website return page for /, where page is private, blocked errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index_blockederrordoc(): bucket = get_new_bucket() @@ -637,6 +653,7 @@ def test_website_public_bucket_list_private_index_blockederrordoc(): @attr(operation='list') @attr(assertion='non-empty private buckets via s3website return page for /, where page is private, blocked errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index_blockederrordoc(): bucket = get_new_bucket() @@ -672,6 +689,7 @@ def test_website_private_bucket_list_private_index_blockederrordoc(): @attr(assertion='empty private buckets via s3website return a 403 for /, good errordoc') @attr('s3website') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) +@attr('fails_on_dbstore') def test_website_private_bucket_list_empty_gooderrordoc(): bucket = get_new_bucket() f = _test_website_prep(bucket, WEBSITE_CONFIGS_XMLFRAG['IndexDocErrorDoc']) @@ -694,6 +712,7 @@ def test_website_private_bucket_list_empty_gooderrordoc(): @attr(operation='list') @attr(assertion='empty public buckets via s3website return a 404 for /, good errordoc') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_empty_gooderrordoc(): bucket = get_new_bucket() @@ -718,6 +737,7 @@ def test_website_public_bucket_list_empty_gooderrordoc(): @attr(operation='list') @attr(assertion='non-empty public buckets via s3website return page for /, where page is private') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_public_bucket_list_private_index_gooderrordoc(): bucket = get_new_bucket() @@ -747,6 +767,7 @@ def test_website_public_bucket_list_private_index_gooderrordoc(): @attr(operation='list') @attr(assertion='non-empty private buckets via s3website return page for /, where page is private') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_private_bucket_list_private_index_gooderrordoc(): bucket = get_new_bucket() @@ -777,6 +798,7 @@ def test_website_private_bucket_list_private_index_gooderrordoc(): @attr(operation='list') @attr(assertion='RedirectAllRequestsTo without protocol should TODO') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_bucket_private_redirectall_base(): bucket = get_new_bucket() @@ -794,6 +816,7 @@ def test_website_bucket_private_redirectall_base(): @attr(operation='list') @attr(assertion='RedirectAllRequestsTo without protocol should TODO') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_bucket_private_redirectall_path(): bucket = get_new_bucket() @@ -813,6 +836,7 @@ def test_website_bucket_private_redirectall_path(): @attr(operation='list') @attr(assertion='RedirectAllRequestsTo without protocol should TODO') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_bucket_private_redirectall_path_upgrade(): bucket = get_new_bucket() @@ -835,6 +859,7 @@ def test_website_bucket_private_redirectall_path_upgrade(): @attr(assertion='x-amz-website-redirect-location should not fire without websiteconf') @attr('s3website') @attr('x-amz-website-redirect-location') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_nonwebsite(): bucket = get_new_bucket() @@ -867,6 +892,7 @@ def test_website_xredirect_nonwebsite(): @attr(assertion='x-amz-website-redirect-location should fire websiteconf, relative path, public key') @attr('s3website') @attr('x-amz-website-redirect-location') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_public_relative(): bucket = get_new_bucket() @@ -894,6 +920,7 @@ def test_website_xredirect_public_relative(): @attr(assertion='x-amz-website-redirect-location should fire websiteconf, absolute, public key') @attr('s3website') @attr('x-amz-website-redirect-location') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_public_abs(): bucket = get_new_bucket() @@ -921,6 +948,7 @@ def test_website_xredirect_public_abs(): @attr(assertion='x-amz-website-redirect-location should fire websiteconf, relative path, private key') @attr('s3website') @attr('x-amz-website-redirect-location') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_private_relative(): bucket = get_new_bucket() @@ -948,6 +976,7 @@ def test_website_xredirect_private_relative(): @attr(assertion='x-amz-website-redirect-location should fire websiteconf, absolute, private key') @attr('s3website') @attr('x-amz-website-redirect-location') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_website_xredirect_private_abs(): bucket = get_new_bucket() @@ -1211,6 +1240,7 @@ def routing_check(*args, **kwargs): @attr('s3website_RoutingRules') @attr('s3website') +@attr('fails_on_dbstore') @nose.with_setup(setup=check_can_test_website, teardown=common.teardown) def test_routing_generator(): for t in ROUTING_RULES_TESTS: diff --git a/s3tests_boto3/functional/test_headers.py b/s3tests_boto3/functional/test_headers.py index 6deeb10..47df776 100644 --- a/s3tests_boto3/functional/test_headers.py +++ b/s3tests_boto3/functional/test_headers.py @@ -520,6 +520,7 @@ def test_bucket_create_bad_authorization_none(): @attr(method='put') @attr(operation='create w/invalid MD5') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_object_create_bad_md5_invalid_garbage_aws2(): v2_client = get_v2_client() headers = {'Content-MD5': 'AWS HAHAHA'} @@ -580,6 +581,7 @@ def test_object_create_bad_authorization_invalid_aws2(): @attr(method='put') @attr(operation='create w/empty user agent') @attr(assertion='succeeds') +@attr('fails_on_dbstore') def test_object_create_bad_ua_empty_aws2(): v2_client = get_v2_client() headers = {'User-Agent': ''} @@ -591,6 +593,7 @@ def test_object_create_bad_ua_empty_aws2(): @attr(method='put') @attr(operation='create w/no user agent') @attr(assertion='succeeds') +@attr('fails_on_dbstore') def test_object_create_bad_ua_none_aws2(): v2_client = get_v2_client() remove = 'User-Agent' @@ -602,6 +605,7 @@ def test_object_create_bad_ua_none_aws2(): @attr(method='put') @attr(operation='create w/invalid date') @attr(assertion='fails 403') +@attr('fails_on_dbstore') def test_object_create_bad_date_invalid_aws2(): v2_client = get_v2_client() headers = {'x-amz-date': 'Bad Date'} @@ -615,6 +619,7 @@ def test_object_create_bad_date_invalid_aws2(): @attr(method='put') @attr(operation='create w/empty date') @attr(assertion='fails 403') +@attr('fails_on_dbstore') def test_object_create_bad_date_empty_aws2(): v2_client = get_v2_client() headers = {'x-amz-date': ''} @@ -643,6 +648,7 @@ def test_object_create_bad_date_none_aws2(): @attr(method='put') @attr(operation='create w/date in past') @attr(assertion='fails 403') +@attr('fails_on_dbstore') def test_object_create_bad_date_before_today_aws2(): v2_client = get_v2_client() headers = {'x-amz-date': 'Tue, 07 Jul 2010 21:53:04 GMT'} @@ -656,6 +662,7 @@ def test_object_create_bad_date_before_today_aws2(): @attr(method='put') @attr(operation='create w/date before epoch') @attr(assertion='fails 403') +@attr('fails_on_dbstore') def test_object_create_bad_date_before_epoch_aws2(): v2_client = get_v2_client() headers = {'x-amz-date': 'Tue, 07 Jul 1950 21:53:04 GMT'} @@ -669,6 +676,7 @@ def test_object_create_bad_date_before_epoch_aws2(): @attr(method='put') @attr(operation='create w/date after 9999') @attr(assertion='fails 403') +@attr('fails_on_dbstore') def test_object_create_bad_date_after_end_aws2(): v2_client = get_v2_client() headers = {'x-amz-date': 'Tue, 07 Jul 9999 21:53:04 GMT'} diff --git a/s3tests_boto3/functional/test_s3.py b/s3tests_boto3/functional/test_s3.py index 5e141ec..feec022 100644 --- a/s3tests_boto3/functional/test_s3.py +++ b/s3tests_boto3/functional/test_s3.py @@ -106,6 +106,7 @@ def test_bucket_list_empty(): @attr(method='get') @attr(operation='list') @attr(assertion='distinct buckets have different contents') +@attr('list-objects-v2') def test_bucket_list_distinct(): bucket1 = get_new_bucket_resource() bucket2 = get_new_bucket_resource() @@ -152,6 +153,7 @@ def _get_prefixes(response): @attr(method='get') @attr(operation='list all keys') @attr(assertion='pagination w/max_keys=2, no marker') +@attr('fails_on_dbstore') def test_bucket_list_many(): bucket_name = _create_objects(keys=['foo', 'bar', 'baz']) client = get_client() @@ -173,6 +175,7 @@ def test_bucket_list_many(): @attr(operation='list all keys') @attr(assertion='pagination w/max_keys=2, no marker') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_many(): bucket_name = _create_objects(keys=['foo', 'bar', 'baz']) client = get_client() @@ -208,6 +211,7 @@ def test_basic_key_count(): @attr(method='get') @attr(operation='list') @attr(assertion='prefixes in multi-component object names') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_basic(): bucket_name = _create_objects(keys=['foo/bar', 'foo/bar/xyzzy', 'quux/thud', 'asdf']) client = get_client() @@ -226,6 +230,7 @@ def test_bucket_list_delimiter_basic(): @attr(operation='list') @attr(assertion='prefixes in multi-component object names') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_delimiter_basic(): bucket_name = _create_objects(keys=['foo/bar', 'foo/bar/xyzzy', 'quux/thud', 'asdf']) client = get_client() @@ -246,6 +251,7 @@ def test_bucket_listv2_delimiter_basic(): @attr(operation='list') @attr(assertion='test url encoding') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_encoding_basic(): bucket_name = _create_objects(keys=['foo+1/bar', 'foo/bar/xyzzy', 'quux ab/thud', 'asdf+b']) client = get_client() @@ -264,6 +270,7 @@ def test_bucket_listv2_encoding_basic(): @attr(operation='list') @attr(assertion='test url encoding') @attr('list-objects') +@attr('fails_on_dbstore') def test_bucket_list_encoding_basic(): bucket_name = _create_objects(keys=['foo+1/bar', 'foo/bar/xyzzy', 'quux ab/thud', 'asdf+b']) client = get_client() @@ -329,6 +336,7 @@ def validate_bucket_listv2(bucket_name, prefix, delimiter, continuation_token, m @attr(method='get') @attr(operation='list') @attr(assertion='prefixes in multi-component object names') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_prefix(): bucket_name = _create_objects(keys=['asdf', 'boo/bar', 'boo/baz/xyzzy', 'cquux/thud', 'cquux/bla']) @@ -355,6 +363,7 @@ def test_bucket_list_delimiter_prefix(): @attr(operation='list') @attr(assertion='prefixes in multi-component object names') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_delimiter_prefix(): bucket_name = _create_objects(keys=['asdf', 'boo/bar', 'boo/baz/xyzzy', 'cquux/thud', 'cquux/bla']) @@ -390,6 +399,7 @@ def test_bucket_listv2_delimiter_prefix_ends_with_delimiter(): @attr(method='get') @attr(operation='list') @attr(assertion='prefix and delimiter handling when object ends with delimiter') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_prefix_ends_with_delimiter(): bucket_name = _create_objects(keys=['asdf/']) validate_bucket_list(bucket_name, 'asdf/', '/', '', 1000, False, ['asdf/'], [], None) @@ -398,6 +408,7 @@ def test_bucket_list_delimiter_prefix_ends_with_delimiter(): @attr(method='get') @attr(operation='list') @attr(assertion='non-slash delimiter characters') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_alt(): bucket_name = _create_objects(keys=['bar', 'baz', 'cab', 'foo']) client = get_client() @@ -418,6 +429,7 @@ def test_bucket_list_delimiter_alt(): @attr(method='get') @attr(assertion='non-slash delimiter characters') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_delimiter_alt(): bucket_name = _create_objects(keys=['bar', 'baz', 'cab', 'foo']) client = get_client() @@ -438,6 +450,7 @@ def test_bucket_listv2_delimiter_alt(): @attr(method='get') @attr(operation='list') @attr(assertion='prefixes starting with underscore') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_prefix_underscore(): bucket_name = _create_objects(keys=['_obj1_','_under1/bar', '_under1/baz/xyzzy', '_under2/thud', '_under2/bla']) @@ -463,6 +476,7 @@ def test_bucket_list_delimiter_prefix_underscore(): @attr(operation='list') @attr(assertion='prefixes starting with underscore') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_delimiter_prefix_underscore(): bucket_name = _create_objects(keys=['_obj1_','_under1/bar', '_under1/baz/xyzzy', '_under2/thud', '_under2/bla']) @@ -488,6 +502,7 @@ def test_bucket_listv2_delimiter_prefix_underscore(): @attr(method='get') @attr(operation='list') @attr(assertion='percentage delimiter characters') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_percentage(): bucket_name = _create_objects(keys=['b%ar', 'b%az', 'c%ab', 'foo']) client = get_client() @@ -507,6 +522,7 @@ def test_bucket_list_delimiter_percentage(): @attr(method='get') @attr(assertion='percentage delimiter characters') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_delimiter_percentage(): bucket_name = _create_objects(keys=['b%ar', 'b%az', 'c%ab', 'foo']) client = get_client() @@ -526,6 +542,7 @@ def test_bucket_listv2_delimiter_percentage(): @attr(method='get') @attr(operation='list') @attr(assertion='whitespace delimiter characters') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_whitespace(): bucket_name = _create_objects(keys=['b ar', 'b az', 'c ab', 'foo']) client = get_client() @@ -545,6 +562,7 @@ def test_bucket_list_delimiter_whitespace(): @attr(method='get') @attr(assertion='whitespace delimiter characters') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_delimiter_whitespace(): bucket_name = _create_objects(keys=['b ar', 'b az', 'c ab', 'foo']) client = get_client() @@ -564,6 +582,7 @@ def test_bucket_listv2_delimiter_whitespace(): @attr(method='get') @attr(operation='list') @attr(assertion='dot delimiter characters') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_dot(): bucket_name = _create_objects(keys=['b.ar', 'b.az', 'c.ab', 'foo']) client = get_client() @@ -583,6 +602,7 @@ def test_bucket_list_delimiter_dot(): @attr(method='get') @attr(assertion='dot delimiter characters') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_delimiter_dot(): bucket_name = _create_objects(keys=['b.ar', 'b.az', 'c.ab', 'foo']) client = get_client() @@ -778,6 +798,7 @@ def test_bucket_listv2_delimiter_not_exist(): @attr(method='get') @attr(operation='list') @attr(assertion='list with delimiter not skip special keys') +@attr('fails_on_dbstore') def test_bucket_list_delimiter_not_skip_special(): key_names = ['0/'] + ['0/%s' % i for i in range(1000, 1999)] key_names2 = ['1999', '1999#', '1999+', '2000'] @@ -797,6 +818,7 @@ def test_bucket_list_delimiter_not_skip_special(): @attr(method='get') @attr(operation='list under prefix') @attr(assertion='returns only objects under prefix') +@attr('fails_on_dbstore') def test_bucket_list_prefix_basic(): key_names = ['foo/bar', 'foo/baz', 'quux'] bucket_name = _create_objects(keys=key_names) @@ -815,6 +837,7 @@ def test_bucket_list_prefix_basic(): @attr(operation='list under prefix with list-objects-v2') @attr(assertion='returns only objects under prefix') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_basic(): key_names = ['foo/bar', 'foo/baz', 'quux'] bucket_name = _create_objects(keys=key_names) @@ -833,6 +856,7 @@ def test_bucket_listv2_prefix_basic(): @attr(method='get') @attr(operation='list under prefix') @attr(assertion='prefixes w/o delimiters') +@attr('fails_on_dbstore') def test_bucket_list_prefix_alt(): key_names = ['bar', 'baz', 'foo'] bucket_name = _create_objects(keys=key_names) @@ -851,6 +875,7 @@ def test_bucket_list_prefix_alt(): @attr(operation='list under prefix with list-objects-v2') @attr(assertion='prefixes w/o delimiters') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_alt(): key_names = ['bar', 'baz', 'foo'] bucket_name = _create_objects(keys=key_names) @@ -938,6 +963,7 @@ def test_bucket_listv2_prefix_none(): @attr(method='get') @attr(operation='list under prefix') @attr(assertion='nonexistent prefix returns nothing') +@attr('fails_on_dbstore') def test_bucket_list_prefix_not_exist(): key_names = ['foo/bar', 'foo/baz', 'quux'] bucket_name = _create_objects(keys=key_names) @@ -956,6 +982,7 @@ def test_bucket_list_prefix_not_exist(): @attr(operation='list under prefix with list-objects-v2') @attr(assertion='nonexistent prefix returns nothing') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_not_exist(): key_names = ['foo/bar', 'foo/baz', 'quux'] bucket_name = _create_objects(keys=key_names) @@ -973,6 +1000,7 @@ def test_bucket_listv2_prefix_not_exist(): @attr(method='get') @attr(operation='list under prefix') @attr(assertion='non-printable prefix can be specified') +@attr('fails_on_dbstore') def test_bucket_list_prefix_unreadable(): key_names = ['foo/bar', 'foo/baz', 'quux'] bucket_name = _create_objects(keys=key_names) @@ -991,6 +1019,7 @@ def test_bucket_list_prefix_unreadable(): @attr(operation='list under prefix with list-objects-v2') @attr(assertion='non-printable prefix can be specified') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_unreadable(): key_names = ['foo/bar', 'foo/baz', 'quux'] bucket_name = _create_objects(keys=key_names) @@ -1008,6 +1037,7 @@ def test_bucket_listv2_prefix_unreadable(): @attr(method='get') @attr(operation='list under prefix w/delimiter') @attr(assertion='returns only objects directly under prefix') +@attr('fails_on_dbstore') def test_bucket_list_prefix_delimiter_basic(): key_names = ['foo/bar', 'foo/baz/xyzzy', 'quux/thud', 'asdf'] bucket_name = _create_objects(keys=key_names) @@ -1027,6 +1057,7 @@ def test_bucket_list_prefix_delimiter_basic(): @attr(operation='list-objects-v2 under prefix w/delimiter') @attr(assertion='returns only objects directly under prefix') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_delimiter_basic(): key_names = ['foo/bar', 'foo/baz/xyzzy', 'quux/thud', 'asdf'] bucket_name = _create_objects(keys=key_names) @@ -1045,6 +1076,7 @@ def test_bucket_listv2_prefix_delimiter_basic(): @attr(method='get') @attr(operation='list under prefix w/delimiter') @attr(assertion='non-slash delimiters') +@attr('fails_on_dbstore') def test_bucket_list_prefix_delimiter_alt(): key_names = ['bar', 'bazar', 'cab', 'foo'] bucket_name = _create_objects(keys=key_names) @@ -1060,6 +1092,7 @@ def test_bucket_list_prefix_delimiter_alt(): eq(prefixes, ['baza']) @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_delimiter_alt(): key_names = ['bar', 'bazar', 'cab', 'foo'] bucket_name = _create_objects(keys=key_names) @@ -1078,6 +1111,7 @@ def test_bucket_listv2_prefix_delimiter_alt(): @attr(method='get') @attr(operation='list under prefix w/delimiter') @attr(assertion='finds nothing w/unmatched prefix') +@attr('fails_on_dbstore') def test_bucket_list_prefix_delimiter_prefix_not_exist(): key_names = ['b/a/r', 'b/a/c', 'b/a/g', 'g'] bucket_name = _create_objects(keys=key_names) @@ -1095,6 +1129,7 @@ def test_bucket_list_prefix_delimiter_prefix_not_exist(): @attr(operation='list-objects-v2 under prefix w/delimiter') @attr(assertion='finds nothing w/unmatched prefix') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_delimiter_prefix_not_exist(): key_names = ['b/a/r', 'b/a/c', 'b/a/g', 'g'] bucket_name = _create_objects(keys=key_names) @@ -1111,6 +1146,7 @@ def test_bucket_listv2_prefix_delimiter_prefix_not_exist(): @attr(method='get') @attr(operation='list under prefix w/delimiter') @attr(assertion='over-ridden slash ceases to be a delimiter') +@attr('fails_on_dbstore') def test_bucket_list_prefix_delimiter_delimiter_not_exist(): key_names = ['b/a/c', 'b/a/g', 'b/a/r', 'g'] bucket_name = _create_objects(keys=key_names) @@ -1128,6 +1164,7 @@ def test_bucket_list_prefix_delimiter_delimiter_not_exist(): @attr(operation='list-objects-v2 under prefix w/delimiter') @attr(assertion='over-ridden slash ceases to be a delimiter') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_delimiter_delimiter_not_exist(): key_names = ['b/a/c', 'b/a/g', 'b/a/r', 'g'] bucket_name = _create_objects(keys=key_names) @@ -1144,6 +1181,7 @@ def test_bucket_listv2_prefix_delimiter_delimiter_not_exist(): @attr(method='get') @attr(operation='list under prefix w/delimiter') @attr(assertion='finds nothing w/unmatched prefix and delimiter') +@attr('fails_on_dbstore') def test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist(): key_names = ['b/a/c', 'b/a/g', 'b/a/r', 'g'] bucket_name = _create_objects(keys=key_names) @@ -1161,6 +1199,7 @@ def test_bucket_list_prefix_delimiter_prefix_delimiter_not_exist(): @attr(operation='list-objects-v2 under prefix w/delimiter') @attr(assertion='finds nothing w/unmatched prefix and delimiter') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist(): key_names = ['b/a/c', 'b/a/g', 'b/a/r', 'g'] bucket_name = _create_objects(keys=key_names) @@ -1177,6 +1216,7 @@ def test_bucket_listv2_prefix_delimiter_prefix_delimiter_not_exist(): @attr(method='get') @attr(operation='list all keys') @attr(assertion='pagination w/max_keys=1, marker') +@attr('fails_on_dbstore') def test_bucket_list_maxkeys_one(): key_names = ['bar', 'baz', 'foo', 'quxx'] bucket_name = _create_objects(keys=key_names) @@ -1199,6 +1239,7 @@ def test_bucket_list_maxkeys_one(): @attr(operation='list all keys with list-objects-v2') @attr(assertion='pagination w/max_keys=1, marker') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_maxkeys_one(): key_names = ['bar', 'baz', 'foo', 'quxx'] bucket_name = _create_objects(keys=key_names) @@ -1324,6 +1365,7 @@ def test_account_usage(): @attr(operation='get usage by client') @attr(assertion='account usage by head bucket') @attr('fails_on_aws') # allow-unordered is a non-standard extension +@attr('fails_on_dbstore') def test_head_bucket_usage(): # boto3.set_stream_logger(name='botocore') client = get_client() @@ -1345,6 +1387,7 @@ def test_head_bucket_usage(): @attr(operation='list all keys') @attr(assertion='bucket list unordered') @attr('fails_on_aws') # allow-unordered is a non-standard extension +@attr('fails_on_dbstore') def test_bucket_list_unordered(): # boto3.set_stream_logger(name='botocore') keys_in = ['ado', 'bot', 'cob', 'dog', 'emu', 'fez', 'gnu', 'hex', @@ -1402,6 +1445,7 @@ def test_bucket_list_unordered(): @attr(assertion='bucket list unordered') @attr('fails_on_aws') # allow-unordered is a non-standard extension @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_unordered(): # boto3.set_stream_logger(name='botocore') keys_in = ['ado', 'bot', 'cob', 'dog', 'emu', 'fez', 'gnu', 'hex', @@ -1525,6 +1569,7 @@ def test_bucket_listv2_continuationtoken_empty(): @attr(operation='list keys with list-objects-v2') @attr(assertion='no pagination, non-empty continuationtoken') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_continuationtoken(): key_names = ['bar', 'baz', 'foo', 'quxx'] bucket_name = _create_objects(keys=key_names) @@ -1545,6 +1590,7 @@ def test_bucket_listv2_continuationtoken(): @attr(operation='list keys with list-objects-v2') @attr(assertion='no pagination, non-empty continuationtoken and startafter') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_bucket_listv2_both_continuationtoken_startafter(): key_names = ['bar', 'baz', 'foo', 'quxx'] bucket_name = _create_objects(keys=key_names) @@ -1665,6 +1711,7 @@ def _compare_dates(datetime1, datetime2): @attr(method='head') @attr(operation='compare w/bucket list') @attr(assertion='return same metadata') +@attr('fails_on_dbstore') def test_bucket_list_return_data(): key_names = ['bar', 'baz', 'foo'] bucket_name = _create_objects(keys=key_names) @@ -1723,6 +1770,7 @@ def check_configure_versioning_retry(bucket_name, status, expected_string): @attr(operation='compare w/bucket list when bucket versioning is configured') @attr(assertion='return same metadata') @attr('versioning') +@attr('fails_on_dbstore') def test_bucket_list_return_data_versioning(): bucket_name = get_new_bucket() check_configure_versioning_retry(bucket_name, "Enabled", "Enabled") @@ -1964,6 +2012,7 @@ def get_http_response(**kwargs): @attr(method='get') @attr(operation='read contents that were never written to raise one error response') @attr(assertion='RequestId appears in the error response') +@attr('fails_on_dbstore') def test_object_requestid_matches_header_on_error(): bucket_name = get_new_bucket() client = get_client() @@ -2042,6 +2091,7 @@ def test_multi_objectv2_delete(): @attr(method='post') @attr(operation='delete multiple objects has upper limit of 1000 keys') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_multi_object_delete_key_limit(): key_names = [f"key-{i}" for i in range(1001)] bucket_name = _create_objects(keys=key_names) @@ -2063,6 +2113,7 @@ def test_multi_object_delete_key_limit(): @attr(method='post') @attr(operation='delete multiple objects has upper limit of 1000 keys with list-objects-v2') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_multi_objectv2_delete_key_limit(): key_names = [f"key-{i}" for i in range(1001)] bucket_name = _create_objects(keys=key_names) @@ -3517,6 +3568,7 @@ def test_get_object_ifmodifiedsince_good(): @attr(method='get') @attr(operation='get w/ If-Modified-Since: after') @attr(assertion='fails 304') +@attr('fails_on_dbstore') def test_get_object_ifmodifiedsince_failed(): bucket_name = get_new_bucket() client = get_client() @@ -3541,6 +3593,7 @@ def test_get_object_ifmodifiedsince_failed(): @attr(method='get') @attr(operation='get w/ If-Unmodified-Since: before') @attr(assertion='fails 412') +@attr('fails_on_dbstore') def test_get_object_ifunmodifiedsince_good(): bucket_name = get_new_bucket() client = get_client() @@ -3594,6 +3647,7 @@ def test_put_object_ifmatch_good(): @attr(method='get') @attr(operation='get w/ If-Match: bogus ETag') @attr(assertion='fails 412') +@attr('fails_on_dbstore') def test_put_object_ifmatch_failed(): bucket_name = get_new_bucket() client = get_client() @@ -3641,6 +3695,7 @@ def test_put_object_ifmatch_overwrite_existed_good(): @attr(operation='overwrite non-existing object w/ If-Match: *') @attr(assertion='fails 412') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_put_object_ifmatch_nonexisted_failed(): bucket_name = get_new_bucket() client = get_client() @@ -3683,6 +3738,7 @@ def test_put_object_ifnonmatch_good(): @attr(operation='overwrite existing object w/ If-None-Match: the latest ETag') @attr(assertion='fails 412') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_put_object_ifnonmatch_failed(): bucket_name = get_new_bucket() client = get_client() @@ -3728,6 +3784,7 @@ def test_put_object_ifnonmatch_nonexisted_good(): @attr(operation='overwrite existing object w/ If-None-Match: *') @attr(assertion='fails 412') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_put_object_ifnonmatch_overwrite_existed_failed(): bucket_name = get_new_bucket() client = get_client() @@ -3868,6 +3925,7 @@ def test_bucket_head_notexist(): @attr(method='head') @attr(operation='read bucket extended information') @attr(assertion='extended information is getting updated') +@attr('fails_on_dbstore') def test_bucket_head_extended(): bucket_name = get_new_bucket() client = get_client() @@ -4435,6 +4493,7 @@ def test_bucket_create_exists(): @attr(resource='bucket') @attr(method='get') @attr(operation='get location') +@attr('fails_on_dbstore') def test_bucket_get_location(): location_constraint = get_main_api_name() if not location_constraint: @@ -4453,6 +4512,7 @@ def test_bucket_get_location(): @attr(method='put') @attr(operation='re-create by non-owner') @attr(assertion='fails 409') +@attr('fails_on_dbstore') def test_bucket_create_exists_nonowner(): # Names are shared across a global namespace. As such, no two # users can create a bucket with that same name. @@ -4471,6 +4531,7 @@ def test_bucket_create_exists_nonowner(): @attr(method='put') @attr(operation='re-create with existing acl') @attr(assertion='fails 409') +@attr('fails_on_dbstore') def test_bucket_recreate_overwrite_acl(): bucket_name = get_new_bucket_name() client = get_client() @@ -4485,6 +4546,7 @@ def test_bucket_recreate_overwrite_acl(): @attr(method='put') @attr(operation='re-create with new acl') @attr(assertion='fails 409') +@attr('fails_on_dbstore') def test_bucket_recreate_new_acl(): bucket_name = get_new_bucket_name() client = get_client() @@ -4929,6 +4991,7 @@ def test_object_acl_canned_authenticatedread(): @attr(method='put') @attr(operation='acl bucket-owner-read') @attr(assertion='read back expected values') +@attr('fails_on_dbstore') def test_object_acl_canned_bucketownerread(): bucket_name = get_new_bucket_name() main_client = get_client() @@ -4975,6 +5038,7 @@ def test_object_acl_canned_bucketownerread(): @attr(method='put') @attr(operation='acl bucket-owner-read') @attr(assertion='read back expected values') +@attr('fails_on_dbstore') def test_object_acl_canned_bucketownerfullcontrol(): bucket_name = get_new_bucket_name() main_client = get_client() @@ -5357,6 +5421,7 @@ def test_bucket_acl_grant_userid_fullcontrol(): @attr(operation='set acl w/userid READ') @attr(assertion='can read data, no other r/w') @attr('fails_on_aws') # InvalidArgumentInvalid idCanonicalUser/ID${ALTUSER} +@attr('fails_on_dbstore') def test_bucket_acl_grant_userid_read(): bucket_name = _bucket_acl_grant_userid('READ') @@ -5374,6 +5439,7 @@ def test_bucket_acl_grant_userid_read(): @attr(operation='set acl w/userid READ_ACP') @attr(assertion='can read acl, no other r/w') @attr('fails_on_aws') # InvalidArgumentInvalid idCanonicalUser/ID${ALTUSER} +@attr('fails_on_dbstore') def test_bucket_acl_grant_userid_readacp(): bucket_name = _bucket_acl_grant_userid('READ_ACP') @@ -5392,6 +5458,7 @@ def test_bucket_acl_grant_userid_readacp(): @attr(operation='set acl w/userid WRITE') @attr(assertion='can write data, no other r/w') @attr('fails_on_aws') # InvalidArgumentInvalid idCanonicalUser/ID${ALTUSER} +@attr('fails_on_dbstore') def test_bucket_acl_grant_userid_write(): bucket_name = _bucket_acl_grant_userid('WRITE') @@ -5409,6 +5476,7 @@ def test_bucket_acl_grant_userid_write(): @attr(operation='set acl w/userid WRITE_ACP') @attr(assertion='can write acls, no other r/w') @attr('fails_on_aws') # InvalidArgumentInvalid idCanonicalUser/ID${ALTUSER} +@attr('fails_on_dbstore') def test_bucket_acl_grant_userid_writeacp(): bucket_name = _bucket_acl_grant_userid('WRITE_ACP') @@ -5820,6 +5888,7 @@ def list_bucket_versions(client, bucket_name): @attr(method='ACLs') @attr(operation='set bucket/object acls: private/private') @attr(assertion='public has no access to bucket or objects') +@attr('fails_on_dbstore') def test_access_bucket_private_object_private(): # all the test_access_* tests follow this template bucket_name, key1, key2, newkey = _setup_access(bucket_acl='private', object_acl='private') @@ -5852,6 +5921,7 @@ def test_access_bucket_private_object_private(): @attr(operation='set bucket/object acls: private/private with list-objects-v2') @attr(assertion='public has no access to bucket or objects') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_access_bucket_private_objectv2_private(): # all the test_access_* tests follow this template bucket_name, key1, key2, newkey = _setup_access(bucket_acl='private', object_acl='private') @@ -5883,6 +5953,7 @@ def test_access_bucket_private_objectv2_private(): @attr(method='ACLs') @attr(operation='set bucket/object acls: private/public-read') @attr(assertion='public can only read readable object') +@attr('fails_on_dbstore') def test_access_bucket_private_object_publicread(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='private', object_acl='public-read') @@ -5908,6 +5979,7 @@ def test_access_bucket_private_object_publicread(): @attr(operation='set bucket/object acls: private/public-read with list-objects-v2') @attr(assertion='public can only read readable object') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_access_bucket_private_objectv2_publicread(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='private', object_acl='public-read') @@ -5932,6 +6004,7 @@ def test_access_bucket_private_objectv2_publicread(): @attr(method='ACLs') @attr(operation='set bucket/object acls: private/public-read/write') @attr(assertion='public can only read the readable object') +@attr('fails_on_dbstore') def test_access_bucket_private_object_publicreadwrite(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='private', object_acl='public-read-write') alt_client = get_alt_client() @@ -5957,6 +6030,7 @@ def test_access_bucket_private_object_publicreadwrite(): @attr(operation='set bucket/object acls: private/public-read/write with list-objects-v2') @attr(assertion='public can only read the readable object') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_access_bucket_private_objectv2_publicreadwrite(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='private', object_acl='public-read-write') alt_client = get_alt_client() @@ -5981,6 +6055,7 @@ def test_access_bucket_private_objectv2_publicreadwrite(): @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read/private') @attr(assertion='public can only list the bucket') +@attr('fails_on_dbstore') def test_access_bucket_publicread_object_private(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='public-read', object_acl='private') alt_client = get_alt_client() @@ -6004,6 +6079,7 @@ def test_access_bucket_publicread_object_private(): @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read/public-read') @attr(assertion='public can read readable objects and list bucket') +@attr('fails_on_dbstore') def test_access_bucket_publicread_object_publicread(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='public-read', object_acl='public-read') alt_client = get_alt_client() @@ -6032,6 +6108,7 @@ def test_access_bucket_publicread_object_publicread(): @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read/public-read-write') @attr(assertion='public can read readable objects and list bucket') +@attr('fails_on_dbstore') def test_access_bucket_publicread_object_publicreadwrite(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='public-read', object_acl='public-read-write') alt_client = get_alt_client() @@ -6062,6 +6139,7 @@ def test_access_bucket_publicread_object_publicreadwrite(): @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read-write/private') @attr(assertion='private objects cannot be read, but can be overwritten') +@attr('fails_on_dbstore') def test_access_bucket_publicreadwrite_object_private(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='public-read-write', object_acl='private') alt_client = get_alt_client() @@ -6081,6 +6159,7 @@ def test_access_bucket_publicreadwrite_object_private(): @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read-write/public-read') @attr(assertion='private objects cannot be read, but can be overwritten') +@attr('fails_on_dbstore') def test_access_bucket_publicreadwrite_object_publicread(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='public-read-write', object_acl='public-read') alt_client = get_alt_client() @@ -6103,6 +6182,7 @@ def test_access_bucket_publicreadwrite_object_publicread(): @attr(method='ACLs') @attr(operation='set bucket/object acls: public-read-write/public-read-write') @attr(assertion='private objects cannot be read, but can be overwritten') +@attr('fails_on_dbstore') def test_access_bucket_publicreadwrite_object_publicreadwrite(): bucket_name, key1, key2, newkey = _setup_access(bucket_acl='public-read-write', object_acl='public-read-write') alt_client = get_alt_client() @@ -6178,6 +6258,7 @@ def test_list_buckets_anonymous(): @attr(method='get') @attr(operation='list all buckets (bad auth)') @attr(assertion='fails 403') +@attr('fails_on_dbstore') def test_list_buckets_invalid_auth(): bad_auth_client = get_bad_auth_client() e = assert_raises(ClientError, bad_auth_client.list_buckets) @@ -6258,6 +6339,7 @@ def test_bucket_recreate_not_overriding(): @attr(method='put') @attr(operation='create and list objects with special names') @attr(assertion='special names work') +@attr('fails_on_dbstore') def test_bucket_create_special_key_names(): key_names = [ ' ', @@ -6292,6 +6374,7 @@ def test_bucket_create_special_key_names(): @attr(method='get') @attr(operation='create and list objects with underscore as prefix, list using prefix') @attr(assertion='listing works correctly') +@attr('fails_on_dbstore') def test_bucket_list_special_prefix(): key_names = ['_bla/1', '_bla/2', '_bla/3', '_bla/4', 'abcd'] bucket_name = _create_objects(keys=key_names) @@ -6307,6 +6390,7 @@ def test_bucket_list_special_prefix(): @attr(method='put') @attr(operation='copy zero sized object in same bucket') @attr(assertion='works') +@attr('fails_on_dbstore') def test_object_copy_zero_size(): key = 'foo123bar' bucket_name = _create_objects(keys=[key]) @@ -6324,6 +6408,7 @@ def test_object_copy_zero_size(): @attr(method='put') @attr(operation='copy object in same bucket') @attr(assertion='works') +@attr('fails_on_dbstore') def test_object_copy_same_bucket(): bucket_name = get_new_bucket() client = get_client() @@ -6341,6 +6426,7 @@ def test_object_copy_same_bucket(): @attr(method='put') @attr(operation='copy object with content-type') @attr(assertion='works') +@attr('fails_on_dbstore') def test_object_copy_verify_contenttype(): bucket_name = get_new_bucket() client = get_client() @@ -6362,6 +6448,7 @@ def test_object_copy_verify_contenttype(): @attr(method='put') @attr(operation='copy object to itself') @attr(assertion='fails') +@attr('fails_on_dbstore') def test_object_copy_to_itself(): bucket_name = get_new_bucket() client = get_client() @@ -6378,6 +6465,7 @@ def test_object_copy_to_itself(): @attr(method='put') @attr(operation='modify object metadata by copying') @attr(assertion='fails') +@attr('fails_on_dbstore') def test_object_copy_to_itself_with_metadata(): bucket_name = get_new_bucket() client = get_client() @@ -6393,6 +6481,7 @@ def test_object_copy_to_itself_with_metadata(): @attr(method='put') @attr(operation='copy object from different bucket') @attr(assertion='works') +@attr('fails_on_dbstore') def test_object_copy_diff_bucket(): bucket_name1 = get_new_bucket() bucket_name2 = get_new_bucket() @@ -6412,6 +6501,7 @@ def test_object_copy_diff_bucket(): @attr(method='put') @attr(operation='copy to an inaccessible bucket') @attr(assertion='fails w/AttributeError') +@attr('fails_on_dbstore') def test_object_copy_not_owned_bucket(): client = get_client() alt_client = get_alt_client() @@ -6432,6 +6522,7 @@ def test_object_copy_not_owned_bucket(): @attr(method='put') @attr(operation='copy a non-owned object in a non-owned bucket, but with perms') @attr(assertion='works') +@attr('fails_on_dbstore') def test_object_copy_not_owned_object_bucket(): client = get_client() alt_client = get_alt_client() @@ -6457,6 +6548,7 @@ def test_object_copy_not_owned_object_bucket(): @attr(method='put') @attr(operation='copy object and change acl') @attr(assertion='works') +@attr('fails_on_dbstore') def test_object_copy_canned_acl(): bucket_name = get_new_bucket() client = get_client() @@ -6479,6 +6571,7 @@ def test_object_copy_canned_acl(): @attr(resource='object') @attr(method='put') @attr(operation='copy object and retain metadata') +@attr('fails_on_dbstore') def test_object_copy_retaining_metadata(): for size in [3, 1024 * 1024]: bucket_name = get_new_bucket() @@ -6500,6 +6593,7 @@ def test_object_copy_retaining_metadata(): @attr(resource='object') @attr(method='put') @attr(operation='copy object and replace metadata') +@attr('fails_on_dbstore') def test_object_copy_replacing_metadata(): for size in [3, 1024 * 1024]: bucket_name = get_new_bucket() @@ -6523,6 +6617,7 @@ def test_object_copy_replacing_metadata(): @attr(resource='object') @attr(method='put') @attr(operation='copy from non-existent bucket') +@attr('fails_on_dbstore') def test_object_copy_bucket_not_found(): bucket_name = get_new_bucket() client = get_client() @@ -6535,6 +6630,7 @@ def test_object_copy_bucket_not_found(): @attr(resource='object') @attr(method='put') @attr(operation='copy from non-existent object') +@attr('fails_on_dbstore') def test_object_copy_key_not_found(): bucket_name = get_new_bucket() client = get_client() @@ -6549,6 +6645,7 @@ def test_object_copy_key_not_found(): @attr(operation='copy object to/from versioned bucket') @attr(assertion='works') @attr('versioning') +@attr('fails_on_dbstore') def test_object_copy_versioned_bucket(): bucket_name = get_new_bucket() client = get_client() @@ -6617,6 +6714,7 @@ def test_object_copy_versioned_bucket(): @attr(operation='copy object to/from versioned bucket with url-encoded name') @attr(assertion='works') @attr('versioning') +@attr('fails_on_dbstore') def test_object_copy_versioned_url_encoding(): bucket = get_new_bucket_resource() check_configure_versioning_retry(bucket.name, "Enabled", "Enabled") @@ -6684,6 +6782,7 @@ def _multipart_upload(bucket_name, key, size, part_size=5*1024*1024, client=None @attr(operation='test copy object of a multipart upload') @attr(assertion='successful') @attr('versioning') +@attr('fails_on_dbstore') def test_object_copy_versioning_multipart_upload(): bucket_name = get_new_bucket() client = get_client() @@ -6778,6 +6877,7 @@ def test_multipart_upload_empty(): @attr(resource='object') @attr(method='put') @attr(operation='check multipart uploads with single small part') +@attr('fails_on_dbstore') def test_multipart_upload_small(): bucket_name = get_new_bucket() client = get_client() @@ -6855,6 +6955,7 @@ def _check_key_content(src_key, src_bucket_name, dest_key, dest_bucket_name, ver @attr(resource='object') @attr(method='put') @attr(operation='check multipart copies with single small part') +@attr('fails_on_dbstore') def test_multipart_copy_small(): src_key = 'foo' src_bucket_name = _create_key_with_random_content(src_key) @@ -6958,6 +7059,7 @@ def test_multipart_copy_without_range(): @attr(resource='object') @attr(method='put') @attr(operation='check multipart copies with single small part') +@attr('fails_on_dbstore') def test_multipart_copy_special_names(): src_bucket_name = get_new_bucket() @@ -6996,6 +7098,7 @@ def _check_content_using_range(key, bucket_name, data, step): @attr(operation='complete multi-part upload') @attr(assertion='successful') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_multipart_upload(): bucket_name = get_new_bucket() key="mymultipart" @@ -7060,6 +7163,7 @@ def check_configure_versioning_retry(bucket_name, status, expected_string): @attr(method='put') @attr(operation='check multipart copies of versioned objects') @attr('versioning') +@attr('fails_on_dbstore') def test_multipart_copy_versioned(): src_bucket_name = get_new_bucket() dest_bucket_name = get_new_bucket() @@ -7112,6 +7216,7 @@ def _check_upload_multipart_resend(bucket_name, key, objlen, resend_parts): @attr(method='put') @attr(operation='complete multi-part upload') @attr(assertion='successful') +@attr('fails_on_dbstore') def test_multipart_upload_resend_part(): bucket_name = get_new_bucket() key="mymultipart" @@ -7154,6 +7259,7 @@ def test_multipart_upload_multiple_sizes(): client.complete_multipart_upload(Bucket=bucket_name, Key=key, UploadId=upload_id, MultipartUpload={'Parts': parts}) @attr(assertion='successful') +@attr('fails_on_dbstore') def test_multipart_copy_multiple_sizes(): src_key = 'foo' src_bucket_name = _create_key_with_random_content(src_key, 12*1024*1024) @@ -7245,6 +7351,7 @@ def _do_test_multipart_upload_contents(bucket_name, key, num_parts): @attr(method='put') @attr(operation='check contents of multi-part upload') @attr(assertion='successful') +@attr('fails_on_dbstore') def test_multipart_upload_contents(): bucket_name = get_new_bucket() _do_test_multipart_upload_contents(bucket_name, 'mymultipart', 3) @@ -7317,6 +7424,7 @@ def test_abort_multipart_upload_not_found(): @attr(method='put') @attr(operation='concurrent multi-part uploads') @attr(assertion='successful') +@attr('fails_on_dbstore') def test_list_multipart_upload(): bucket_name = get_new_bucket() client = get_client() @@ -7351,6 +7459,7 @@ def test_list_multipart_upload(): @attr(method='get') @attr(operation='list multipart uploads with different owners') @attr(assertion='successful') +@attr('fails_on_dbstore') def test_list_multipart_upload_owner(): bucket_name = get_new_bucket() @@ -7889,6 +7998,7 @@ def _test_atomic_write(file_size): @attr(method='put') @attr(operation='write atomicity') @attr(assertion='1MB successful') +@attr('fails_on_dbstore') def test_atomic_write_1mb(): _test_atomic_write(1024*1024) @@ -8159,6 +8269,7 @@ def test_multipart_resend_first_finishes_last(): @attr(method='get') @attr(operation='range') @attr(assertion='returns correct data, 206') +@attr('fails_on_dbstore') def test_ranged_request_response_code(): content = 'testcontent' @@ -8180,6 +8291,7 @@ def _generate_random_string(size): @attr(method='get') @attr(operation='range') @attr(assertion='returns correct data, 206') +@attr('fails_on_dbstore') def test_ranged_big_request_response_code(): content = _generate_random_string(8*1024*1024) @@ -8198,6 +8310,7 @@ def test_ranged_big_request_response_code(): @attr(method='get') @attr(operation='range') @attr(assertion='returns correct data, 206') +@attr('fails_on_dbstore') def test_ranged_request_skip_leading_bytes_response_code(): content = 'testcontent' @@ -8216,6 +8329,7 @@ def test_ranged_request_skip_leading_bytes_response_code(): @attr(method='get') @attr(operation='range') @attr(assertion='returns correct data, 206') +@attr('fails_on_dbstore') def test_ranged_request_return_trailing_bytes_response_code(): content = 'testcontent' @@ -8271,6 +8385,7 @@ def test_ranged_request_empty_object(): @attr(operation='create versioned bucket') @attr(assertion='can create and suspend bucket versioning') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_bucket_create_suspend(): bucket_name = get_new_bucket() check_versioning(bucket_name, None) @@ -8359,6 +8474,7 @@ def _do_test_create_remove_versions(client, bucket_name, key, num_versions, remo @attr(operation='create and remove versioned object') @attr(assertion='can create access and remove appropriate versions') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_create_read_remove(): bucket_name = get_new_bucket() client = get_client() @@ -8378,6 +8494,7 @@ def test_versioning_obj_create_read_remove(): @attr(operation='create and remove versioned object and head') @attr(assertion='can create access and remove appropriate versions') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_create_read_remove_head(): bucket_name = get_new_bucket() @@ -8417,6 +8534,7 @@ def test_versioning_obj_create_read_remove_head(): @attr(operation='create object, then switch to versioning') @attr(assertion='behaves correctly') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_plain_null_version_removal(): bucket_name = get_new_bucket() check_versioning(bucket_name, None) @@ -8442,6 +8560,7 @@ def test_versioning_obj_plain_null_version_removal(): @attr(operation='create object, then switch to versioning') @attr(assertion='behaves correctly') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_plain_null_version_overwrite(): bucket_name = get_new_bucket() check_versioning(bucket_name, None) @@ -8480,6 +8599,7 @@ def test_versioning_obj_plain_null_version_overwrite(): @attr(operation='create object, then switch to versioning') @attr(assertion='behaves correctly') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_plain_null_version_overwrite_suspended(): bucket_name = get_new_bucket() check_versioning(bucket_name, None) @@ -8550,6 +8670,7 @@ def overwrite_suspended_versioning_obj(client, bucket_name, key, version_ids, co @attr(operation='suspend versioned bucket') @attr(assertion='suspended versioning behaves correctly') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_suspend_versions(): bucket_name = get_new_bucket() client = get_client() @@ -8587,6 +8708,7 @@ def test_versioning_obj_suspend_versions(): @attr(operation='create and remove versions') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_create_versions_remove_all(): bucket_name = get_new_bucket() client = get_client() @@ -8607,6 +8729,7 @@ def test_versioning_obj_create_versions_remove_all(): @attr(method='remove') @attr(operation='create and remove versions') @attr(assertion='everything works') +@attr('fails_on_dbstore') @attr('versioning') def test_versioning_obj_create_versions_remove_special_names(): bucket_name = get_new_bucket() @@ -8630,6 +8753,7 @@ def test_versioning_obj_create_versions_remove_special_names(): @attr(operation='create and test multipart object') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_create_overwrite_multipart(): bucket_name = get_new_bucket() client = get_client() @@ -8663,6 +8787,7 @@ def test_versioning_obj_create_overwrite_multipart(): @attr(operation='list versioned objects') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_obj_list_marker(): bucket_name = get_new_bucket() client = get_client() @@ -8723,6 +8848,7 @@ def test_versioning_obj_list_marker(): @attr(operation='create and test versioned object copying') @attr(assertion='everything works') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_copy_obj_version(): bucket_name = get_new_bucket() client = get_client() @@ -8765,6 +8891,7 @@ def test_versioning_copy_obj_version(): @attr(operation='delete multiple versions') @attr(assertion='deletes multiple versions of an object with a single call') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_multi_object_delete(): bucket_name = get_new_bucket() client = get_client() @@ -8798,6 +8925,7 @@ def test_versioning_multi_object_delete(): @attr(operation='delete multiple versions') @attr(assertion='deletes multiple versions of an object and delete marker with a single call') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_multi_object_delete_with_marker(): bucket_name = get_new_bucket() client = get_client() @@ -8844,6 +8972,7 @@ def test_versioning_multi_object_delete_with_marker(): @attr(operation='multi delete create marker') @attr(assertion='returns correct marker version id') @attr('versioning') +@attr('fails_on_dbstore') def test_versioning_multi_object_delete_with_marker_create(): bucket_name = get_new_bucket() client = get_client() @@ -8867,6 +8996,7 @@ def test_versioning_multi_object_delete_with_marker_create(): @attr(operation='change acl on an object version changes specific version') @attr(assertion='works') @attr('versioning') +@attr('fails_on_dbstore') def test_versioned_object_acl(): bucket_name = get_new_bucket() client = get_client() @@ -8939,6 +9069,7 @@ def test_versioned_object_acl(): @attr(operation='change acl on an object with no version specified changes latest version') @attr(assertion='works') @attr('versioning') +@attr('fails_on_dbstore') def test_versioned_object_acl_no_version_specified(): bucket_name = get_new_bucket() client = get_client() @@ -9065,6 +9196,7 @@ def test_versioned_concurrent_object_create_concurrent_remove(): @attr(operation='concurrent creation and removal of objects') @attr(assertion='works') @attr('versioning') +@attr('fails_on_dbstore') def test_versioned_concurrent_object_create_and_remove(): bucket_name = get_new_bucket() client = get_client() @@ -9097,6 +9229,7 @@ def test_versioned_concurrent_object_create_and_remove(): @attr(method='put') @attr(operation='set lifecycle config') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_set(): bucket_name = get_new_bucket() client = get_client() @@ -9110,6 +9243,7 @@ def test_lifecycle_set(): @attr(method='get') @attr(operation='get lifecycle config') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_get(): bucket_name = get_new_bucket() client = get_client() @@ -9124,6 +9258,7 @@ def test_lifecycle_get(): @attr(method='get') @attr(operation='get lifecycle config no id') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_get_no_id(): bucket_name = get_new_bucket() client = get_client() @@ -9160,6 +9295,7 @@ def test_lifecycle_get_no_id(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_expiration(): bucket_name = _create_objects(keys=['expire1/foo', 'expire1/bar', 'keep2/foo', 'keep2/bar', 'expire3/foo', 'expire3/bar']) @@ -9197,6 +9333,7 @@ def test_lifecycle_expiration(): @attr('lifecycle_expiration') @attr('fails_on_aws') @attr('list-objects-v2') +@attr('fails_on_dbstore') def test_lifecyclev2_expiration(): bucket_name = _create_objects(keys=['expire1/foo', 'expire1/bar', 'keep2/foo', 'keep2/bar', 'expire3/foo', 'expire3/bar']) @@ -9233,6 +9370,7 @@ def test_lifecyclev2_expiration(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_expiration_versioning_enabled(): bucket_name = get_new_bucket() client = get_client() @@ -9260,6 +9398,7 @@ def test_lifecycle_expiration_versioning_enabled(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_expiration_tags1(): bucket_name = get_new_bucket() client = get_client() @@ -9371,6 +9510,7 @@ def setup_lifecycle_tags2(client, bucket_name): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_expiration_tags2(): bucket_name = get_new_bucket() client = get_client() @@ -9391,6 +9531,7 @@ def test_lifecycle_expiration_tags2(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_expiration_versioned_tags2(): bucket_name = get_new_bucket() client = get_client() @@ -9463,6 +9604,7 @@ def verify_lifecycle_expiration_noncur_tags(client, bucket_name, secs): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_expiration_noncur_tags1(): bucket_name = get_new_bucket() client = get_client() @@ -9492,6 +9634,7 @@ def test_lifecycle_expiration_noncur_tags1(): @attr(operation='id too long in lifecycle rule') @attr('lifecycle') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_lifecycle_id_too_long(): bucket_name = get_new_bucket() client = get_client() @@ -9508,6 +9651,7 @@ def test_lifecycle_id_too_long(): @attr(operation='same id') @attr('lifecycle') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_lifecycle_same_id(): bucket_name = get_new_bucket() client = get_client() @@ -9525,6 +9669,7 @@ def test_lifecycle_same_id(): @attr(operation='invalid status in lifecycle rule') @attr('lifecycle') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_lifecycle_invalid_status(): bucket_name = get_new_bucket() client = get_client() @@ -9556,6 +9701,7 @@ def test_lifecycle_invalid_status(): @attr(method='put') @attr(operation='set lifecycle config with expiration date') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_set_date(): bucket_name = get_new_bucket() client = get_client() @@ -9586,6 +9732,7 @@ def test_lifecycle_set_invalid_date(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_expiration_date(): bucket_name = _create_objects(keys=['past/foo', 'future/bar']) client = get_client() @@ -9611,6 +9758,7 @@ def test_lifecycle_expiration_date(): @attr(operation='test lifecycle expiration days 0') @attr('lifecycle') @attr('lifecycle_expiration') +@attr('fails_on_dbstore') def test_lifecycle_expiration_days0(): bucket_name = _create_objects(keys=['days0/foo', 'days0/bar']) client = get_client() @@ -9665,6 +9813,7 @@ def check_lifecycle_expiration_header(response, start_time, rule_id, @attr(operation='test lifecycle expiration header put') @attr('lifecycle') @attr('lifecycle_expiration') +@attr('fails_on_dbstore') def test_lifecycle_expiration_header_put(): bucket_name = get_new_bucket() client = get_client() @@ -9679,6 +9828,7 @@ def test_lifecycle_expiration_header_put(): @attr(operation='test lifecycle expiration header head') @attr('lifecycle') @attr('lifecycle_expiration') +@attr('fails_on_dbstore') def test_lifecycle_expiration_header_head(): bucket_name = get_new_bucket() client = get_client() @@ -9699,6 +9849,7 @@ def test_lifecycle_expiration_header_head(): @attr(operation='test lifecycle expiration header head with tags') @attr('lifecycle') @attr('lifecycle_expiration') +@attr('fails_on_dbstore') def test_lifecycle_expiration_header_tags_head(): bucket_name = get_new_bucket() client = get_client() @@ -9757,6 +9908,7 @@ def test_lifecycle_expiration_header_tags_head(): @attr(operation='test lifecycle expiration header head with tags and And') @attr('lifecycle') @attr('lifecycle_expiration') +@attr('fails_on_dbstore') def test_lifecycle_expiration_header_and_tags_head(): now = datetime.datetime.now(None) bucket_name = get_new_bucket() @@ -9804,6 +9956,7 @@ def test_lifecycle_expiration_header_and_tags_head(): @attr(method='put') @attr(operation='set lifecycle config with noncurrent version expiration') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_set_noncurrent(): bucket_name = _create_objects(keys=['past/foo', 'future/bar']) client = get_client() @@ -9819,6 +9972,7 @@ def test_lifecycle_set_noncurrent(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_noncur_expiration(): bucket_name = get_new_bucket() client = get_client() @@ -9848,6 +10002,7 @@ def test_lifecycle_noncur_expiration(): @attr(method='put') @attr(operation='set lifecycle config with delete marker expiration') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_set_deletemarker(): bucket_name = get_new_bucket() client = get_client() @@ -9860,6 +10015,7 @@ def test_lifecycle_set_deletemarker(): @attr(method='put') @attr(operation='set lifecycle config with Filter') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_set_filter(): bucket_name = get_new_bucket() client = get_client() @@ -9872,6 +10028,7 @@ def test_lifecycle_set_filter(): @attr(method='put') @attr(operation='set lifecycle config with empty Filter') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_set_empty_filter(): bucket_name = get_new_bucket() client = get_client() @@ -9886,6 +10043,7 @@ def test_lifecycle_set_empty_filter(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_deletemarker_expiration(): bucket_name = get_new_bucket() client = get_client() @@ -9921,6 +10079,7 @@ def test_lifecycle_deletemarker_expiration(): @attr(method='put') @attr(operation='set lifecycle config with multipart expiration') @attr('lifecycle') +@attr('fails_on_dbstore') def test_lifecycle_set_multipart(): bucket_name = get_new_bucket() client = get_client() @@ -9940,6 +10099,7 @@ def test_lifecycle_set_multipart(): @attr('lifecycle') @attr('lifecycle_expiration') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_multipart_expiration(): bucket_name = get_new_bucket() client = get_client() @@ -9976,6 +10136,7 @@ def test_lifecycle_multipart_expiration(): @attr(operation='set lifecycle config transition with not iso8601 date') @attr('lifecycle') @attr(assertion='fails 400') +@attr('fails_on_dbstore') def test_lifecycle_transition_set_invalid_date(): bucket_name = get_new_bucket() client = get_client() @@ -10018,6 +10179,7 @@ def _test_encryption_sse_customer_write(file_size): @attr('lifecycle') @attr('lifecycle_transition') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_transition(): sc = configured_storage_classes() if len(sc) < 3: @@ -10066,6 +10228,7 @@ def test_lifecycle_transition(): @attr('lifecycle') @attr('lifecycle_transition') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_transition_single_rule_multi_trans(): sc = configured_storage_classes() if len(sc) < 3: @@ -10111,6 +10274,7 @@ def test_lifecycle_transition_single_rule_multi_trans(): @attr(operation='set lifecycle config with noncurrent version expiration') @attr('lifecycle') @attr('lifecycle_transition') +@attr('fails_on_dbstore') def test_lifecycle_set_noncurrent_transition(): sc = configured_storage_classes() if len(sc) < 3: @@ -10152,6 +10316,7 @@ def test_lifecycle_set_noncurrent_transition(): @attr('lifecycle_expiration') @attr('lifecycle_transition') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_noncur_transition(): sc = configured_storage_classes() if len(sc) < 3: @@ -10233,6 +10398,7 @@ def verify_object(client, bucket, key, content=None, sc=None): @attr('lifecycle_transition') @attr('cloud_transition') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_cloud_transition(): cloud_sc = get_cloud_storage_class() if cloud_sc == None: @@ -10317,6 +10483,7 @@ def test_lifecycle_cloud_transition(): @attr('lifecycle_transition') @attr('cloud_transition') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_cloud_multiple_transition(): cloud_sc = get_cloud_storage_class() if cloud_sc == None: @@ -10383,6 +10550,7 @@ def test_lifecycle_cloud_multiple_transition(): @attr('lifecycle_transition') @attr('cloud_transition') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_noncur_cloud_transition(): cloud_sc = get_cloud_storage_class() if cloud_sc == None: @@ -10474,6 +10642,7 @@ def test_lifecycle_noncur_cloud_transition(): @attr('lifecycle_transition') @attr('cloud_transition') @attr('fails_on_aws') +@attr('fails_on_dbstore') def test_lifecycle_cloud_transition_large_obj(): cloud_sc = get_cloud_storage_class() if cloud_sc == None: @@ -10528,6 +10697,7 @@ def test_lifecycle_cloud_transition_large_obj(): @attr(operation='Test SSE-C encrypted transfer 1 byte') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_encrypted_transfer_1b(): _test_encryption_sse_customer_write(1) @@ -10537,6 +10707,7 @@ def test_encrypted_transfer_1b(): @attr(operation='Test SSE-C encrypted transfer 1KB') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_encrypted_transfer_1kb(): _test_encryption_sse_customer_write(1024) @@ -10546,6 +10717,7 @@ def test_encrypted_transfer_1kb(): @attr(operation='Test SSE-C encrypted transfer 1MB') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_encrypted_transfer_1MB(): _test_encryption_sse_customer_write(1024*1024) @@ -10555,6 +10727,7 @@ def test_encrypted_transfer_1MB(): @attr(operation='Test SSE-C encrypted transfer 13 bytes') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_encrypted_transfer_13b(): _test_encryption_sse_customer_write(13) @@ -10777,6 +10950,7 @@ def _check_content_using_range_enc(client, bucket_name, key, data, step, enc_hea @attr(assertion='successful') @attr('encryption') @attr('fails_on_aws') # allow-unordered is a non-standard extension +@attr('fails_on_dbstore') def test_encryption_sse_c_multipart_upload(): bucket_name = get_new_bucket() client = get_client() @@ -10889,6 +11063,7 @@ def test_encryption_sse_c_multipart_invalid_chunks_2(): @attr(operation='complete multi-part upload and download with bad key') @attr(assertion='successful') @attr('encryption') +@attr('fails_on_dbstore') def test_encryption_sse_c_multipart_bad_download(): bucket_name = get_new_bucket() client = get_client() @@ -10941,6 +11116,7 @@ def test_encryption_sse_c_multipart_bad_download(): @attr(operation='authenticated browser based upload via POST request') @attr(assertion='succeeds and returns written data') @attr('encryption') +@attr('fails_on_dbstore') def test_encryption_sse_c_post_object_authenticated_request(): bucket_name = get_new_bucket() client = get_client() @@ -10995,6 +11171,7 @@ def test_encryption_sse_c_post_object_authenticated_request(): @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def _test_sse_kms_customer_write(file_size, key_id = 'testkey-1'): """ Tests Create a file of A's, use it to set_contents_from_file. @@ -11027,6 +11204,7 @@ def _test_sse_kms_customer_write(file_size, key_id = 'testkey-1'): @attr(operation='Test SSE-KMS encrypted does perform head properly') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_method_head(): kms_keyid = get_main_kms_keyid() bucket_name = get_new_bucket() @@ -11057,6 +11235,7 @@ def test_sse_kms_method_head(): @attr(operation='write encrypted with SSE-KMS and read without SSE-KMS') @attr(assertion='operation success') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_present(): kms_keyid = get_main_kms_keyid() bucket_name = get_new_bucket() @@ -11081,6 +11260,7 @@ def test_sse_kms_present(): @attr(operation='declare SSE-KMS but do not provide key_id') @attr(assertion='operation fails') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_no_key(): bucket_name = get_new_bucket() client = get_client() @@ -11101,6 +11281,7 @@ def test_sse_kms_no_key(): @attr(operation='Do not declare SSE-KMS but provide key_id') @attr(assertion='operation successfull, no encryption') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_not_declared(): bucket_name = get_new_bucket() client = get_client() @@ -11122,6 +11303,7 @@ def test_sse_kms_not_declared(): @attr(operation='complete KMS multi-part upload') @attr(assertion='successful') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_multipart_upload(): kms_keyid = get_main_kms_keyid() bucket_name = get_new_bucket() @@ -11172,6 +11354,7 @@ def test_sse_kms_multipart_upload(): @attr(operation='multipart KMS upload with bad key_id for uploading chunks') @attr(assertion='successful') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_multipart_invalid_chunks_1(): kms_keyid = get_main_kms_keyid() kms_keyid2 = get_secondary_kms_keyid() @@ -11202,6 +11385,7 @@ def test_sse_kms_multipart_invalid_chunks_1(): @attr(operation='multipart KMS upload with unexistent key_id for chunks') @attr(assertion='successful') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_multipart_invalid_chunks_2(): kms_keyid = get_main_kms_keyid() bucket_name = get_new_bucket() @@ -11231,6 +11415,7 @@ def test_sse_kms_multipart_invalid_chunks_2(): @attr(operation='authenticated KMS browser based upload via POST request') @attr(assertion='succeeds and returns written data') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_post_object_authenticated_request(): kms_keyid = get_main_kms_keyid() bucket_name = get_new_bucket() @@ -11280,6 +11465,7 @@ def test_sse_kms_post_object_authenticated_request(): @attr(operation='Test SSE-KMS encrypted transfer 1 byte') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_transfer_1b(): kms_keyid = get_main_kms_keyid() if kms_keyid is None: @@ -11292,6 +11478,7 @@ def test_sse_kms_transfer_1b(): @attr(operation='Test SSE-KMS encrypted transfer 1KB') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_transfer_1kb(): kms_keyid = get_main_kms_keyid() if kms_keyid is None: @@ -11304,6 +11491,7 @@ def test_sse_kms_transfer_1kb(): @attr(operation='Test SSE-KMS encrypted transfer 1MB') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_transfer_1MB(): kms_keyid = get_main_kms_keyid() if kms_keyid is None: @@ -11316,6 +11504,7 @@ def test_sse_kms_transfer_1MB(): @attr(operation='Test SSE-KMS encrypted transfer 13 bytes') @attr(assertion='success') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_transfer_13b(): kms_keyid = get_main_kms_keyid() if kms_keyid is None: @@ -11328,6 +11517,7 @@ def test_sse_kms_transfer_13b(): @attr(operation='write encrypted with SSE-KMS and read with SSE-KMS') @attr(assertion='operation fails') @attr('encryption') +@attr('fails_on_dbstore') def test_sse_kms_read_declare(): bucket_name = get_new_bucket() client = get_client() @@ -11747,6 +11937,7 @@ def _make_random_string(size): @attr(operation='Test Get/PutObjTagging output') @attr(assertion='success') @attr('tagging') +@attr('fails_on_dbstore') def test_get_obj_tagging(): key = 'testputtags' bucket_name = _create_key_with_random_content(key) @@ -11784,6 +11975,7 @@ def test_get_obj_head_tagging(): @attr(operation='Test Put max allowed tags') @attr(assertion='success') @attr('tagging') +@attr('fails_on_dbstore') def test_put_max_tags(): key = 'testputmaxtags' bucket_name = _create_key_with_random_content(key) @@ -11897,6 +12089,7 @@ def test_put_excess_val_tags(): @attr(operation='Test PUT modifies existing tags') @attr(assertion='success') @attr('tagging') +@attr('fails_on_dbstore') def test_put_modify_tags(): key = 'testputmodifytags' bucket_name = _create_key_with_random_content(key) @@ -11930,6 +12123,7 @@ def test_put_modify_tags(): @attr(operation='Test Delete tags') @attr(assertion='success') @attr('tagging') +@attr('fails_on_dbstore') def test_put_delete_tags(): key = 'testputmodifytags' bucket_name = _create_key_with_random_content(key) @@ -11953,6 +12147,7 @@ def test_put_delete_tags(): @attr(operation='anonymous browser based upload via POST request') @attr('tagging') @attr(assertion='succeeds and returns written data') +@attr('fails_on_dbstore') def test_post_object_tags_anonymous_request(): bucket_name = get_new_bucket_name() client = get_client() @@ -12038,6 +12233,7 @@ def test_post_object_tags_authenticated_request(): @attr(operation='Test PutObj with tagging headers') @attr(assertion='success') @attr('tagging') +@attr('fails_on_dbstore') def test_put_obj_with_tags(): bucket_name = get_new_bucket() client = get_client() @@ -12074,6 +12270,7 @@ def _make_arn_resource(path="*"): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_get_tags_acl_public(): key = 'testputtagsacl' bucket_name = _create_key_with_random_content(key) @@ -12100,6 +12297,7 @@ def test_get_tags_acl_public(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_put_tags_acl_public(): key = 'testputtagsacl' bucket_name = _create_key_with_random_content(key) @@ -12234,6 +12432,7 @@ def test_versioning_bucket_multipart_upload_return_version_id(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_get_obj_existing_tag(): bucket_name = _create_objects(keys=['publictag', 'privatetag', 'invalidtag']) client = get_client() @@ -12292,6 +12491,7 @@ def test_bucket_policy_get_obj_existing_tag(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_get_obj_tagging_existing_tag(): bucket_name = _create_objects(keys=['publictag', 'privatetag', 'invalidtag']) client = get_client() @@ -12357,6 +12557,7 @@ def test_bucket_policy_get_obj_tagging_existing_tag(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_put_obj_tagging_existing_tag(): bucket_name = _create_objects(keys=['publictag', 'privatetag', 'invalidtag']) client = get_client() @@ -12429,6 +12630,7 @@ def test_bucket_policy_put_obj_tagging_existing_tag(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_put_obj_copy_source(): bucket_name = _create_objects(keys=['public/foo', 'public/bar', 'private/foo']) client = get_client() @@ -12479,6 +12681,7 @@ def test_bucket_policy_put_obj_copy_source(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_put_obj_copy_source_meta(): src_bucket_name = _create_objects(keys=['public/foo', 'public/bar']) client = get_client() @@ -12577,6 +12780,7 @@ def test_bucket_policy_put_obj_acl(): @attr(operation='Test put obj with amz-grant back to bucket-owner') @attr(assertion='success') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_put_obj_grant(): bucket_name = get_new_bucket() @@ -12734,6 +12938,7 @@ def test_bucket_policy_put_obj_request_obj_tag(): @attr(assertion='success') @attr('tagging') @attr('bucket-policy') +@attr('fails_on_dbstore') def test_bucket_policy_get_obj_acl_existing_tag(): bucket_name = _create_objects(keys=['publictag', 'privatetag', 'invalidtag']) client = get_client() @@ -12797,6 +13002,7 @@ def test_bucket_policy_get_obj_acl_existing_tag(): @attr(operation='Test put object lock with defalut retention') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_lock(): bucket_name = get_new_bucket_name() client = get_client() @@ -12834,6 +13040,7 @@ def test_object_lock_put_obj_lock(): @attr(operation='Test put object lock with bucket object lock not enabled') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_lock_invalid_bucket(): bucket_name = get_new_bucket_name() client = get_client() @@ -12856,6 +13063,7 @@ def test_object_lock_put_obj_lock_invalid_bucket(): @attr(operation='Test put object lock with days and years') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_lock_with_days_and_years(): bucket_name = get_new_bucket_name() client = get_client() @@ -12879,6 +13087,7 @@ def test_object_lock_put_obj_lock_with_days_and_years(): @attr(operation='Test put object lock with invalid days') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_lock_invalid_days(): bucket_name = get_new_bucket_name() client = get_client() @@ -12901,6 +13110,7 @@ def test_object_lock_put_obj_lock_invalid_days(): @attr(operation='Test put object lock with invalid years') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_lock_invalid_years(): bucket_name = get_new_bucket_name() client = get_client() @@ -12923,6 +13133,7 @@ def test_object_lock_put_obj_lock_invalid_years(): @attr(operation='Test put object lock with invalid mode') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_lock_invalid_years(): bucket_name = get_new_bucket_name() client = get_client() @@ -12957,6 +13168,7 @@ attr(resource='bucket') @attr(operation='Test put object lock with invalid status') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_lock_invalid_status(): bucket_name = get_new_bucket_name() client = get_client() @@ -12979,6 +13191,7 @@ attr(resource='bucket') @attr(operation='Test suspend versioning when object lock enabled') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_suspend_versioning(): bucket_name = get_new_bucket_name() client = get_client() @@ -12994,6 +13207,7 @@ def test_object_lock_suspend_versioning(): @attr(operation='Test get object lock') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_obj_lock(): bucket_name = get_new_bucket_name() client = get_client() @@ -13017,6 +13231,7 @@ def test_object_lock_get_obj_lock(): @attr(operation='Test get object lock with bucket object lock not enabled') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_obj_lock_invalid_bucket(): bucket_name = get_new_bucket_name() client = get_client() @@ -13032,6 +13247,7 @@ def test_object_lock_get_obj_lock_invalid_bucket(): @attr(operation='Test put object retention') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention(): bucket_name = get_new_bucket_name() client = get_client() @@ -13051,6 +13267,7 @@ def test_object_lock_put_obj_retention(): @attr(operation='Test put object retention with bucket object lock not enabled') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention_invalid_bucket(): bucket_name = get_new_bucket_name() client = get_client() @@ -13069,6 +13286,7 @@ def test_object_lock_put_obj_retention_invalid_bucket(): @attr(operation='Test put object retention with invalid mode') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention_invalid_mode(): bucket_name = get_new_bucket_name() client = get_client() @@ -13093,6 +13311,7 @@ def test_object_lock_put_obj_retention_invalid_mode(): @attr(operation='Test get object retention') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_obj_retention(): bucket_name = get_new_bucket_name() client = get_client() @@ -13112,6 +13331,7 @@ def test_object_lock_get_obj_retention(): @attr(operation='Test object retention date formatting') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_obj_retention_iso8601(): bucket_name = get_new_bucket_name() client = get_client() @@ -13134,6 +13354,7 @@ def test_object_lock_get_obj_retention_iso8601(): @attr(operation='Test get object retention with invalid bucket') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_obj_retention_invalid_bucket(): bucket_name = get_new_bucket_name() client = get_client() @@ -13151,6 +13372,7 @@ def test_object_lock_get_obj_retention_invalid_bucket(): @attr(operation='Test put object retention with version id') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention_versionid(): bucket_name = get_new_bucket_name() client = get_client() @@ -13171,6 +13393,7 @@ def test_object_lock_put_obj_retention_versionid(): @attr(operation='Test put object retention to override default retention') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention_override_default_retention(): bucket_name = get_new_bucket_name() client = get_client() @@ -13200,6 +13423,7 @@ def test_object_lock_put_obj_retention_override_default_retention(): @attr(operation='Test put object retention to increase retention period') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention_increase_period(): bucket_name = get_new_bucket_name() client = get_client() @@ -13221,6 +13445,7 @@ def test_object_lock_put_obj_retention_increase_period(): @attr(operation='Test put object retention to shorten period') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention_shorten_period(): bucket_name = get_new_bucket_name() client = get_client() @@ -13243,6 +13468,7 @@ def test_object_lock_put_obj_retention_shorten_period(): @attr(operation='Test put object retention to shorten period with bypass header') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_obj_retention_shorten_period_bypass(): bucket_name = get_new_bucket_name() client = get_client() @@ -13264,6 +13490,7 @@ def test_object_lock_put_obj_retention_shorten_period_bypass(): @attr(operation='Test delete object with retention') @attr(assertion='retention period make effects') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_delete_object_with_retention(): bucket_name = get_new_bucket_name() client = get_client() @@ -13287,6 +13514,7 @@ def test_object_lock_delete_object_with_retention(): @attr(operation='Test multi-delete object with retention') @attr(assertion='retention period make effects') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_multi_delete_object_with_retention(): bucket_name = get_new_bucket_name() client = get_client() @@ -13358,6 +13586,7 @@ def test_object_lock_multi_delete_object_with_retention(): @attr(operation='Test put legal hold') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_legal_hold(): bucket_name = get_new_bucket_name() client = get_client() @@ -13376,6 +13605,7 @@ def test_object_lock_put_legal_hold(): @attr(operation='Test put legal hold with invalid bucket') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_legal_hold_invalid_bucket(): bucket_name = get_new_bucket_name() client = get_client() @@ -13394,6 +13624,7 @@ def test_object_lock_put_legal_hold_invalid_bucket(): @attr(operation='Test put legal hold with invalid status') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_put_legal_hold_invalid_status(): bucket_name = get_new_bucket_name() client = get_client() @@ -13412,6 +13643,7 @@ def test_object_lock_put_legal_hold_invalid_status(): @attr(operation='Test get legal hold') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_legal_hold(): bucket_name = get_new_bucket_name() client = get_client() @@ -13433,6 +13665,7 @@ def test_object_lock_get_legal_hold(): @attr(operation='Test get legal hold with invalid bucket') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_legal_hold_invalid_bucket(): bucket_name = get_new_bucket_name() client = get_client() @@ -13450,6 +13683,7 @@ def test_object_lock_get_legal_hold_invalid_bucket(): @attr(operation='Test delete object with legal hold on') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_delete_object_with_legal_hold_on(): bucket_name = get_new_bucket_name() client = get_client() @@ -13469,6 +13703,7 @@ def test_object_lock_delete_object_with_legal_hold_on(): @attr(operation='Test delete object with legal hold off') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_delete_object_with_legal_hold_off(): bucket_name = get_new_bucket_name() client = get_client() @@ -13485,6 +13720,7 @@ def test_object_lock_delete_object_with_legal_hold_off(): @attr(operation='Test get object metadata') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_get_obj_metadata(): bucket_name = get_new_bucket_name() client = get_client() @@ -13509,6 +13745,7 @@ def test_object_lock_get_obj_metadata(): @attr(operation='Test put legal hold and retention when uploading object') @attr(assertion='success') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_uploading_obj(): bucket_name = get_new_bucket_name() client = get_client() @@ -13529,6 +13766,7 @@ def test_object_lock_uploading_obj(): @attr(operation='Test changing object retention mode from GOVERNANCE to COMPLIANCE with bypass') @attr(assertion='succeeds') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_changing_mode_from_governance_with_bypass(): bucket_name = get_new_bucket_name() key = 'file1' @@ -13547,6 +13785,7 @@ def test_object_lock_changing_mode_from_governance_with_bypass(): @attr(operation='Test changing object retention mode from GOVERNANCE to COMPLIANCE without bypass') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_changing_mode_from_governance_without_bypass(): bucket_name = get_new_bucket_name() key = 'file1' @@ -13568,6 +13807,7 @@ def test_object_lock_changing_mode_from_governance_without_bypass(): @attr(operation='Test changing object retention mode from COMPLIANCE to GOVERNANCE') @attr(assertion='fails') @attr('object-lock') +@attr('fails_on_dbstore') def test_object_lock_changing_mode_from_compliance(): bucket_name = get_new_bucket_name() key = 'file1' @@ -13588,6 +13828,7 @@ def test_object_lock_changing_mode_from_compliance(): @attr(method='copy') @attr(operation='copy w/ x-amz-copy-source-if-match: the latest ETag') @attr(assertion='succeeds') +@attr('fails_on_dbstore') def test_copy_object_ifmatch_good(): bucket_name = get_new_bucket() client = get_client() @@ -13634,6 +13875,7 @@ def test_copy_object_ifnonematch_good(): @attr(method='copy') @attr(operation='copy w/ x-amz-copy-source-if-none-match: bogus ETag') @attr(assertion='succeeds') +@attr('fails_on_dbstore') def test_copy_object_ifnonematch_failed(): bucket_name = get_new_bucket() client = get_client() @@ -13663,6 +13905,7 @@ def test_object_read_unreadable(): @attr(operation='Test User Policy') @attr(assertion='succeeds') @attr('user-policy') +@attr('fails_on_dbstore') def test_user_policy(): client = get_tenant_iam_client() @@ -13957,6 +14200,7 @@ def test_block_public_policy(): @attr(operation='ignore public acls on canned acls') @attr(assertion='succeeds') @attr('policy_status') +@attr('fails_on_dbstore') def test_ignore_public_acls(): bucket_name = get_new_bucket() client = get_client() diff --git a/s3tests_boto3/functional/test_sts.py b/s3tests_boto3/functional/test_sts.py index bf08be1..dce1712 100644 --- a/s3tests_boto3/functional/test_sts.py +++ b/s3tests_boto3/functional/test_sts.py @@ -154,6 +154,7 @@ def get_s3_resource_using_iam_creds(): @attr(operation='check') @attr(assertion='s3 ops only accessible by temporary credentials') @attr('test_of_sts') +@attr('fails_on_dbstore') def test_get_session_token(): iam_client=get_iam_client() sts_client=get_sts_client() @@ -187,6 +188,7 @@ def test_get_session_token(): @attr(operation='check') @attr(assertion='s3 ops denied by permanent credentials') @attr('test_of_sts') +@attr('fails_on_dbstore') def test_get_session_token_permanent_creds_denied(): s3bucket_error=None iam_client=get_iam_client() @@ -223,6 +225,7 @@ def test_get_session_token_permanent_creds_denied(): @attr(operation='check') @attr(assertion='role policy allows all s3 ops') @attr('test_of_sts') +@attr('fails_on_dbstore') def test_assume_role_allow(): iam_client=get_iam_client() sts_client=get_sts_client() @@ -259,6 +262,7 @@ def test_assume_role_allow(): @attr(operation='check') @attr(assertion='role policy denies all s3 ops') @attr('test_of_sts') +@attr('fails_on_dbstore') def test_assume_role_deny(): s3bucket_error=None iam_client=get_iam_client() @@ -297,6 +301,7 @@ def test_assume_role_deny(): @attr(operation='check') @attr(assertion='creds expire so all s3 ops fails') @attr('test_of_sts') +@attr('fails_on_dbstore') def test_assume_role_creds_expiry(): iam_client=get_iam_client() sts_client=get_sts_client() @@ -335,6 +340,7 @@ def test_assume_role_creds_expiry(): @attr(operation='check') @attr(assertion='HEAD fails with 403 when role policy denies s3:ListBucket') @attr('test_of_sts') +@attr('fails_on_dbstore') def test_assume_role_deny_head_nonexistent(): # create a bucket with the normal s3 client bucket_name = get_new_bucket_name() @@ -376,6 +382,7 @@ def test_assume_role_deny_head_nonexistent(): @attr(operation='check') @attr(assertion='HEAD fails with 404 when role policy allows s3:ListBucket') @attr('test_of_sts') +@attr('fails_on_dbstore') def test_assume_role_allow_head_nonexistent(): # create a bucket with the normal s3 client bucket_name = get_new_bucket_name() @@ -419,6 +426,7 @@ def test_assume_role_allow_head_nonexistent(): @attr(assertion='assuming role through web token') @attr('webidentity_test') @attr('token_claims_trust_policy_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity(): check_webidentity() iam_client=get_iam_client() @@ -522,6 +530,7 @@ def test_assume_role_with_web_identity_invalid_webtoken(): @attr(assertion='checking session policy working for two different buckets') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_check_on_different_buckets(): check_webidentity() iam_client=get_iam_client() @@ -594,6 +603,7 @@ def test_session_policy_check_on_different_buckets(): @attr(assertion='checking session policy working for same bucket') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_check_on_same_bucket(): check_webidentity() iam_client=get_iam_client() @@ -654,6 +664,7 @@ def test_session_policy_check_on_same_bucket(): @attr(assertion='checking put_obj op denial') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_check_put_obj_denial(): check_webidentity() iam_client=get_iam_client() @@ -719,6 +730,7 @@ def test_session_policy_check_put_obj_denial(): @attr(assertion='checking put_obj working by swapping policies') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_swapping_role_policy_and_session_policy(): check_webidentity() iam_client=get_iam_client() @@ -779,6 +791,7 @@ def test_swapping_role_policy_and_session_policy(): @attr(assertion='checking put_obj working by setting different permissions to role and session policy') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_check_different_op_permissions(): check_webidentity() iam_client=get_iam_client() @@ -844,6 +857,7 @@ def test_session_policy_check_different_op_permissions(): @attr(assertion='checking op behaviour with deny effect') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_check_with_deny_effect(): check_webidentity() iam_client=get_iam_client() @@ -908,6 +922,7 @@ def test_session_policy_check_with_deny_effect(): @attr(assertion='checking put_obj working with deny and allow on same op') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_check_with_deny_on_same_op(): check_webidentity() iam_client=get_iam_client() @@ -972,6 +987,7 @@ def test_session_policy_check_with_deny_on_same_op(): @attr(assertion='checking op when bucket policy has role arn') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_bucket_policy_role_arn(): check_webidentity() iam_client=get_iam_client() @@ -1051,6 +1067,7 @@ def test_session_policy_bucket_policy_role_arn(): @attr(assertion='checking op when bucket policy has session arn') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_bucket_policy_session_arn(): check_webidentity() iam_client=get_iam_client() @@ -1128,6 +1145,7 @@ def test_session_policy_bucket_policy_session_arn(): @attr(assertion='checking copy object op with role, session and bucket policy') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_copy_object(): check_webidentity() iam_client=get_iam_client() @@ -1212,6 +1230,7 @@ def test_session_policy_copy_object(): @attr(assertion='checking op is denied when no role policy') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_no_bucket_role_policy(): check_webidentity() iam_client=get_iam_client() @@ -1267,6 +1286,7 @@ def test_session_policy_no_bucket_role_policy(): @attr(assertion='checking op is denied when resource policy denies') @attr('webidentity_test') @attr('session_policy') +@attr('fails_on_dbstore') def test_session_policy_bucket_policy_deny(): check_webidentity() iam_client=get_iam_client() @@ -1344,6 +1364,7 @@ def test_session_policy_bucket_policy_deny(): @attr(assertion='assuming role using web token using sub in trust policy') @attr('webidentity_test') @attr('token_claims_trust_policy_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_with_sub(): check_webidentity() iam_client=get_iam_client() @@ -1396,6 +1417,7 @@ def test_assume_role_with_web_identity_with_sub(): @attr(assertion='assuming role using web token using azp in trust policy') @attr('webidentity_test') @attr('token_claims_trust_policy_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_with_azp(): check_webidentity() iam_client=get_iam_client() @@ -1449,6 +1471,7 @@ def test_assume_role_with_web_identity_with_azp(): @attr('webidentity_test') @attr('abac_test') @attr('token_request_tag_trust_policy_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_with_request_tag(): check_webidentity() iam_client=get_iam_client() @@ -1501,6 +1524,7 @@ def test_assume_role_with_web_identity_with_request_tag(): @attr('webidentity_test') @attr('abac_test') @attr('token_principal_tag_role_policy_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_with_principal_tag(): check_webidentity() iam_client=get_iam_client() @@ -1553,6 +1577,7 @@ def test_assume_role_with_web_identity_with_principal_tag(): @attr('webidentity_test') @attr('abac_test') @attr('token_principal_tag_role_policy_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_for_all_values(): check_webidentity() iam_client=get_iam_client() @@ -1605,6 +1630,7 @@ def test_assume_role_with_web_identity_for_all_values(): @attr('webidentity_test') @attr('abac_test') @attr('token_principal_tag_role_policy_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_for_all_values_deny(): check_webidentity() iam_client=get_iam_client() @@ -1659,6 +1685,7 @@ def test_assume_role_with_web_identity_for_all_values_deny(): @attr('webidentity_test') @attr('abac_test') @attr('token_tag_keys_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_tag_keys_trust_policy(): check_webidentity() iam_client=get_iam_client() @@ -1711,6 +1738,7 @@ def test_assume_role_with_web_identity_tag_keys_trust_policy(): @attr('webidentity_test') @attr('abac_test') @attr('token_tag_keys_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_tag_keys_role_policy(): check_webidentity() iam_client=get_iam_client() @@ -1763,6 +1791,7 @@ def test_assume_role_with_web_identity_tag_keys_role_policy(): @attr('webidentity_test') @attr('abac_test') @attr('token_resource_tags_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_resource_tag(): check_webidentity() iam_client=get_iam_client() @@ -1825,6 +1854,7 @@ def test_assume_role_with_web_identity_resource_tag(): @attr('webidentity_test') @attr('abac_test') @attr('token_resource_tags_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_resource_tag_deny(): check_webidentity() iam_client=get_iam_client() @@ -1887,6 +1917,7 @@ def test_assume_role_with_web_identity_resource_tag_deny(): @attr('webidentity_test') @attr('abac_test') @attr('token_resource_tags_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_wrong_resource_tag_deny(): check_webidentity() iam_client=get_iam_client() @@ -1952,6 +1983,7 @@ def test_assume_role_with_web_identity_wrong_resource_tag_deny(): @attr('webidentity_test') @attr('abac_test') @attr('token_resource_tags_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_resource_tag_princ_tag(): check_webidentity() iam_client=get_iam_client() @@ -2019,6 +2051,7 @@ def test_assume_role_with_web_identity_resource_tag_princ_tag(): @attr('webidentity_test') @attr('abac_test') @attr('token_resource_tags_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_resource_tag_copy_obj(): check_webidentity() iam_client=get_iam_client() @@ -2113,6 +2146,7 @@ def test_assume_role_with_web_identity_resource_tag_copy_obj(): @attr('webidentity_test') @attr('abac_test') @attr('token_role_tags_test') +@attr('fails_on_dbstore') def test_assume_role_with_web_identity_role_resource_tag(): check_webidentity() iam_client=get_iam_client()