From e54a9c9e6c4817f875d53a8f6789556dd1151e98 Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Wed, 9 Oct 2024 17:21:21 +0300 Subject: [PATCH 1/3] [#2] Support verbose flag and include Signed-off-by: Denis Kirillov --- cmd/parser/modules/compatibility.go | 50 +++++++++++++------ internal/s3/structure.go | 1 + .../templates/resources/txt-template.gotmpl | 6 ++- 3 files changed, 41 insertions(+), 16 deletions(-) diff --git a/cmd/parser/modules/compatibility.go b/cmd/parser/modules/compatibility.go index 379da61..3fe3bc0 100644 --- a/cmd/parser/modules/compatibility.go +++ b/cmd/parser/modules/compatibility.go @@ -27,6 +27,7 @@ s3-tests-parser compatibility suite.json --format json --output-format md --outp type ( Results struct { + Verbose bool Legend []Status TagGroups []TagGroup } @@ -42,11 +43,13 @@ type ( } TestResult struct { - Color string - Name string - Comment string - Passed int - Total int + Color string + Name string + Comment string + Passed int + Total int + FailedTests []string + PassedTests []string } ) @@ -54,12 +57,14 @@ const ( formatFlag = "format" outputFlag = "output" outputFormatFlag = "output-format" + verboseFlag = "verbose" ) func initCompatibilityCmd() { compatibilityCmd.Flags().String(formatFlag, "csv", "format of input test suite file") compatibilityCmd.Flags().String(outputFlag, "", "file to write output, if missed the stdout is used") compatibilityCmd.Flags().String(outputFormatFlag, "txt", "format of output") + compatibilityCmd.Flags().Bool(verboseFlag, false, "produce additional info") } func runCompatibilityCmd(cmd *cobra.Command, args []string) error { @@ -78,6 +83,7 @@ func runCompatibilityCmd(cmd *cobra.Command, args []string) error { } res := formResults(testStruct, testsMap) + res.Verbose = viper.GetBool(verboseFlag) return printResults(cmd, res) } @@ -96,7 +102,7 @@ var legend = []Status{ }, { Color: templates.BlueColor, - Description: "Not supported yet, but will be in future", + Description: "Not supported", }, { Color: templates.BlackColor, @@ -106,12 +112,21 @@ var legend = []Status{ func formResults(testStruct s3.TestsStructure, testsMap map[string]bool) Results { tagGroups := make(map[string]TagGroup) + groupTests := make(map[string][]string) + for _, group := range testStruct.Groups { + groupTests[group.Name] = group.Tests + } + for _, group := range testStruct.Groups { tagGroup, ok := tagGroups[group.Tag] if !ok { tagGroup.Name = group.Tag } + for _, n := range group.Include { + group.Tests = append(group.Tests, groupTests[n]...) + } + tagGroup.Tests = append(tagGroup.Tests, formTestResult(group, testsMap)) tagGroups[group.Tag] = tagGroup } @@ -130,16 +145,19 @@ func formResults(testStruct s3.TestsStructure, testsMap map[string]bool) Results func formTestResult(group s3.Group, testsMap map[string]bool) TestResult { ln := len(group.Tests) - pass := 0 + var failed []string + var passed []string for _, test := range group.Tests { if testsMap[test] { - pass++ + passed = append(passed, test) + } else { + failed = append(failed, test) } } var color string - if strings.Contains(group.Comment, "Not supported yet") { + if strings.Contains(group.Comment, "Not supported") { color = templates.BlueColor } else if strings.Contains(group.Comment, "Not applicable") { color = templates.BlackColor @@ -147,7 +165,7 @@ func formTestResult(group s3.Group, testsMap map[string]bool) TestResult { if color == "" { color = templates.RedColor - rate := float64(pass) / float64(ln) + rate := float64(len(passed)) / float64(ln) if rate > 0.9 { color = templates.GreenColor } else if rate > 0.5 { @@ -156,11 +174,13 @@ func formTestResult(group s3.Group, testsMap map[string]bool) TestResult { } return TestResult{ - Color: color, - Name: group.Name, - Comment: group.Comment, - Passed: pass, - Total: ln, + Color: color, + Name: group.Name, + Comment: group.Comment, + Passed: len(passed), + Total: ln, + FailedTests: failed, + PassedTests: passed, } } diff --git a/internal/s3/structure.go b/internal/s3/structure.go index f333156..15bf59c 100644 --- a/internal/s3/structure.go +++ b/internal/s3/structure.go @@ -19,6 +19,7 @@ type Group struct { Skip bool `json:"skip"` Comment string `json:"comment"` Tests []string `json:"tests"` + Include []string `json:"include"` } func ParseTestsStruct() (TestsStructure, error) { diff --git a/internal/templates/resources/txt-template.gotmpl b/internal/templates/resources/txt-template.gotmpl index 63d6cfe..5a1e75d 100644 --- a/internal/templates/resources/txt-template.gotmpl +++ b/internal/templates/resources/txt-template.gotmpl @@ -1,6 +1,10 @@ # S3 Protocol Compatibility +{{$verbose := .Verbose}} {{range .TagGroups}} ## {{.Name}} {{range .Tests}} -{{colorToTerminal .Color}}{{.Name}}: {{.Passed}}/{{.Total}}; {{.Comment}} {{colorToTerminal "black"}} {{end}} +{{colorToTerminal .Color}}{{.Name}}: {{.Passed}}/{{.Total}}; {{.Comment}} {{colorToTerminal "black"}}{{if $verbose}} + failed: {{.FailedTests}} + passed: {{.PassedTests}} +{{end}}{{end}} {{end}} -- 2.45.2 From a7ca907332d9978f2d61fd5e2683a710c4b44d53 Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Tue, 8 Oct 2024 16:52:55 +0300 Subject: [PATCH 2/3] [#2] Correct test groups Signed-off-by: Denis Kirillov --- internal/s3/resources/tests-struct.json | 1002 +++++++---------------- 1 file changed, 312 insertions(+), 690 deletions(-) diff --git a/internal/s3/resources/tests-struct.json b/internal/s3/resources/tests-struct.json index c3e1544..6bb3efc 100644 --- a/internal/s3/resources/tests-struct.json +++ b/internal/s3/resources/tests-struct.json @@ -7,8 +7,7 @@ "test_abort_multipart_upload", "test_abort_multipart_upload_not_found", "test_atomic_multipart_upload_write", - "test_list_multipart_upload", - "test_list_multipart_upload_owner" + "test_list_multipart_upload" ], "skip": false, "comment": "" @@ -19,18 +18,14 @@ "tests": [ "test_object_copy_versioning_multipart_upload", "test_multipart_upload_empty", - "test_multipart_upload_small", - "test_multipart_upload", "test_multipart_upload_multiple_sizes", "test_multipart_upload_size_too_small", "test_multipart_upload_contents", "test_multipart_upload_overwrite_existing_object", "test_multipart_upload_missing_part", "test_multipart_upload_incorrect_etag", - "test_multipart_resend_first_finishes_last", "test_versioning_obj_create_overwrite_multipart", "test_versioning_bucket_multipart_upload_return_version_id", - "test_multipart_upload_on_a_bucket_with_policy", "test_multipart_copy_small", "test_multipart_copy_invalid_range", "test_multipart_copy_improper_range", @@ -47,15 +42,12 @@ "tag": "API", "tests": [ "test_object_copy_16m", - "test_object_copy_canned_acl", "test_object_copy_retaining_metadata", "test_object_copy_replacing_metadata", "test_object_copy_versioned_bucket", "test_object_copy_versioned_url_encoding", "test_object_copy_versioning_multipart_upload", "test_versioning_copy_obj_version", - "test_bucket_policy_put_obj_copy_source", - "test_bucket_policy_put_obj_copy_source_meta", "test_copy_object_ifmatch_good", "test_copy_object_ifmatch_failed", "test_copy_object_ifnonematch_good", @@ -64,10 +56,10 @@ "test_object_copy_same_bucket", "test_object_copy_verify_contenttype", "test_object_copy_diff_bucket", - "test_object_copy_not_owned_object_bucket", "test_object_copy_to_itself", "test_object_copy_to_itself_with_metadata", - "test_object_copy_not_owned_bucket", + "test_bucket_policy_put_obj_copy_source", + "test_bucket_policy_put_obj_copy_source_meta", "test_object_copy_bucket_not_found", "test_object_copy_key_not_found" ], @@ -78,56 +70,19 @@ "name": "CreateBucket", "tag": "API", "tests": [ - "test_bucket_list_empty", - "test_bucket_create_delete", - "test_bucket_list_distinct", "test_bucket_create_contentlength_none", - "test_bucket_put_bad_canned_acl", - "test_bucket_create_bad_expect_mismatch", "test_bucket_create_bad_expect_empty", "test_bucket_create_bad_contentlength_empty", "test_bucket_create_bad_contentlength_negative", "test_bucket_create_bad_contentlength_none", - "test_bucket_create_bad_authorization_empty", - "test_bucket_create_bad_authorization_none", - "test_bucket_notexist", - "test_bucketv2_notexist", - "test_bucket_delete_notexist", - "test_bucket_delete_nonempty", - "test_bucket_concurrent_set_canned_acl", - "test_bucket_create_delete", - "test_bucket_head", - "test_bucket_head_notexist", - "test_bucket_head_extended", - "test_bucket_create_naming_bad_starts_nonalpha", - "test_bucket_create_naming_bad_short_empty", "test_bucket_create_naming_bad_short_one", "test_bucket_create_naming_bad_short_two", - "test_bucket_create_naming_bad_long", - "test_bucket_create_naming_good_long_60", - "test_bucket_create_naming_good_long_61", - "test_bucket_create_naming_good_long_62", "test_bucket_create_naming_good_long_63", - "test_bucket_create_naming_bad_ip", - "test_bucket_create_naming_bad_punctuation", - "test_bucket_create_naming_dns_underscore", - "test_bucket_create_naming_dns_long", - "test_bucket_create_naming_dns_dash_at_end", - "test_bucket_create_naming_dns_dot_dot", - "test_bucket_create_naming_dns_dot_dash", - "test_bucket_create_naming_dns_dash_dot", - "test_bucket_create_exists", - "test_bucket_get_location", "test_bucket_create_exists_nonowner", "test_bucket_create_naming_good_starts_alpha", "test_bucket_create_naming_good_starts_digit", "test_bucket_create_naming_good_contains_period", - "test_bucket_create_naming_good_contains_hyphen", - "test_bucket_recreate_not_overriding", - "test_bucket_create_special_key_names", - "test_bucket_policy_set_condition_operator_end_with_IfExists", - "test_buckets_create_then_list", - "test_buckets_list_ctime" + "test_bucket_create_naming_good_contains_hyphen" ], "skip": false, "comment": "" @@ -136,20 +91,15 @@ "name": "CreateMultipartUpload", "tag": "API", "tests": [ - "test_object_copy_versioning_multipart_upload", "test_multipart_upload_empty", - "test_multipart_upload_small", - "test_multipart_upload", "test_multipart_upload_multiple_sizes", "test_multipart_upload_size_too_small", "test_multipart_upload_contents", "test_multipart_upload_overwrite_existing_object", "test_multipart_upload_missing_part", "test_multipart_upload_incorrect_etag", - "test_multipart_resend_first_finishes_last", "test_versioning_obj_create_overwrite_multipart", "test_versioning_bucket_multipart_upload_return_version_id", - "test_multipart_upload_on_a_bucket_with_policy", "test_multipart_upload_resend_part", "test_multipart_copy_small", "test_multipart_copy_invalid_range", @@ -158,21 +108,7 @@ "test_multipart_copy_special_names", "test_multipart_copy_versioned", "test_multipart_copy_multiple_sizes", - "test_abort_multipart_upload", - "test_abort_multipart_upload_not_found", - "test_atomic_multipart_upload_write", - "test_list_multipart_upload", - "test_list_multipart_upload_owner", - "test_lifecycle_multipart_expiration", - "test_encryption_sse_c_multipart_upload", - "test_encryption_sse_c_unaligned_multipart_upload", - "test_encryption_sse_c_multipart_invalid_chunks_1", - "test_encryption_sse_c_multipart_invalid_chunks_2", - "test_encryption_sse_c_multipart_bad_download", - "test_sse_kms_multipart_upload", - "test_sse_kms_multipart_invalid_chunks_1", - "test_sse_kms_multipart_invalid_chunks_2", - "test_sse_s3_default_multipart_upload" + "test_atomic_multipart_upload_write" ], "skip": false, "comment": "" @@ -183,11 +119,7 @@ "tests": [ "test_bucket_delete_notexist", "test_bucket_delete_nonempty", - "test_bucket_create_delete", - "test_object_raw_get_bucket_gone", - "test_object_delete_key_bucket_gone", - "test_object_raw_authenticated_bucket_gone", - "test_atomic_write_bucket_gone" + "test_bucket_create_delete" ], "skip": false, "comment": "" @@ -202,11 +134,12 @@ { "name": "DeleteBucketCors", "tag": "API", - "tests": [ - "test_set_cors" + "tests": [], + "include": [ + "BucketCors" ], "skip": false, - "comment": "" + "comment": "See BucketCors Feature" }, { "name": "DeleteBucketEncryption", @@ -236,8 +169,11 @@ "name": "DeleteBucketLifecycle", "tag": "API", "tests": [], - "skip": true, - "comment": "Not supported yet, but will be in future" + "include": [ + "BucketLifecycle" + ], + "skip": false, + "comment": "See BucketLifecycle feature" }, { "name": "DeleteBucketMetricsConfiguration", @@ -256,12 +192,12 @@ { "name": "DeleteBucketPolicy", "tag": "API", - "tests": [ - "test_bucket_policy_acl", - "test_bucketv2_policy_acl" + "tests": [], + "include": [ + "BucketPolicy" ], - "skip": true, - "comment": "Not supported yet, but will be in future" + "skip": false, + "comment": "See BucketPolicy feature" }, { "name": "DeleteBucketReplication", @@ -273,11 +209,12 @@ { "name": "DeleteBucketTagging", "tag": "API", - "tests": [ - "test_set_bucket_tagging" + "tests": [], + "include": [ + "BucketTagging" ], "skip": false, - "comment": "" + "comment": "See BucketTagging feature" }, { "name": "DeleteBucketWebsite", @@ -290,17 +227,7 @@ "name": "DeleteObject", "tag": "API", "tests": [ - "test_object_delete_key_bucket_gone", - "test_object_lock_delete_object_with_retention", - "test_object_lock_delete_object_with_retention_and_marker", - "test_object_lock_delete_object_with_legal_hold_on", "test_object_write_read_update_read_delete", - "test_object_raw_get_bucket_gone", - "test_object_delete_key_bucket_gone", - "test_object_raw_get_object_gone", - "test_object_raw_authenticated_bucket_gone", - "test_object_raw_authenticated_object_gone", - "test_multipart_resend_first_finishes_last", "test_versioning_obj_create_read_remove_head", "test_versioning_obj_plain_null_version_removal", "test_versioning_obj_plain_null_version_overwrite", @@ -308,22 +235,7 @@ "test_versioning_obj_suspend_versions", "test_versioning_multi_object_delete_with_marker", "test_versioned_concurrent_object_create_concurrent_remove", - "test_versioned_concurrent_object_create_and_remove", - "test_lifecycle_expiration_versioning_enabled", - "test_lifecycle_deletemarker_expiration", - "test_object_lock_put_obj_retention", - "test_object_lock_get_obj_retention", - "test_object_lock_get_obj_retention_iso8601", - "test_object_lock_put_obj_retention_versionid", - "test_object_lock_put_obj_retention_override_default_retention", - "test_object_lock_put_obj_retention_increase_period", - "test_object_lock_put_obj_retention_shorten_period", - "test_object_lock_put_obj_retention_shorten_period_bypass", - "test_object_lock_delete_object_with_retention", - "test_object_lock_delete_object_with_retention_and_marker", - "test_object_lock_delete_object_with_legal_hold_off", - "test_object_lock_get_obj_metadata", - "test_object_lock_uploading_obj" + "test_versioned_concurrent_object_create_and_remove" ], "skip": false, "comment": "" @@ -332,16 +244,12 @@ "name": "DeleteObjects", "tag": "API", "tests": [ - "test_versioning_concurrent_multi_object_delete", "test_multi_object_delete", "test_multi_objectv2_delete", "test_multi_object_delete_key_limit", "test_multi_objectv2_delete_key_limit", "test_versioning_multi_object_delete", - "test_versioning_multi_object_delete_with_marker", - "test_versioning_multi_object_delete_with_marker_create", - "test_object_lock_multi_delete_object_with_retention", - "test_versioning_concurrent_multi_object_delete" + "test_versioning_multi_object_delete_with_marker" ], "skip": false, "comment": "" @@ -349,12 +257,12 @@ { "name": "DeleteObjectTagging", "tag": "API", - "tests": [ - "test_put_delete_tags", - "test_delete_tags_obj_public" + "tests": [], + "include": [ + "ObjectTagging" ], "skip": false, - "comment": "" + "comment": "See ObjectTagging feature" }, { "name": "DeletePublicAccessBlock", @@ -373,29 +281,12 @@ { "name": "GetBucketAcl", "tag": "API", - "tests": [ - "test_bucket_acl_default", - "test_bucket_acl_canned_during_create", - "test_bucket_acl_canned", - "test_bucket_acl_canned_publicreadwrite", - "test_bucket_acl_canned_authenticatedread", - "test_object_acl_canned_bucketownerread", - "test_object_acl_canned_bucketownerfullcontrol", - "test_bucket_acl_grant_userid_fullcontrol", - "test_bucket_acl_grant_nonexist_user", - "test_bucket_acl_no_grants", - "test_bucket_header_acl_grants", - "test_bucket_acl_grant_email", - "test_bucket_acl_revoke_all", - "test_bucket_acl_grant_email_not_exist", - "test_object_copy_not_owned_object_bucket", - "test_bucket_acl_grant_userid_read", - "test_bucket_acl_grant_userid_readacp", - "test_bucket_acl_grant_userid_write", - "test_bucket_acl_grant_userid_writeacp" + "tests": [], + "include": [ + "BucketACL" ], "skip": false, - "comment": "" + "comment": "See BucketACL feature" }, { "name": "GetBucketAnalyticsConfiguration", @@ -407,14 +298,12 @@ { "name": "GetBucketCors", "tag": "API", - "tests": [ - "test_set_cors", - "test_cors_origin_response", - "test_cors_origin_wildcard", - "test_cors_header_option" + "tests": [], + "include": [ + "BucketCors" ], "skip": false, - "comment": "" + "comment": "See BucketCors feature" }, { "name": "GetBucketEncryption", @@ -444,18 +333,19 @@ "name": "GetBucketLifecycle", "tag": "API", "tests": [], + "include": [], "skip": true, - "comment": "Not supported yet, but will be in future" + "comment": "Not supported. This method is deprecated by AWS. Use GetBucketLifecycleConfiguration" }, { "name": "GetBucketLifecycleConfiguration", "tag": "API", - "tests": [ - "test_lifecycle_get", - "test_lifecycle_get_no_id" + "tests": [], + "include": [ + "BucketLifecycle" ], - "skip": true, - "comment": "Not supported yet, but will be in future" + "skip": false, + "comment": "See BucketLifecycle feature" }, { "name": "GetBucketLocation", @@ -506,27 +396,19 @@ { "name": "GetBucketPolicy", "tag": "API", - "tests": [ - "test_bucket_policy_another_bucket", - "test_bucketv2_policy_another_bucket", - "test_bucket_policy_set_condition_operator_end_with_IfExists" + "tests": [], + "include": [ + "BucketPolicy" ], "skip": false, - "comment": "" + "comment": "See BucketPolicy feature" }, { "name": "GetBucketPolicyStatus", "tag": "API", - "tests": [ - "test_get_bucket_policy_status", - "test_get_public_acl_bucket_policy_status", - "test_get_authpublic_acl_bucket_policy_status", - "test_get_publicpolicy_acl_bucket_policy_status", - "test_get_nonpublicpolicy_acl_bucket_policy_status", - "test_get_nonpublicpolicy_deny_bucket_policy_status" - ], - "skip": true, - "comment": "Not supported yet, but will be in future" + "tests": [], + "skip": false, + "comment": "Party supported" }, { "name": "GetBucketReplication", @@ -545,25 +427,22 @@ { "name": "GetBucketTagging", "tag": "API", - "tests": [ - "test_set_bucket_tagging" + "tests": [], + "include": [ + "BucketTagging" ], "skip": false, - "comment": "" + "comment": "See BucketTagging feature" }, { "name": "GetBucketVersioning", "tag": "API", - "tests": [ - "test_object_lock_put_obj_lock", - "test_multipart_copy_versioned", - "test_versioning_bucket_create_suspend", - "test_versioning_obj_plain_null_version_removal", - "test_versioning_obj_plain_null_version_overwrite", - "test_versioning_obj_plain_null_version_overwrite_suspended" + "tests": [], + "include": [ + "BucketVersioning" ], "skip": false, - "comment": "" + "comment": "See BucketVersioning feature" }, { "name": "GetBucketWebsite", @@ -584,26 +463,8 @@ "test_get_object_ifmodifiedsince_failed", "test_get_object_ifunmodifiedsince_good", "test_get_object_ifunmodifiedsince_failed", - "test_put_object_ifmatch_nonexisted_failed", "test_object_read_not_exist", "test_object_requestid_matches_header_on_error", - "test_object_raw_get_bucket_gone", - "test_object_raw_get_object_gone", - "test_object_raw_get_object_acl", - "test_object_raw_authenticated_bucket_gone", - "test_object_raw_authenticated_object_gone", - "test_access_bucket_private_object_private", - "test_access_bucket_private_objectv2_private", - "test_access_bucket_private_object_publicread", - "test_access_bucket_private_objectv2_publicread", - "test_access_bucket_private_object_publicreadwrite", - "test_access_bucket_private_objectv2_publicreadwrite", - "test_access_bucket_publicread_object_private", - "test_access_bucket_publicread_object_publicread", - "test_access_bucket_publicread_object_publicreadwrite", - "test_access_bucket_publicreadwrite_object_private", - "test_access_bucket_publicreadwrite_object_publicread", - "test_access_bucket_publicreadwrite_object_publicreadwrite", "test_ranged_request_invalid_range", "test_ranged_request_empty_object", "test_ranged_request_response_code", @@ -613,25 +474,10 @@ "test_versioning_obj_plain_null_version_removal", "test_versioning_obj_plain_null_version_overwrite", "test_versioning_obj_plain_null_version_overwrite_suspended", - "test_encryption_sse_c_present", - "test_encryption_sse_c_other_key", - "test_encryption_sse_c_multipart_bad_download", - "test_sse_kms_read_declare", - "test_bucket_policy_set_condition_operator_end_with_IfExists", - "test_bucket_policy_get_obj_existing_tag", - "test_bucket_policy_get_obj_tagging_existing_tag", - "test_bucket_policy_get_obj_acl_existing_tag", - "test_object_read_unreadable", - "test_ignore_public_acls", "test_object_write_read_update_read_delete", "test_object_set_get_metadata_none_to_good", - "test_object_set_get_metadata_none_to_empty", - "test_object_set_get_metadata_overwrite_to_empty", - "test_object_set_get_unicode_metadata", "test_object_metadata_replaced_on_put", - "test_object_write_file", - "test_post_object_anonymous_request", - "test_bucket_create_special_key_names" + "test_object_write_file" ], "skip": false, "comment": "" @@ -639,32 +485,9 @@ { "name": "GetObjectAcl", "tag": "API", - "tests": [ - "test_bucket_list_return_data", - "test_bucket_list_return_data_versioning", - "test_object_acl_default", - "test_object_acl_canned_during_create", - "test_object_acl_canned", - "test_object_acl_canned_publicreadwrite", - "test_object_acl_canned_authenticatedread", - "test_object_acl_canned_bucketownerread", - "test_object_acl_canned_bucketownerfullcontrol", - "test_object_acl_full_control_verify_owner", - "test_object_acl_full_control_verify_attributes", - "test_object_copy_not_owned_object_bucket", - "test_object_acl", - "test_object_acl_write", - "test_object_acl_writeacp", - "test_object_acl_read", - "test_object_acl_readacp", - "test_object_header_acl_grants", - "test_versioned_object_acl", - "test_versioned_object_acl_no_version_specified", - "test_bucket_policy_put_obj_grant", - "test_bucket_policy_get_obj_acl_existing_tag" - ], - "skip": false, - "comment": "" + "tests": [], + "skip": true, + "comment": "Not supported" }, { "name": "GetObjectAttributes", @@ -676,59 +499,42 @@ { "name": "GetObjectLegalHold", "tag": "API", - "tests": [ - "test_object_lock_get_legal_hold", - "test_object_lock_get_legal_hold_invalid_bucket" + "tests": [], + "include": [ + "Locking" ], "skip": false, - "comment": "" + "comment": "See Locking Feature" }, { "name": "GetObjectLockConfiguration", "tag": "API", - "tests": [ - "test_object_lock_get_obj_lock", - "test_object_lock_get_obj_lock_invalid_bucket" + "tests": [], + "include": [ + "Locking" ], "skip": false, - "comment": "" + "comment": "See Locking Feature" }, { "name": "GetObjectRetention", "tag": "API", - "tests": [ - "test_object_lock_get_obj_retention", - "test_object_lock_get_obj_retention_invalid_bucket", - "test_object_lock_put_obj_retention_versionid", - "test_object_lock_put_obj_retention_override_default_retention", - "test_object_lock_put_obj_retention_increase_period", - "test_object_lock_put_obj_retention_shorten_period_bypass" + "tests": [], + "include": [ + "Locking" ], "skip": false, - "comment": "" + "comment": "See Locking Feature" }, { "name": "GetObjectTagging", "tag": "API", - "tests": [ - "test_get_obj_tagging", - "test_put_max_tags", - "test_put_excess_tags", - "test_put_max_kvsize_tags", - "test_put_excess_key_tags", - "test_put_excess_val_tags", - "test_put_modify_tags", - "test_put_delete_tags", - "test_post_object_tags_anonymous_request", - "test_put_obj_with_tags", - "test_get_tags_acl_public", - "test_put_tags_acl_public", - "test_delete_tags_obj_public", - "test_bucket_policy_get_obj_tagging_existing_tag", - "test_bucket_policy_get_obj_acl_existing_tag" + "tests": [], + "include": [ + "ObjectTagging" ], "skip": false, - "comment": "" + "comment": "See ObjectTagging feature" }, { "name": "GetObjectTorrent", @@ -752,10 +558,8 @@ "name": "HeadBucket", "tag": "API", "tests": [ - "test_head_bucket_usage", "test_bucket_head", - "test_bucket_head_notexist", - "test_bucket_head_extended" + "test_bucket_head_notexist" ], "skip": false, "comment": "" @@ -764,22 +568,10 @@ "name": "HeadObject", "tag": "API", "tests": [ - "test_bucket_list_return_data", - "test_bucket_list_return_data_versioning", "test_object_head_zero_bytes", "test_object_write_cache_control", "test_object_write_expires", - "test_object_put_acl_mtime", - "test_lifecycle_expiration_header_head", - "test_lifecycle_expiration_header_tags_head", - "test_lifecycle_expiration_header_and_tags_head", - "test_encryption_sse_c_method_head", - "test_sse_kms_method_head", - "test_get_obj_head_tagging", - "test_object_lock_get_obj_retention_iso8601", - "test_object_lock_get_obj_metadata", - "test_object_lock_uploading_obj", - "test_sse_s3_default_method_head" + "test_get_obj_head_tagging" ], "skip": false, "comment": "" @@ -816,12 +608,12 @@ "name": "ListBuckets", "tag": "API", "tests": [ - "test_account_usage", "test_buckets_create_then_list", "test_buckets_list_ctime", - "test_list_buckets_anonymous", "test_list_buckets_invalid_auth", - "test_list_buckets_bad_auth" + "test_list_buckets_bad_auth", + "test_bucket_list_empty", + "test_bucket_list_distinct" ], "skip": false, "comment": "" @@ -830,9 +622,7 @@ "name": "ListMultipartUploads", "tag": "API", "tests": [ - "test_list_multipart_upload", - "test_list_multipart_upload_owner", - "test_lifecycle_multipart_expiration" + "test_list_multipart_upload" ], "skip": false, "comment": "" @@ -841,16 +631,9 @@ "name": "ListObjects", "tag": "API", "tests": [ - "test_bucket_list_unordered", "test_bucket_list_maxkeys_invalid", "test_bucket_list_objects_anonymous_fail", "test_bucket_notexist", - "test_access_bucket_private_object_private", - "test_access_bucket_private_object_publicread", - "test_access_bucket_private_object_publicreadwrite", - "test_bucket_policy_acl", - "test_bucket_policy_acl", - "test_ignore_public_acls", "test_bucket_list_many", "test_bucket_list_delimiter_basic", "test_bucket_list_encoding_basic", @@ -882,15 +665,8 @@ "test_bucket_list_marker_unreadable", "test_bucket_list_marker_not_in_list", "test_bucket_list_marker_after_list", - "test_bucket_list_return_data", "test_bucket_list_objects_anonymous", - "test_versioning_concurrent_multi_object_delete", "test_multi_object_delete", - "test_object_put_acl_mtime", - "test_lifecycle_expiration", - "test_lifecycle_expiration_tags2", - "test_lifecycle_expiration_versioned_tags2", - "test_lifecycle_expiration_date", "test_bucket_list_delimiter_prefix", "test_bucket_list_delimiter_prefix_ends_with_delimiter", "test_bucket_list_delimiter_prefix_underscore" @@ -904,10 +680,6 @@ "tests": [ "test_bucket_listv2_objects_anonymous_fail", "test_bucketv2_notexist", - "test_access_bucket_private_objectv2_private", - "test_access_bucket_private_objectv2_publicread", - "test_access_bucket_private_objectv2_publicreadwrite", - "test_bucketv2_policy_acl", "test_bucket_listv2_many", "test_basic_key_count", "test_bucket_listv2_delimiter_basic", @@ -941,8 +713,6 @@ "test_bucket_listv2_maxkeys_one", "test_bucket_listv2_maxkeys_zero", "test_bucket_listv2_maxkeys_none", - "test_bucket_listv2_unordered", - "test_bucket_listv2_continuationtoken_empty", "test_bucket_listv2_continuationtoken", "test_bucket_listv2_both_continuationtoken_startafter", "test_bucket_listv2_startafter_unreadable", @@ -950,17 +720,9 @@ "test_bucket_listv2_startafter_after_list", "test_bucket_listv2_objects_anonymous", "test_multi_objectv2_delete", - "test_multipart_upload", "test_abort_multipart_upload", - "test_lifecyclev2_expiration", - "test_encryption_sse_c_multipart_upload", - "test_encryption_sse_c_unaligned_multipart_upload", - "test_encryption_sse_c_multipart_bad_download", "test_sse_kms_multipart_upload", - "test_bucketv2_policy", - "test_bucketv2_policy_different_tenant", - "test_bucketv2_policy_another_bucket", - "test_sse_s3_default_multipart_upload" + "test_bucketv2_policy" ], "skip": false, "comment": "" @@ -968,31 +730,12 @@ { "name": "ListObjectVersions", "tag": "API", - "tests": [ - "test_bucket_list_return_data_versioning", - "test_versioning_concurrent_multi_object_delete", - "test_object_put_acl_mtime", - "test_multipart_copy_versioned", - "test_versioning_obj_create_overwrite_multipart", - "test_versioning_obj_create_read_remove_head", - "test_versioning_obj_plain_null_version_removal", - "test_versioning_obj_plain_null_version_overwrite", - "test_versioning_obj_plain_null_version_overwrite_suspended", - "test_versioning_obj_create_overwrite_multipart", - "test_versioning_obj_list_marker", - "test_versioning_multi_object_delete", - "test_versioning_multi_object_delete_with_marker", - "test_versioning_multi_object_delete_with_marker_create", - "test_versioned_concurrent_object_create_concurrent_remove", - "test_versioned_concurrent_object_create_and_remove", - "test_lifecycle_expiration_versioning_enabled", - "test_lifecycle_noncur_expiration", - "test_lifecycle_deletemarker_expiration", - "test_versioning_bucket_atomic_upload_return_version_id", - "test_versioning_bucket_multipart_upload_return_version_id" + "tests": [], + "include": [ + "BucketVersioning" ], "skip": false, - "comment": "" + "comment": "See BucketVersioning feature" }, { "name": "ListParts", @@ -1011,48 +754,12 @@ { "name": "PutBucketAcl", "tag": "API", - "tests": [ - "test_bucket_put_bad_canned_acl", - "test_bucket_list_objects_anonymous", - "test_bucket_listv2_objects_anonymous", - "test_bucket_acl_canned", - "test_bucket_acl_canned_private_to_private", - "test_bucket_acl_grant_nonexist_user", - "test_bucket_acl_no_grants", - "test_bucket_header_acl_grants", - "test_bucket_acl_grant_email", - "test_bucket_acl_grant_email_not_exist", - "test_bucket_acl_revoke_all", - "test_object_copy_not_owned_object_bucket", - "test_list_multipart_upload_owner", - "test_100_continue", - "test_bucket_policy_acl", - "test_bucketv2_policy_acl", - "test_get_public_acl_bucket_policy_status", - "test_get_authpublic_acl_bucket_policy_status", - "test_block_public_put_bucket_acls", - "test_ignore_public_acls", - "test_bucket_concurrent_set_canned_acl", - "test_bucket_acl_grant_userid_fullcontrol", - "test_bucket_acl_grant_userid_read", - "test_bucket_acl_grant_userid_readacp", - "test_bucket_acl_grant_userid_write", - "test_bucket_acl_grant_userid_writeacp", - "test_access_bucket_private_object_private", - "test_access_bucket_private_objectv2_private", - "test_access_bucket_private_object_publicread", - "test_access_bucket_private_objectv2_publicread", - "test_access_bucket_private_object_publicreadwrite", - "test_access_bucket_private_objectv2_publicreadwrite", - "test_access_bucket_publicread_object_private", - "test_access_bucket_publicread_object_publicread", - "test_access_bucket_publicread_object_publicreadwrite", - "test_access_bucket_publicreadwrite_object_private", - "test_access_bucket_publicreadwrite_object_publicread", - "test_access_bucket_publicreadwrite_object_publicreadwrite" + "tests": [], + "include":[ + "BucketACL" ], "skip": false, - "comment": "" + "comment": "See BucketACL feature" }, { "name": "PutBucketAnalyticsConfiguration", @@ -1064,16 +771,12 @@ { "name": "PutBucketCors", "tag": "API", - "tests": [ - "test_set_cors", - "test_cors_origin_response", - "test_cors_origin_wildcard", - "test_cors_header_option", - "test_cors_presigned_get_object", - "test_cors_presigned_get_object_tenant" + "tests": [], + "include": [ + "BucketCors" ], "skip": false, - "comment": "" + "comment": "See BucketCors Feature" }, { "name": "PutBucketEncryption", @@ -1115,52 +818,19 @@ "name": "PutBucketLifecycle", "tag": "API", "tests": [], + "include": [], "skip": true, - "comment": "Not supported yet, but will be in future" + "comment": "Not supported. This method is deprecated by AWS. Use PutBucketLifecycleConfiguration" }, { "name": "PutBucketLifecycleConfiguration", "tag": "API", - "tests": [ - "test_lifecycle_set", - "test_lifecycle_expiration", - "test_lifecyclev2_expiration", - "test_lifecycle_expiration_versioning_enabled", - "test_lifecycle_expiration_tags1", - "test_lifecycle_expiration_tags2", - "test_lifecycle_expiration_versioned_tags2", - "test_lifecycle_expiration_noncur_tags1", - "test_lifecycle_id_too_long", - "test_lifecycle_same_id", - "test_lifecycle_invalid_status", - "test_lifecycle_set_date", - "test_lifecycle_set_invalid_date", - "test_lifecycle_expiration_date", - "test_lifecycle_expiration_days0", - "test_lifecycle_expiration_header_put", - "test_lifecycle_expiration_header_head", - "test_lifecycle_expiration_header_tags_head", - "test_lifecycle_expiration_header_and_tags_head", - "test_lifecycle_set_noncurrent", - "test_lifecycle_noncur_expiration", - "test_lifecycle_set_deletemarker", - "test_lifecycle_set_filter", - "test_lifecycle_set_empty_filter", - "test_lifecycle_deletemarker_expiration", - "test_lifecycle_set_multipart", - "test_lifecycle_multipart_expiration", - "test_lifecycle_transition_set_invalid_date", - "test_lifecycle_transition", - "test_lifecycle_transition_single_rule_multi_trans", - "test_lifecycle_set_noncurrent_transition", - "test_lifecycle_noncur_transition", - "test_lifecycle_cloud_transition", - "test_lifecycle_cloud_multiple_transition", - "test_lifecycle_noncur_cloud_transition", - "test_lifecycle_cloud_transition_large_obj" + "tests": [], + "include": [ + "BucketLifecycle" ], - "skip": true, - "comment": "Not supported yet, but will be in future" + "skip": false, + "comment": "See BucketLifecycle feature" }, { "name": "PutBucketLogging", @@ -1202,31 +872,12 @@ { "name": "PutBucketPolicy", "tag": "API", - "tests": [ - "test_bucket_policy", - "test_bucketv2_policy", - "test_bucket_policy_different_tenant", - "test_bucketv2_policy_different_tenant", - "test_get_tags_acl_public", - "test_put_tags_acl_public", - "test_delete_tags_obj_public", - "test_bucket_policy_get_obj_existing_tag", - "test_bucket_policy_get_obj_tagging_existing_tag", - "test_bucket_policy_put_obj_tagging_existing_tag", - "test_bucket_policy_put_obj_copy_source", - "test_bucket_policy_put_obj_copy_source_meta", - "test_bucket_policy_put_obj_acl", - "test_bucket_policy_put_obj_grant", - "test_bucket_policy_put_obj_s3_noenc", - "test_bucket_policy_put_obj_s3_kms", - "test_bucket_policy_put_obj_kms_noenc", - "test_bucket_policy_put_obj_kms_s3", - "test_bucket_policy_put_obj_request_obj_tag", - "test_bucket_policy_get_obj_acl_existing_tag", - "test_multipart_upload_on_a_bucket_with_policy" + "tests": [], + "include": [ + "BucketPolicy" ], "skip": false, - "comment": "" + "comment": "See BucketPolicy feature" }, { "name": "PutBucketReplication", @@ -1245,43 +896,22 @@ { "name": "PutBucketTagging", "tag": "API", - "tests": [ - "test_set_bucket_tagging" + "tests": [], + "include": [ + "BucketTagging" ], "skip": false, - "comment": "" + "comment": "See BucketTagging feature" }, { "name": "PutBucketVersioning", "tag": "API", - "tests": [ - "test_versioning_obj_create_read_remove", - "test_versioning_obj_create_read_remove_head", - "test_versioning_obj_suspend_versions", - "test_versioning_obj_create_versions_remove_all", - "test_versioning_obj_create_versions_remove_special_names", - "test_versioning_obj_create_overwrite_multipart", - "test_versioning_obj_list_marker", - "test_versioning_copy_obj_version", - "test_versioning_multi_object_delete", - "test_versioning_multi_object_delete_with_marker", - "test_versioning_multi_object_delete_with_marker_create", - "test_versioned_object_acl", - "test_versioned_object_acl_no_version_specified", - "test_versioned_concurrent_object_create_concurrent_remove", - "test_versioned_concurrent_object_create_and_remove", - "test_lifecycle_expiration_versioning_enabled", - "test_lifecycle_expiration_versioned_tags2", - "test_lifecycle_expiration_noncur_tags1", - "test_lifecycle_noncur_expiration", - "test_lifecycle_deletemarker_expiration", - "test_lifecycle_noncur_transition", - "test_lifecycle_noncur_cloud_transition", - "test_versioning_bucket_atomic_upload_return_version_id", - "test_versioning_bucket_multipart_upload_return_version_id" + "tests": [], + "include": [ + "BucketVersioning" ], "skip": false, - "comment": "" + "comment": "See BucketVersioning feature" }, { "name": "PutBucketWebsite", @@ -1298,46 +928,24 @@ "test_object_create_bad_md5_bad", "test_object_create_bad_md5_empty", "test_object_create_bad_md5_none", - "test_object_create_bad_expect_mismatch", "test_object_create_bad_expect_empty", "test_object_create_bad_expect_none", "test_object_create_bad_contentlength_empty", "test_object_create_bad_contentlength_negative", - "test_object_create_bad_contentlength_none", "test_object_create_bad_contenttype_invalid", "test_object_create_bad_contenttype_empty", "test_object_create_bad_contenttype_none", - "test_object_create_bad_authorization_empty", - "test_object_create_date_and_amz_date", - "test_object_create_amz_date_and_no_date", - "test_object_create_bad_authorization_none", - "test_object_acl_create_contentlength_none", "test_object_write_check_etag", "test_object_write_cache_control", "test_object_write_expires", "test_object_write_read_update_read_delete", "test_object_set_get_metadata_none_to_good", - "test_object_set_get_metadata_none_to_empty", - "test_object_set_get_metadata_none_to_empty", - "test_object_set_get_metadata_overwrite_to_empty", - "test_object_set_get_unicode_metadata", "test_object_metadata_replaced_on_put", "test_object_write_file", - "test_put_object_ifmatch_good", - "test_put_object_ifmatch_failed", - "test_put_object_ifmatch_overwrite_existed_good", - "test_put_object_ifmatch_nonexisted_failed", - "test_put_object_ifnonmatch_good", - "test_put_object_ifnonmatch_failed", - "test_put_object_ifnonmatch_nonexisted_good", - "test_put_object_ifnonmatch_overwrite_existed_failed", - "test_object_put_acl_mtime", "test_object_anon_put", "test_object_anon_put_write_access", "test_object_put_authenticated", - "test_object_raw_put_authenticated_expired", - "test_object_acl_canned_during_create", - "test_object_acl_canned" + "test_object_raw_put_authenticated_expired" ], "skip": false, "comment": "" @@ -1345,122 +953,49 @@ { "name": "PutObjectAcl", "tag": "API", - "tests": [ - "test_object_put_acl_mtime", - "test_object_acl_canned", - "test_object_acl_full_control_verify_owner", - "test_object_acl_full_control_verify_attributes", - "test_bucket_create_special_key_names", - "test_object_copy_not_owned_object_bucket", - "test_versioned_object_acl", - "test_versioned_object_acl_no_version_specified", - "test_object_acl", - "test_object_acl_write", - "test_object_acl_writeacp", - "test_object_acl_read", - "test_object_acl_readacp", - "test_access_bucket_private_object_private", - "test_access_bucket_private_objectv2_private", - "test_access_bucket_private_object_publicread", - "test_access_bucket_private_objectv2_publicread", - "test_access_bucket_private_object_publicreadwrite", - "test_access_bucket_private_objectv2_publicreadwrite", - "test_access_bucket_publicread_object_private", - "test_access_bucket_publicread_object_publicread", - "test_access_bucket_publicread_object_publicreadwrite", - "test_access_bucket_publicreadwrite_object_publicread", - "test_access_bucket_publicreadwrite_object_publicreadwrite" - ], - "skip": false, - "comment": "" + "tests": [], + "skip": true, + "comment": "Not supported" }, { "name": "PutObjectLegalHold", "tag": "API", - "tests": [ - "test_object_lock_put_legal_hold", - "test_object_lock_put_legal_hold_invalid_bucket", - "test_object_lock_put_legal_hold_invalid_status", - "test_object_lock_get_legal_hold", - "test_object_lock_delete_object_with_legal_hold_on", - "test_object_lock_delete_object_with_legal_hold_off", - "test_object_lock_get_obj_metadata", - "test_object_lock_uploading_obj" + "tests": [], + "include": [ + "Locking" ], "skip": false, - "comment": "" + "comment": "See Locking Feature" }, { "name": "PutObjectLockConfiguration", "tag": "API", - "tests": [ - "test_object_lock_put_obj_lock", - "test_object_lock_put_obj_lock_invalid_bucket", - "test_object_lock_put_obj_lock_with_days_and_years", - "test_object_lock_put_obj_lock_invalid_days", - "test_object_lock_put_obj_lock_invalid_years", - "test_object_lock_put_obj_lock_invalid_mode", - "test_object_lock_put_obj_lock_invalid_status", - "test_object_lock_get_obj_lock", - "test_object_lock_put_obj_retention_override_default_retention" + "tests": [], + "include": [ + "Locking" ], "skip": false, - "comment": "" + "comment": "See Locking Feature" }, { "name": "PutObjectRetention", "tag": "API", - "tests": [ - "test_object_lock_put_obj_retention", - "test_object_lock_put_obj_retention_invalid_bucket", - "test_object_lock_put_obj_retention_invalid_mode", - "test_object_lock_get_obj_retention", - "test_object_lock_get_obj_retention_iso8601", - "test_object_lock_put_obj_retention_versionid", - "test_object_lock_put_obj_retention_override_default_retention", - "test_object_lock_put_obj_retention_increase_period", - "test_object_lock_put_obj_retention_shorten_period", - "test_object_lock_put_obj_retention_shorten_period_bypass", - "test_object_lock_delete_object_with_retention", - "test_object_lock_delete_object_with_retention_and_marker", - "test_object_lock_multi_delete_object_with_retention", - "test_object_lock_get_obj_metadata", - "test_object_lock_changing_mode_from_governance_with_bypass", - "test_object_lock_changing_mode_from_governance_without_bypass", - "test_object_lock_changing_mode_from_compliance" + "tests": [], + "include": [ + "Locking" ], "skip": false, - "comment": "" + "comment": "See Locking Feature" }, { "name": "PutObjectTagging", "tag": "API", - "tests": [ - "test_lifecycle_expiration_tags1", - "test_lifecycle_expiration_tags2", - "test_lifecycle_expiration_versioned_tags2", - "test_lifecycle_expiration_noncur_tags1", - "test_lifecycle_expiration_header_tags_head", - "test_lifecycle_expiration_header_and_tags_head", - "test_get_obj_tagging", - "test_get_obj_head_tagging", - "test_put_max_tags", - "test_put_excess_tags", - "test_put_max_kvsize_tags", - "test_put_excess_key_tags", - "test_put_excess_val_tags", - "test_put_modify_tags", - "test_put_delete_tags", - "test_get_tags_acl_public", - "test_put_tags_acl_public", - "test_delete_tags_obj_public", - "test_bucket_policy_get_obj_existing_tag", - "test_bucket_policy_get_obj_tagging_existing_tag", - "test_bucket_policy_put_obj_tagging_existing_tag", - "test_bucket_policy_get_obj_acl_existing_tag" + "tests": [], + "include": [ + "ObjectTagging" ], "skip": false, - "comment": "" + "comment": "See ObjectTagging feature" }, { "name": "PutPublicAccessBlock", @@ -1530,15 +1065,12 @@ "tests": [ "test_object_copy_versioning_multipart_upload", "test_multipart_upload_empty", - "test_multipart_upload_small", - "test_multipart_upload", "test_multipart_upload_multiple_sizes", "test_multipart_upload_size_too_small", "test_multipart_upload_contents", "test_multipart_upload_overwrite_existing_object", "test_multipart_upload_missing_part", "test_multipart_upload_incorrect_etag", - "test_multipart_resend_first_finishes_last", "test_versioning_obj_create_overwrite_multipart", "test_versioning_bucket_multipart_upload_return_version_id", "test_multipart_upload_on_a_bucket_with_policy", @@ -1546,8 +1078,7 @@ "test_abort_multipart_upload", "test_abort_multipart_upload_not_found", "test_atomic_multipart_upload_write", - "test_list_multipart_upload", - "test_list_multipart_upload_owner" + "test_list_multipart_upload" ], "skip": false, "comment": "" @@ -1574,104 +1105,188 @@ "skip": true, "comment": "Not supported yet, but will be in future" }, + { + "name": "BucketPolicy", + "tag": "Features", + "tests": [ + "test_bucket_policy", + "test_bucketv2_policy", + "test_get_tags_acl_public", + "test_put_tags_acl_public", + "test_delete_tags_obj_public", + "test_bucket_policy_get_obj_existing_tag", + "test_bucket_policy_get_obj_tagging_existing_tag", + "test_bucket_policy_put_obj_tagging_existing_tag", + "test_bucket_policy_put_obj_copy_source", + "test_bucket_policy_put_obj_copy_source_meta", + "test_bucket_policy_get_obj_acl_existing_tag", + "test_multipart_upload_on_a_bucket_with_policy" + ], + "skip": false, + "comment": "" + }, + { + "name": "BucketCors", + "tag": "Features", + "tests": [ + "test_set_cors", + "test_cors_origin_response", + "test_cors_origin_wildcard", + "test_cors_header_option" + ], + "skip": false, + "comment": "" + }, + { + "name": "BucketLifecycle", + "tag": "Features", + "tests": [ + "test_lifecycle_get", + "test_lifecycle_get_no_id", + "test_lifecycle_set", + "test_lifecycle_id_too_long", + "test_lifecycle_same_id", + "test_lifecycle_invalid_status", + "test_lifecycle_set_date", + "test_lifecycle_set_invalid_date", + "test_lifecycle_expiration_days0", + "test_lifecycle_expiration_header_put", + "test_lifecycle_expiration_header_head", + "test_lifecycle_expiration_header_and_tags_head", + "test_lifecycle_set_noncurrent", + "test_lifecycle_set_deletemarker", + "test_lifecycle_set_filter", + "test_lifecycle_set_empty_filter", + "test_lifecycle_set_multipart" + ], + "skip": false, + "comment": "Transition is not supported" + }, + { + "name": "BucketTagging", + "tag": "Features", + "tests": [ + "test_set_bucket_tagging" + ], + "skip": false, + "comment": "" + }, + { + "name": "ObjectTagging", + "tag": "Features", + "tests": [ + "test_put_delete_tags", + "test_get_obj_tagging", + "test_put_max_tags", + "test_put_max_kvsize_tags", + "test_put_excess_key_tags", + "test_put_excess_val_tags", + "test_put_modify_tags", + "test_put_delete_tags", + "test_put_obj_with_tags", + "test_get_obj_tagging", + "test_get_obj_head_tagging", + "test_put_max_tags", + "test_put_max_kvsize_tags", + "test_put_excess_key_tags", + "test_put_excess_val_tags", + "test_put_modify_tags", + "test_put_delete_tags" + ], + "skip": false, + "comment": "" + }, + { + "name": "BucketACL", + "tags": "Features", + "tests": [ + "test_bucket_put_bad_canned_acl", + "test_bucket_list_objects_anonymous", + "test_bucket_listv2_objects_anonymous", + "test_bucket_acl_canned_private_to_private", + "test_100_continue", + "test_block_public_put_bucket_acls", + "test_bucket_concurrent_set_canned_acl" + ], + "skip": false, + "comment": "Partly supported. Only restricted canned acl can be applied" + }, + { + "name": "BucketVersioning", + "tags": "Features", + "tests": [ + "test_object_lock_put_obj_lock", + "test_multipart_copy_versioned", + "test_versioning_bucket_create_suspend", + "test_versioning_obj_plain_null_version_removal", + "test_versioning_obj_plain_null_version_overwrite", + "test_versioning_obj_plain_null_version_overwrite_suspended", + "test_versioning_obj_create_read_remove", + "test_versioning_obj_create_read_remove_head", + "test_versioning_obj_suspend_versions", + "test_versioning_obj_create_versions_remove_all", + "test_versioning_obj_create_versions_remove_special_names", + "test_versioning_obj_create_overwrite_multipart", + "test_versioning_obj_list_marker", + "test_versioning_copy_obj_version", + "test_versioning_multi_object_delete", + "test_versioning_multi_object_delete_with_marker", + "test_versioned_concurrent_object_create_concurrent_remove", + "test_versioned_concurrent_object_create_and_remove", + "test_versioning_bucket_atomic_upload_return_version_id", + "test_versioning_bucket_multipart_upload_return_version_id", + "test_versioning_multi_object_delete_with_marker_create", + "test_versioning_concurrent_multi_object_delete" + ], + "skip": false, + "comment": "Limitations: \n1. Don't create delete marker for non-existing objects" + }, + { + "name": "MultipartUpload", + "tags": "Features", + "tests": [ + "test_multipart_upload" + ], + "include": [ + "AbortMultipartUpload", + "CompleteMultipartUpload", + "ListMultipartUploads", + "UploadPart", + "UploadPartCopy" + ], + "skip": false, + "comment": "" + }, { "name": "encryption", "tag": "Features", "tests": [ - "test_sse_kms_method_head", - "test_sse_kms_present", - "test_sse_kms_no_key", - "test_sse_kms_not_declared", - "test_sse_kms_multipart_upload", - "test_sse_kms_multipart_invalid_chunks_1", - "test_sse_kms_multipart_invalid_chunks_2", - "test_sse_kms_post_object_authenticated_request", - "test_sse_kms_transfer_1b", - "test_sse_kms_transfer_1kb", - "test_sse_kms_transfer_1MB", - "test_sse_kms_transfer_13b", - "test_sse_kms_read_declare", - "test_sse_s3_default_upload_1b", - "test_sse_s3_default_upload_1kb", - "test_sse_s3_default_upload_1mb", - "test_sse_s3_default_upload_8mb", - "test_sse_kms_default_upload_1b", - "test_sse_kms_default_upload_1kb", - "test_sse_kms_default_upload_1mb", - "test_sse_kms_default_upload_8mb", - "test_sse_s3_default_method_head", - "test_sse_s3_default_multipart_upload", - "test_sse_s3_default_post_object_authenticated_request", - "test_sse_kms_default_post_object_authenticated_request", - "test_sse_s3_encrypted_upload_1b", - "test_sse_s3_encrypted_upload_1kb", - "test_sse_s3_encrypted_upload_1mb", - "test_sse_s3_encrypted_upload_8mb", "test_encrypted_transfer_1b", "test_encrypted_transfer_1kb", "test_encrypted_transfer_1MB", "test_encrypted_transfer_13b", - "test_encryption_sse_c_method_head", "test_encryption_sse_c_present", "test_encryption_sse_c_other_key", "test_encryption_sse_c_invalid_md5", "test_encryption_sse_c_no_md5", "test_encryption_sse_c_no_key", "test_encryption_key_no_sse_c", - "test_encryption_sse_c_multipart_upload", - "test_encryption_sse_c_unaligned_multipart_upload", "test_encryption_sse_c_multipart_invalid_chunks_1", "test_encryption_sse_c_multipart_invalid_chunks_2", - "test_encryption_sse_c_multipart_bad_download", - "test_encryption_sse_c_post_object_authenticated_request" + "test_encryption_sse_c_method_head", + "test_encryption_sse_c_multipart_upload", + "test_encryption_sse_c_unaligned_multipart_upload", + "test_encryption_sse_c_multipart_bad_download" ], "skip": false, "comment": "Only sse-c currently supported" }, { - "name": "post_upload", + "name": "PostObject", "tag": "Features", - "tests": [ - "test_post_object_anonymous_request", - "test_post_object_authenticated_request", - "test_post_object_authenticated_no_content_type", - "test_post_object_authenticated_request_bad_access_key", - "test_post_object_set_success_code", - "test_post_object_set_invalid_success_code", - "test_post_object_upload_larger_than_chunk", - "test_post_object_set_key_from_filename", - "test_post_object_ignored_header", - "test_post_object_case_insensitive_condition_fields", - "test_post_object_escaped_field_values", - "test_post_object_success_redirect_action", - "test_post_object_invalid_signature", - "test_post_object_invalid_access_key", - "test_post_object_invalid_date_format", - "test_post_object_no_key_specified", - "test_post_object_missing_signature", - "test_post_object_missing_policy_condition", - "test_post_object_user_specified_header", - "test_post_object_request_missing_policy_specified_field", - "test_post_object_condition_is_case_sensitive", - "test_post_object_expires_is_case_sensitive", - "test_post_object_expired_policy", - "test_post_object_invalid_request_field_value", - "test_post_object_missing_expires_condition", - "test_post_object_missing_conditions_list", - "test_post_object_upload_size_limit_exceeded", - "test_post_object_missing_content_length_argument", - "test_post_object_invalid_content_length_argument", - "test_post_object_upload_size_below_minimum", - "test_post_object_upload_size_rgw_chunk_size_bug", - "test_post_object_empty_conditions", - "test_post_object_tags_anonymous_request", - "test_post_object_tags_authenticated_request,", - "test_sse_s3_default_post_object_authenticated_request", - "test_sse_kms_default_post_object_authenticated_request", - "test_sse_kms_post_object_authenticated_request" - ], - "skip": false, - "comment": "Supported only basic POST upload" + "tests": [], + "skip": true, + "comment": "No tests for SigV4" }, { "name": "aws_v2_signature", @@ -1690,11 +1305,11 @@ "test_object_create_bad_date_before_epoch_aws2", "test_object_create_bad_date_after_end_aws2" ], - "skip": false, - "comment": "AWS v2 signature is deprecated" + "skip": true, + "comment": "Not supported. AWS v2 signature is deprecated." }, { - "name": "locking", + "name": "Locking", "tag": "Features", "tests": [ "test_object_lock_put_obj_lock", @@ -1725,10 +1340,17 @@ "test_object_lock_get_legal_hold_invalid_bucket", "test_object_lock_delete_object_with_legal_hold_on", "test_object_lock_delete_object_with_legal_hold_off", - "test_object_lock_get_obj_metadata" + "test_object_lock_get_obj_metadata", + "test_object_lock_get_obj_retention_iso8601", + "test_object_lock_delete_object_with_retention_and_marker", + "test_object_lock_multi_delete_object_with_retention", + "test_object_lock_changing_mode_from_governance_with_bypass", + "test_object_lock_changing_mode_from_governance_without_bypass", + "test_object_lock_changing_mode_from_compliance", + "test_object_lock_put_obj_lock_invalid_mode" ], - "skip": false, - "comment": "" + "skip": true, + "comment": "Not supported" } ] } \ No newline at end of file -- 2.45.2 From f35917a01d0337be0c7a0f69ac47d0e622e70096 Mon Sep 17 00:00:00 2001 From: Denis Kirillov Date: Fri, 8 Nov 2024 11:28:23 +0300 Subject: [PATCH 3/3] [#2] Add .forgejo files Signed-off-by: Denis Kirillov --- .forgejo/workflows/builds.yml | 23 +++++++++++++++++++ .forgejo/workflows/dco.yml | 20 +++++++++++++++++ .forgejo/workflows/tests.yml | 38 ++++++++++++++++++++++++++++++++ .forgejo/workflows/vulncheck.yml | 21 ++++++++++++++++++ CODEOWNERS | 1 + 5 files changed, 103 insertions(+) create mode 100644 .forgejo/workflows/builds.yml create mode 100644 .forgejo/workflows/dco.yml create mode 100644 .forgejo/workflows/tests.yml create mode 100644 .forgejo/workflows/vulncheck.yml create mode 100644 CODEOWNERS diff --git a/.forgejo/workflows/builds.yml b/.forgejo/workflows/builds.yml new file mode 100644 index 0000000..490a97c --- /dev/null +++ b/.forgejo/workflows/builds.yml @@ -0,0 +1,23 @@ +on: [pull_request] + +jobs: + builds: + name: Builds + runs-on: ubuntu-latest + strategy: + matrix: + go_versions: [ '1.22', '1.23' ] + fail-fast: false + steps: + - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: '${{ matrix.go_versions }}' + + - name: Build binary + run: make + + - name: Check dirty suffix + run: if [[ $(make version) == *"dirty"* ]]; then echo "Version has dirty suffix" && exit 1; fi diff --git a/.forgejo/workflows/dco.yml b/.forgejo/workflows/dco.yml new file mode 100644 index 0000000..4acd633 --- /dev/null +++ b/.forgejo/workflows/dco.yml @@ -0,0 +1,20 @@ +on: [pull_request] + +jobs: + dco: + name: DCO + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.23' + + - name: Run commit format checker + uses: https://git.frostfs.info/TrueCloudLab/dco-go@v3 + with: + from: 'origin/${{ github.event.pull_request.base.ref }}' diff --git a/.forgejo/workflows/tests.yml b/.forgejo/workflows/tests.yml new file mode 100644 index 0000000..e74b46c --- /dev/null +++ b/.forgejo/workflows/tests.yml @@ -0,0 +1,38 @@ +on: [pull_request] + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: '1.23' + cache: true + + - name: Run linters + run: make lint + + tests: + name: Tests + runs-on: ubuntu-latest + strategy: + matrix: + go_versions: [ '1.22', '1.23' ] + fail-fast: false + steps: + - uses: actions/checkout@v3 + + - name: Set up Go + uses: actions/setup-go@v3 + with: + go-version: '${{ matrix.go_versions }}' + + - name: Update Go modules + run: make dep + + - name: Run tests + run: make test diff --git a/.forgejo/workflows/vulncheck.yml b/.forgejo/workflows/vulncheck.yml new file mode 100644 index 0000000..37730d8 --- /dev/null +++ b/.forgejo/workflows/vulncheck.yml @@ -0,0 +1,21 @@ +on: [pull_request] + +jobs: + vulncheck: + name: Vulncheck + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: '1.23' + + - name: Install govulncheck + run: go install golang.org/x/vuln/cmd/govulncheck@latest + + - name: Run govulncheck + run: govulncheck ./... diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..c25d203 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +.* @alexvanin @dkirillov \ No newline at end of file -- 2.45.2