@@ -1078,3 +1078,50 @@ TEST_CASE(request_time_too_skewed_mock_server) {
10781078
10791079 return AWS_OP_SUCCESS ;
10801080}
1081+
1082+ TEST_CASE (request_timeout_error_mock_server ) {
1083+ (void )ctx ;
1084+
1085+ struct aws_s3_tester tester ;
1086+ ASSERT_SUCCESS (aws_s3_tester_init (allocator , & tester ));
1087+ struct aws_s3_tester_client_options client_options = {
1088+ .part_size = MB_TO_BYTES (5 ),
1089+ .tls_usage = AWS_S3_TLS_DISABLED ,
1090+ };
1091+
1092+ struct aws_s3_client * client = NULL ;
1093+ ASSERT_SUCCESS (aws_s3_tester_client_new (& tester , & client_options , & client ));
1094+
1095+ struct aws_byte_cursor object_path = aws_byte_cursor_from_c_str ("/request_timeout" );
1096+ struct aws_s3_meta_request_test_results out_results ;
1097+ aws_s3_meta_request_test_results_init (& out_results , allocator );
1098+
1099+ struct aws_s3_tester_meta_request_options put_options = {
1100+ .allocator = allocator ,
1101+ .meta_request_type = AWS_S3_META_REQUEST_TYPE_PUT_OBJECT ,
1102+ .client = client ,
1103+ .checksum_algorithm = AWS_SCA_CRC32 ,
1104+ .validate_get_response_checksum = false,
1105+ .put_options =
1106+ {
1107+ .object_size_mb = 10 ,
1108+ .object_path_override = object_path ,
1109+ },
1110+ .mock_server = true,
1111+ .validate_type = AWS_S3_TESTER_VALIDATE_TYPE_EXPECT_FAILURE ,
1112+ };
1113+
1114+ ASSERT_SUCCESS (aws_s3_tester_send_meta_request_with_options (& tester , & put_options , & out_results ));
1115+
1116+ ASSERT_UINT_EQUALS (AWS_ERROR_S3_REQUEST_TIMEOUT , out_results .finished_error_code );
1117+
1118+ /* The default retry will max out after 5 times. So, in total, it will be 6 requests, first one and 5 retries. */
1119+ size_t result_num = aws_array_list_length (& out_results .synced_data .metrics );
1120+ ASSERT_UINT_EQUALS (6 , result_num );
1121+
1122+ aws_s3_meta_request_test_results_clean_up (& out_results );
1123+ aws_s3_client_release (client );
1124+ aws_s3_tester_clean_up (& tester );
1125+
1126+ return AWS_OP_SUCCESS ;
1127+ }
0 commit comments