Client Test

Client Test

rev. 9f5fb9826a6af51ebfb3736d0a778b00ec7b08b3 (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/omits_serializing_empty_lists.rs

@@ -253,253 +317,318 @@
  273    273   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  274    274   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  275    275   
        })?;
  276    276   
        cfg.interceptor_state()
  277    277   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  278    278   
        ::std::result::Result::Ok(())
  279    279   
    }
  280    280   
}
  281    281   
#[allow(unreachable_code, unused_variables)]
  282    282   
#[cfg(test)]
  283         -
mod omits_serializing_empty_lists_request_test {
         283  +
mod omits_serializing_empty_lists_test {
         284  +
  284    285   
    /// Supports omitting empty lists.
  285    286   
    /// Test ID: RestJsonOmitsEmptyListQueryValues
  286    287   
    #[::tokio::test]
  287         -
    #[allow(unused_mut)]
         288  +
    #[::tracing_test::traced_test]
  288    289   
    async fn rest_json_omits_empty_list_query_values_request() {
  289    290   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  290    291   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  291    292   
  292    293   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  293    294   
        let result = client
  294    295   
            .omits_serializing_empty_lists()
  295    296   
            .set_query_string_list(::std::option::Option::Some(vec![]))
  296    297   
            .set_query_integer_list(::std::option::Option::Some(vec![]))
  297    298   
            .set_query_double_list(::std::option::Option::Some(vec![]))

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/post_player_action.rs

@@ -191,191 +283,284 @@
  211    211   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  212    212   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  213    213   
        })?;
  214    214   
        cfg.interceptor_state()
  215    215   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  216    216   
        ::std::result::Result::Ok(())
  217    217   
    }
  218    218   
}
  219    219   
#[allow(unreachable_code, unused_variables)]
  220    220   
#[cfg(test)]
  221         -
mod post_player_action_request_test {
         221  +
mod post_player_action_test {
         222  +
  222    223   
    /// Unit types in unions are serialized like normal structures in requests.
  223    224   
    /// Test ID: RestJsonInputUnionWithUnitMember
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn rest_json_input_union_with_unit_member_request() {
  227    228   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  228    229   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  229    230   
  230    231   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  231    232   
        let result = client
  232    233   
            .post_player_action()
  233    234   
            .set_action(::std::option::Option::Some(crate::types::PlayerAction::Quit))
  234    235   
            .send()
  235    236   
            .await;
  236    237   
        let _ = dbg!(result);
  237    238   
        let http_request = request_receiver.expect_request();
  238    239   
        let expected_headers = [("Content-Type", "application/json")];
  239    240   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  240    241   
        let body = http_request.body().bytes().expect("body should be strict");
  241    242   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  242    243   
            body,
  243    244   
            "{\n    \"action\": {\n        \"quit\": {}\n    }\n}",
  244    245   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  245    246   
        ));
  246    247   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  247    248   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  248    249   
        ::pretty_assertions::assert_eq!(uri.path(), "/PostPlayerAction", "path was incorrect");
  249    250   
    }
  250    251   
    /// Unit types in unions are serialized like normal structures in responses.
  251    252   
    /// Test ID: RestJsonOutputUnionWithUnitMember
  252    253   
    #[::tokio::test]
  253         -
    #[allow(unused_mut)]
         254  +
    #[::tracing_test::traced_test]
  254    255   
    async fn rest_json_output_union_with_unit_member_response() {
  255    256   
        let expected_output = crate::operation::post_player_action::PostPlayerActionOutput::builder()
  256    257   
            .set_action(::std::option::Option::Some(crate::types::PlayerAction::Quit))
  257    258   
            .build()
  258    259   
            .unwrap();
  259    260   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  260    261   
            ::http::response::Builder::new()
  261    262   
                .header("Content-Type", "application/json")
  262    263   
                .status(200)
  263    264   
                .body(::aws_smithy_types::body::SdkBody::from(

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/post_union_with_json_name.rs

@@ -199,199 +427,428 @@
  219    219   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  220    220   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  221    221   
        })?;
  222    222   
        cfg.interceptor_state()
  223    223   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  224    224   
        ::std::result::Result::Ok(())
  225    225   
    }
  226    226   
}
  227    227   
#[allow(unreachable_code, unused_variables)]
  228    228   
#[cfg(test)]
  229         -
mod post_union_with_json_name_request_test {
         229  +
mod post_union_with_json_name_test {
         230  +
  230    231   
    /// Tests that jsonName works with union members.
  231    232   
    /// Test ID: PostUnionWithJsonNameRequest1
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn post_union_with_json_name_request1_request() {
  235    236   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  236    237   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  237    238   
  238    239   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  239    240   
        let result = client
  240    241   
            .post_union_with_json_name()
  241    242   
            .set_value(::std::option::Option::Some(crate::types::UnionWithJsonName::Foo("hi".to_owned())))
  242    243   
            .send()
  243    244   
            .await;
  244    245   
        let _ = dbg!(result);
  245    246   
        let http_request = request_receiver.expect_request();
  246    247   
        let expected_headers = [("Content-Type", "application/json")];
  247    248   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  248    249   
        let body = http_request.body().bytes().expect("body should be strict");
  249    250   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  250    251   
            body,
  251    252   
            "{\n    \"value\": {\n        \"FOO\": \"hi\"\n    }\n}",
  252    253   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  253    254   
        ));
  254    255   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  255    256   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  256    257   
        ::pretty_assertions::assert_eq!(uri.path(), "/PostUnionWithJsonName", "path was incorrect");
  257    258   
    }
  258    259   
    /// Tests that jsonName works with union members.
  259    260   
    /// Test ID: PostUnionWithJsonNameRequest2
  260    261   
    #[::tokio::test]
  261         -
    #[allow(unused_mut)]
         262  +
    #[::tracing_test::traced_test]
  262    263   
    async fn post_union_with_json_name_request2_request() {
  263    264   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  264    265   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  265    266   
  266    267   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  267    268   
        let result = client
  268    269   
            .post_union_with_json_name()
  269    270   
            .set_value(::std::option::Option::Some(crate::types::UnionWithJsonName::Baz("hi".to_owned())))
  270    271   
            .send()
  271    272   
            .await;
  272    273   
        let _ = dbg!(result);
  273    274   
        let http_request = request_receiver.expect_request();
  274    275   
        let expected_headers = [("Content-Type", "application/json")];
  275    276   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  276    277   
        let body = http_request.body().bytes().expect("body should be strict");
  277    278   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  278    279   
            body,
  279    280   
            "{\n    \"value\": {\n        \"_baz\": \"hi\"\n    }\n}",
  280    281   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  281    282   
        ));
  282    283   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  283    284   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  284    285   
        ::pretty_assertions::assert_eq!(uri.path(), "/PostUnionWithJsonName", "path was incorrect");
  285    286   
    }
  286    287   
    /// Tests that jsonName works with union members.
  287    288   
    /// Test ID: PostUnionWithJsonNameRequest3
  288    289   
    #[::tokio::test]
  289         -
    #[allow(unused_mut)]
         290  +
    #[::tracing_test::traced_test]
  290    291   
    async fn post_union_with_json_name_request3_request() {
  291    292   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  292    293   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  293    294   
  294    295   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  295    296   
        let result = client
  296    297   
            .post_union_with_json_name()
  297    298   
            .set_value(::std::option::Option::Some(crate::types::UnionWithJsonName::Bar("hi".to_owned())))
  298    299   
            .send()
  299    300   
            .await;
  300    301   
        let _ = dbg!(result);
  301    302   
        let http_request = request_receiver.expect_request();
  302    303   
        let expected_headers = [("Content-Type", "application/json")];
  303    304   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  304    305   
        let body = http_request.body().bytes().expect("body should be strict");
  305    306   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  306    307   
            body,
  307    308   
            "{\n    \"value\": {\n        \"bar\": \"hi\"\n    }\n}",
  308    309   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  309    310   
        ));
  310    311   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  311    312   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  312    313   
        ::pretty_assertions::assert_eq!(uri.path(), "/PostUnionWithJsonName", "path was incorrect");
  313    314   
    }
  314    315   
    /// Tests that jsonName works with union members.
  315    316   
    /// Test ID: PostUnionWithJsonNameResponse1
  316    317   
    #[::tokio::test]
  317         -
    #[allow(unused_mut)]
         318  +
    #[::tracing_test::traced_test]
  318    319   
    async fn post_union_with_json_name_response1_response() {
  319    320   
        let expected_output = crate::operation::post_union_with_json_name::PostUnionWithJsonNameOutput::builder()
  320    321   
            .set_value(::std::option::Option::Some(crate::types::UnionWithJsonName::Foo("hi".to_owned())))
  321    322   
            .build()
  322    323   
            .unwrap();
  323    324   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  324    325   
            ::http::response::Builder::new()
  325    326   
                .header("Content-Type", "application/json")
  326    327   
                .status(200)
  327    328   
                .body(::aws_smithy_types::body::SdkBody::from(
  328    329   
                    "{\n    \"value\": {\n        \"FOO\": \"hi\"\n    }\n}",
  329    330   
                ))
  330    331   
                .unwrap(),
  331    332   
        )
  332    333   
        .unwrap();
  333    334   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  334    335   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  335    336   
  336    337   
        let op = crate::operation::post_union_with_json_name::PostUnionWithJsonName::new();
  337    338   
        let config = op.config().expect("the operation has config");
  338    339   
        let de = config
  339    340   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  340    341   
            .expect("the config must have a deserializer");
  341    342   
  342    343   
        let parsed = de.deserialize_streaming(&mut http_response);
  343    344   
        let parsed = parsed.unwrap_or_else(|| {
  344    345   
            let http_response =
  345    346   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  346    347   
            de.deserialize_nonstreaming(&http_response)
  347    348   
        });
  348    349   
        let parsed = parsed
  349    350   
            .expect("should be successful response")
  350    351   
            .downcast::<crate::operation::post_union_with_json_name::PostUnionWithJsonNameOutput>()
  351    352   
            .unwrap();
  352    353   
        ::pretty_assertions::assert_eq!(parsed.value, expected_output.value, "Unexpected value for `value`");
  353    354   
    }
  354    355   
    /// Tests that jsonName works with union members.
  355    356   
    /// Test ID: PostUnionWithJsonNameResponse2
  356    357   
    #[::tokio::test]
  357         -
    #[allow(unused_mut)]
         358  +
    #[::tracing_test::traced_test]
  358    359   
    async fn post_union_with_json_name_response2_response() {
  359    360   
        let expected_output = crate::operation::post_union_with_json_name::PostUnionWithJsonNameOutput::builder()
  360    361   
            .set_value(::std::option::Option::Some(crate::types::UnionWithJsonName::Baz("hi".to_owned())))
  361    362   
            .build()
  362    363   
            .unwrap();
  363    364   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  364    365   
            ::http::response::Builder::new()
  365    366   
                .header("Content-Type", "application/json")
  366    367   
                .status(200)
  367    368   
                .body(::aws_smithy_types::body::SdkBody::from(
  368    369   
                    "{\n    \"value\": {\n        \"_baz\": \"hi\"\n    }\n}",
  369    370   
                ))
  370    371   
                .unwrap(),
  371    372   
        )
  372    373   
        .unwrap();
  373    374   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  374    375   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  375    376   
  376    377   
        let op = crate::operation::post_union_with_json_name::PostUnionWithJsonName::new();
  377    378   
        let config = op.config().expect("the operation has config");
  378    379   
        let de = config
  379    380   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  380    381   
            .expect("the config must have a deserializer");
  381    382   
  382    383   
        let parsed = de.deserialize_streaming(&mut http_response);
  383    384   
        let parsed = parsed.unwrap_or_else(|| {
  384    385   
            let http_response =
  385    386   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  386    387   
            de.deserialize_nonstreaming(&http_response)
  387    388   
        });
  388    389   
        let parsed = parsed
  389    390   
            .expect("should be successful response")
  390    391   
            .downcast::<crate::operation::post_union_with_json_name::PostUnionWithJsonNameOutput>()
  391    392   
            .unwrap();
  392    393   
        ::pretty_assertions::assert_eq!(parsed.value, expected_output.value, "Unexpected value for `value`");
  393    394   
    }
  394    395   
    /// Tests that jsonName works with union members.
  395    396   
    /// Test ID: PostUnionWithJsonNameResponse3
  396    397   
    #[::tokio::test]
  397         -
    #[allow(unused_mut)]
         398  +
    #[::tracing_test::traced_test]
  398    399   
    async fn post_union_with_json_name_response3_response() {
  399    400   
        let expected_output = crate::operation::post_union_with_json_name::PostUnionWithJsonNameOutput::builder()
  400    401   
            .set_value(::std::option::Option::Some(crate::types::UnionWithJsonName::Bar("hi".to_owned())))
  401    402   
            .build()
  402    403   
            .unwrap();
  403    404   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  404    405   
            ::http::response::Builder::new()
  405    406   
                .header("Content-Type", "application/json")
  406    407   
                .status(200)
  407    408   
                .body(::aws_smithy_types::body::SdkBody::from(

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/put_with_content_encoding.rs

@@ -202,202 +293,294 @@
  222    222   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  223    223   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  224    224   
        })?;
  225    225   
        cfg.interceptor_state()
  226    226   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  227    227   
        ::std::result::Result::Ok(())
  228    228   
    }
  229    229   
}
  230    230   
#[allow(unreachable_code, unused_variables)]
  231    231   
#[cfg(test)]
  232         -
mod put_with_content_encoding_request_test {
         232  +
mod put_with_content_encoding_test {
         233  +
  233    234   
    /// Compression algorithm encoding is appended to the Content-Encoding header.
  234    235   
    /// Test ID: SDKAppliedContentEncoding_restJson1
  235    236   
    #[::tokio::test]
  236         -
    #[allow(unused_mut)]
         237  +
    #[::tracing_test::traced_test]
  237    238   
    async fn sdk_applied_content_encoding_rest_json1_request() {
  238    239   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  239    240   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  240    241   
  241    242   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  242    243   
        let result = client.put_with_content_encoding()
  243    244   
        .set_data(
  244    245   
            ::std::option::Option::Some(
  245    246   
                "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\n".to_owned()
  246    247   
            )
  247    248   
        )
  248    249   
        .send().await;
  249    250   
        let _ = dbg!(result);
  250    251   
        let http_request = request_receiver.expect_request();
  251    252   
        let expected_headers = [("Content-Encoding", "gzip")];
  252    253   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  253    254   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  254    255   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  255    256   
        ::pretty_assertions::assert_eq!(uri.path(), "/requestcompression/putcontentwithencoding", "path was incorrect");
  256    257   
    }
  257    258   
    /// Compression algorithm encoding is appended to the Content-Encoding header, and the
  258    259   
    /// user-provided content-encoding is in the Content-Encoding header before the
  259    260   
    /// request compression encoding from the HTTP binding.
  260    261   
    ///
  261    262   
    /// Test ID: SDKAppendedGzipAfterProvidedEncoding_restJson1
  262    263   
    #[::tokio::test]
  263         -
    #[allow(unused_mut)]
         264  +
    #[::tracing_test::traced_test]
  264    265   
    async fn sdk_appended_gzip_after_provided_encoding_rest_json1_request() {
  265    266   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  266    267   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  267    268   
  268    269   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  269    270   
        let result = client.put_with_content_encoding()
  270    271   
        .set_encoding(
  271    272   
            ::std::option::Option::Some(
  272    273   
                "custom".to_owned()
  273    274   
            )

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/query_idempotency_token_auto_fill.rs

@@ -216,216 +301,302 @@
  236    236   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  237    237   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  238    238   
        })?;
  239    239   
        cfg.interceptor_state()
  240    240   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  241    241   
        ::std::result::Result::Ok(())
  242    242   
    }
  243    243   
}
  244    244   
#[allow(unreachable_code, unused_variables)]
  245    245   
#[cfg(test)]
  246         -
mod query_idempotency_token_auto_fill_request_test {
         246  +
mod query_idempotency_token_auto_fill_test {
         247  +
  247    248   
    /// Automatically adds idempotency token when not set
  248    249   
    /// Test ID: RestJsonQueryIdempotencyTokenAutoFill
  249    250   
    #[::tokio::test]
  250         -
    #[allow(unused_mut)]
         251  +
    #[::tracing_test::traced_test]
  251    252   
    async fn rest_json_query_idempotency_token_auto_fill_request() {
  252    253   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  253    254   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  254    255   
  255    256   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  256    257   
        let result = client.query_idempotency_token_auto_fill().send().await;
  257    258   
        let _ = dbg!(result);
  258    259   
        let http_request = request_receiver.expect_request();
  259    260   
        let expected_query_params = &["token=00000000-0000-4000-8000-000000000000"];
  260    261   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  261    262   
        let body = http_request.body().bytes().expect("body should be strict");
  262    263   
        // No body
  263    264   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  264    265   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  265    266   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  266    267   
        ::pretty_assertions::assert_eq!(uri.path(), "/QueryIdempotencyTokenAutoFill", "path was incorrect");
  267    268   
    }
  268    269   
    /// Uses the given idempotency token as-is
  269    270   
    /// Test ID: RestJsonQueryIdempotencyTokenAutoFillIsSet
  270    271   
    #[::tokio::test]
  271         -
    #[allow(unused_mut)]
         272  +
    #[::tracing_test::traced_test]
  272    273   
    async fn rest_json_query_idempotency_token_auto_fill_is_set_request() {
  273    274   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  274    275   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  275    276   
  276    277   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  277    278   
        let result = client
  278    279   
            .query_idempotency_token_auto_fill()
  279    280   
            .set_token(::std::option::Option::Some("00000000-0000-4000-8000-000000000000".to_owned()))
  280    281   
            .send()
  281    282   
            .await;

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/query_params_as_string_list_map.rs

@@ -218,218 +282,283 @@
  238    238   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  239    239   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  240    240   
        })?;
  241    241   
        cfg.interceptor_state()
  242    242   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  243    243   
        ::std::result::Result::Ok(())
  244    244   
    }
  245    245   
}
  246    246   
#[allow(unreachable_code, unused_variables)]
  247    247   
#[cfg(test)]
  248         -
mod query_params_as_string_list_map_request_test {
         248  +
mod query_params_as_string_list_map_test {
         249  +
  249    250   
    /// Serialize query params from map of list strings
  250    251   
    /// Test ID: RestJsonQueryParamsStringListMap
  251    252   
    #[::tokio::test]
  252         -
    #[allow(unused_mut)]
         253  +
    #[::tracing_test::traced_test]
  253    254   
    async fn rest_json_query_params_string_list_map_request() {
  254    255   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  255    256   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  256    257   
  257    258   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  258    259   
        let result = client
  259    260   
            .query_params_as_string_list_map()
  260    261   
            .set_qux(::std::option::Option::Some("named".to_owned()))
  261    262   
            .set_foo(::std::option::Option::Some({
  262    263   
                let mut ret = ::std::collections::HashMap::new();

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/query_precedence.rs

@@ -210,210 +274,275 @@
  230    230   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  231    231   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  232    232   
        })?;
  233    233   
        cfg.interceptor_state()
  234    234   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  235    235   
        ::std::result::Result::Ok(())
  236    236   
    }
  237    237   
}
  238    238   
#[allow(unreachable_code, unused_variables)]
  239    239   
#[cfg(test)]
  240         -
mod query_precedence_request_test {
         240  +
mod query_precedence_test {
         241  +
  241    242   
    /// Prefer named query parameters when serializing
  242    243   
    /// Test ID: RestJsonQueryPrecedence
  243    244   
    #[::tokio::test]
  244         -
    #[allow(unused_mut)]
         245  +
    #[::tracing_test::traced_test]
  245    246   
    async fn rest_json_query_precedence_request() {
  246    247   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  247    248   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  248    249   
  249    250   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  250    251   
        let result = client
  251    252   
            .query_precedence()
  252    253   
            .set_foo(::std::option::Option::Some("named".to_owned()))
  253    254   
            .set_baz(::std::option::Option::Some({
  254    255   
                let mut ret = ::std::collections::HashMap::new();

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/recursive_shapes.rs

@@ -191,191 +300,301 @@
  211    211   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  212    212   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  213    213   
        })?;
  214    214   
        cfg.interceptor_state()
  215    215   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  216    216   
        ::std::result::Result::Ok(())
  217    217   
    }
  218    218   
}
  219    219   
#[allow(unreachable_code, unused_variables)]
  220    220   
#[cfg(test)]
  221         -
mod recursive_shapes_request_test {
         221  +
mod recursive_shapes_test {
         222  +
  222    223   
    /// Serializes recursive structures
  223    224   
    /// Test ID: RestJsonRecursiveShapes
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn rest_json_recursive_shapes_request() {
  227    228   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  228    229   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  229    230   
  230    231   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  231    232   
        let result = client
  232    233   
            .recursive_shapes()
  233    234   
            .set_nested(::std::option::Option::Some(
  234    235   
                crate::types::RecursiveShapesInputOutputNested1::builder()
  235    236   
                    .set_foo(::std::option::Option::Some("Foo1".to_owned()))
  236    237   
                    .set_nested(::std::option::Option::Some(::std::boxed::Box::new(
  237    238   
                        crate::types::RecursiveShapesInputOutputNested2::builder()
  238    239   
                            .set_bar(::std::option::Option::Some("Bar1".to_owned()))
  239    240   
                            .set_recursive_member(::std::option::Option::Some(
  240    241   
                                crate::types::RecursiveShapesInputOutputNested1::builder()
  241    242   
                                    .set_foo(::std::option::Option::Some("Foo2".to_owned()))
  242    243   
                                    .set_nested(::std::option::Option::Some(::std::boxed::Box::new(
  243    244   
                                        crate::types::RecursiveShapesInputOutputNested2::builder()
  244    245   
                                            .set_bar(::std::option::Option::Some("Bar2".to_owned()))
  245    246   
                                            .build(),
  246    247   
                                    )))
  247    248   
                                    .build(),
  248    249   
                            ))
  249    250   
                            .build(),
  250    251   
                    )))
  251    252   
                    .build(),
  252    253   
            ))
  253    254   
            .send()
  254    255   
            .await;
  255    256   
        let _ = dbg!(result);
  256    257   
        let http_request = request_receiver.expect_request();
  257    258   
        let expected_headers = [("Content-Type", "application/json")];
  258    259   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  259    260   
        let body = http_request.body().bytes().expect("body should be strict");
  260    261   
        ::aws_smithy_protocol_test::assert_ok(
  261    262   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"nested\": {\n        \"foo\": \"Foo1\",\n        \"nested\": {\n            \"bar\": \"Bar1\",\n            \"recursiveMember\": {\n                \"foo\": \"Foo2\",\n                \"nested\": {\n                    \"bar\": \"Bar2\"\n                }\n            }\n        }\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  262    263   
        );
  263    264   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  264    265   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  265    266   
        ::pretty_assertions::assert_eq!(uri.path(), "/RecursiveShapes", "path was incorrect");
  266    267   
    }
  267    268   
    /// Serializes recursive structures
  268    269   
    /// Test ID: RestJsonRecursiveShapes
  269    270   
    #[::tokio::test]
  270         -
    #[allow(unused_mut)]
         271  +
    #[::tracing_test::traced_test]
  271    272   
    async fn rest_json_recursive_shapes_response() {
  272    273   
        let expected_output = crate::operation::recursive_shapes::RecursiveShapesOutput::builder()
  273    274   
            .set_nested(::std::option::Option::Some(
  274    275   
                crate::types::RecursiveShapesInputOutputNested1::builder()
  275    276   
                    .set_foo(::std::option::Option::Some("Foo1".to_owned()))
  276    277   
                    .set_nested(::std::option::Option::Some(::std::boxed::Box::new(
  277    278   
                        crate::types::RecursiveShapesInputOutputNested2::builder()
  278    279   
                            .set_bar(::std::option::Option::Some("Bar1".to_owned()))
  279    280   
                            .set_recursive_member(::std::option::Option::Some(
  280    281   
                                crate::types::RecursiveShapesInputOutputNested1::builder()

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/simple_scalar_properties.rs

@@ -200,200 +427,428 @@
  220    220   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  221    221   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  222    222   
        })?;
  223    223   
        cfg.interceptor_state()
  224    224   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  225    225   
        ::std::result::Result::Ok(())
  226    226   
    }
  227    227   
}
  228    228   
#[allow(unreachable_code, unused_variables)]
  229    229   
#[cfg(test)]
  230         -
mod simple_scalar_properties_request_test {
         230  +
mod simple_scalar_properties_test {
  231    231   
    use ::aws_smithy_protocol_test::FloatEquals;
         232  +
  232    233   
    /// Serializes simple scalar properties
  233    234   
    /// Test ID: RestJsonSimpleScalarProperties
  234    235   
    #[::tokio::test]
  235         -
    #[allow(unused_mut)]
         236  +
    #[::tracing_test::traced_test]
  236    237   
    async fn rest_json_simple_scalar_properties_request() {
  237    238   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  238    239   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  239    240   
  240    241   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  241    242   
        let result = client
  242    243   
            .simple_scalar_properties()
  243    244   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  244    245   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  245    246   
            .set_true_boolean_value(::std::option::Option::Some(true))
  246    247   
            .set_false_boolean_value(::std::option::Option::Some(false))
  247    248   
            .set_byte_value(::std::option::Option::Some(1))
  248    249   
            .set_short_value(::std::option::Option::Some(2))
  249    250   
            .set_integer_value(::std::option::Option::Some(3))
  250    251   
            .set_long_value(::std::option::Option::Some(4))
  251    252   
            .set_float_value(::std::option::Option::Some(5.5_f32))
  252    253   
            .set_double_value(::std::option::Option::Some(6.5_f64))
  253    254   
            .send()
  254    255   
            .await;
  255    256   
        let _ = dbg!(result);
  256    257   
        let http_request = request_receiver.expect_request();
  257    258   
        let expected_headers = [("Content-Type", "application/json"), ("X-Foo", "Foo")];
  258    259   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  259    260   
        let body = http_request.body().bytes().expect("body should be strict");
  260    261   
        ::aws_smithy_protocol_test::assert_ok(
  261    262   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"stringValue\": \"string\",\n    \"trueBooleanValue\": true,\n    \"falseBooleanValue\": false,\n    \"byteValue\": 1,\n    \"shortValue\": 2,\n    \"integerValue\": 3,\n    \"longValue\": 4,\n    \"floatValue\": 5.5,\n    \"DoubleDribble\": 6.5\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  262    263   
        );
  263    264   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  264    265   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  265    266   
        ::pretty_assertions::assert_eq!(uri.path(), "/SimpleScalarProperties", "path was incorrect");
  266    267   
    }
  267    268   
    /// Rest Json should not serialize null structure values
  268    269   
    /// Test ID: RestJsonDoesntSerializeNullStructureValues
  269    270   
    #[::tokio::test]
  270         -
    #[allow(unused_mut)]
         271  +
    #[::tracing_test::traced_test]
  271    272   
    async fn rest_json_doesnt_serialize_null_structure_values_request() {
  272    273   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  273    274   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  274    275   
  275    276   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  276    277   
        let result = client
  277    278   
            .simple_scalar_properties()
  278    279   
            .set_string_value(::std::option::Option::None)
  279    280   
            .send()
  280    281   
            .await;
  281    282   
        let _ = dbg!(result);
  282    283   
        let http_request = request_receiver.expect_request();
  283    284   
        let expected_headers = [("Content-Type", "application/json")];
  284    285   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  285    286   
        let body = http_request.body().bytes().expect("body should be strict");
  286    287   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  287    288   
            body,
  288    289   
            "{}",
  289    290   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  290    291   
        ));
  291    292   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  292    293   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  293    294   
        ::pretty_assertions::assert_eq!(uri.path(), "/SimpleScalarProperties", "path was incorrect");
  294    295   
    }
  295    296   
    /// Supports handling NaN float values.
  296    297   
    /// Test ID: RestJsonSupportsNaNFloatInputs
  297    298   
    #[::tokio::test]
  298         -
    #[allow(unused_mut)]
         299  +
    #[::tracing_test::traced_test]
  299    300   
    async fn rest_json_supports_na_n_float_inputs_request() {
  300    301   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  301    302   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  302    303   
  303    304   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  304    305   
        let result = client
  305    306   
            .simple_scalar_properties()
  306    307   
            .set_float_value(::std::option::Option::Some(
  307    308   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  308    309   
            ))
  309    310   
            .set_double_value(::std::option::Option::Some(
  310    311   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  311    312   
            ))
  312    313   
            .send()
  313    314   
            .await;
  314    315   
        let _ = dbg!(result);
  315    316   
        let http_request = request_receiver.expect_request();
  316    317   
        let expected_headers = [("Content-Type", "application/json")];
  317    318   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  318    319   
        let body = http_request.body().bytes().expect("body should be strict");
  319    320   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  320    321   
            body,
  321    322   
            "{\n    \"floatValue\": \"NaN\",\n    \"DoubleDribble\": \"NaN\"\n}",
  322    323   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  323    324   
        ));
  324    325   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  325    326   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  326    327   
        ::pretty_assertions::assert_eq!(uri.path(), "/SimpleScalarProperties", "path was incorrect");
  327    328   
    }
  328    329   
    /// Supports handling Infinity float values.
  329    330   
    /// Test ID: RestJsonSupportsInfinityFloatInputs
  330    331   
    #[::tokio::test]
  331         -
    #[allow(unused_mut)]
         332  +
    #[::tracing_test::traced_test]
  332    333   
    async fn rest_json_supports_infinity_float_inputs_request() {
  333    334   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  334    335   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  335    336   
  336    337   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  337    338   
        let result = client
  338    339   
            .simple_scalar_properties()
  339    340   
            .set_float_value(::std::option::Option::Some(
  340    341   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  341    342   
            ))
  342    343   
            .set_double_value(::std::option::Option::Some(
  343    344   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  344    345   
            ))
  345    346   
            .send()
  346    347   
            .await;
  347    348   
        let _ = dbg!(result);
  348    349   
        let http_request = request_receiver.expect_request();
  349    350   
        let expected_headers = [("Content-Type", "application/json")];
  350    351   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  351    352   
        let body = http_request.body().bytes().expect("body should be strict");
  352    353   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  353    354   
            body,
  354    355   
            "{\n    \"floatValue\": \"Infinity\",\n    \"DoubleDribble\": \"Infinity\"\n}",
  355    356   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  356    357   
        ));
  357    358   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  358    359   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  359    360   
        ::pretty_assertions::assert_eq!(uri.path(), "/SimpleScalarProperties", "path was incorrect");
  360    361   
    }
  361    362   
    /// Supports handling -Infinity float values.
  362    363   
    /// Test ID: RestJsonSupportsNegativeInfinityFloatInputs
  363    364   
    #[::tokio::test]
  364         -
    #[allow(unused_mut)]
         365  +
    #[::tracing_test::traced_test]
  365    366   
    async fn rest_json_supports_negative_infinity_float_inputs_request() {
  366    367   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  367    368   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  368    369   
  369    370   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  370    371   
        let result = client
  371    372   
            .simple_scalar_properties()
  372    373   
            .set_float_value(::std::option::Option::Some(
  373    374   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  374    375   
            ))
  375    376   
            .set_double_value(::std::option::Option::Some(
  376    377   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  377    378   
            ))
  378    379   
            .send()
  379    380   
            .await;
  380    381   
        let _ = dbg!(result);
  381    382   
        let http_request = request_receiver.expect_request();
  382    383   
        let expected_headers = [("Content-Type", "application/json")];
  383    384   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  384    385   
        let body = http_request.body().bytes().expect("body should be strict");
  385    386   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  386    387   
            body,
  387    388   
            "{\n    \"floatValue\": \"-Infinity\",\n    \"DoubleDribble\": \"-Infinity\"\n}",
  388    389   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  389    390   
        ));
  390    391   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  391    392   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  392    393   
        ::pretty_assertions::assert_eq!(uri.path(), "/SimpleScalarProperties", "path was incorrect");
  393    394   
    }
  394    395   
    /// Serializes simple scalar properties
  395    396   
    /// Test ID: RestJsonSimpleScalarProperties
  396    397   
    #[::tokio::test]
  397         -
    #[allow(unused_mut)]
         398  +
    #[::tracing_test::traced_test]
  398    399   
    async fn rest_json_simple_scalar_properties_response() {
  399    400   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder()
  400    401   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  401    402   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  402    403   
            .set_true_boolean_value(::std::option::Option::Some(true))
  403    404   
            .set_false_boolean_value(::std::option::Option::Some(false))
  404    405   
            .set_byte_value(::std::option::Option::Some(1))
  405    406   
            .set_short_value(::std::option::Option::Some(2))
  406    407   
            .set_integer_value(::std::option::Option::Some(3))
  407    408   
            .set_long_value(::std::option::Option::Some(4))
@@ -443,444 +503,504 @@
  463    464   
        assert!(
  464    465   
            parsed.double_value.float_equals(&expected_output.double_value),
  465    466   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  466    467   
            expected_output.double_value,
  467    468   
            parsed.double_value
  468    469   
        );
  469    470   
    }
  470    471   
    /// Rest Json should not deserialize null structure values
  471    472   
    /// Test ID: RestJsonDoesntDeserializeNullStructureValues
  472    473   
    #[::tokio::test]
  473         -
    #[allow(unused_mut)]
         474  +
    #[::tracing_test::traced_test]
  474    475   
    async fn rest_json_doesnt_deserialize_null_structure_values_response() {
  475    476   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder().build();
  476    477   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  477    478   
            ::http::response::Builder::new()
  478    479   
                .header("Content-Type", "application/json")
  479    480   
                .status(200)
  480    481   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"stringValue\": null\n}"))
  481    482   
                .unwrap(),
  482    483   
        )
  483    484   
        .unwrap();
@@ -509,510 +569,570 @@
  529    530   
        assert!(
  530    531   
            parsed.double_value.float_equals(&expected_output.double_value),
  531    532   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  532    533   
            expected_output.double_value,
  533    534   
            parsed.double_value
  534    535   
        );
  535    536   
    }
  536    537   
    /// Supports handling NaN float values.
  537    538   
    /// Test ID: RestJsonSupportsNaNFloatInputs
  538    539   
    #[::tokio::test]
  539         -
    #[allow(unused_mut)]
         540  +
    #[::tracing_test::traced_test]
  540    541   
    async fn rest_json_supports_na_n_float_inputs_response() {
  541    542   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder()
  542    543   
            .set_float_value(::std::option::Option::Some(
  543    544   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  544    545   
            ))
  545    546   
            .set_double_value(::std::option::Option::Some(
  546    547   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  547    548   
            ))
  548    549   
            .build();
  549    550   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
@@ -584,585 +644,645 @@
  604    605   
        assert!(
  605    606   
            parsed.double_value.float_equals(&expected_output.double_value),
  606    607   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  607    608   
            expected_output.double_value,
  608    609   
            parsed.double_value
  609    610   
        );
  610    611   
    }
  611    612   
    /// Supports handling Infinity float values.
  612    613   
    /// Test ID: RestJsonSupportsInfinityFloatInputs
  613    614   
    #[::tokio::test]
  614         -
    #[allow(unused_mut)]
         615  +
    #[::tracing_test::traced_test]
  615    616   
    async fn rest_json_supports_infinity_float_inputs_response() {
  616    617   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder()
  617    618   
            .set_float_value(::std::option::Option::Some(
  618    619   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  619    620   
            ))
  620    621   
            .set_double_value(::std::option::Option::Some(
  621    622   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  622    623   
            ))
  623    624   
            .build();
  624    625   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
@@ -659,660 +719,720 @@
  679    680   
        assert!(
  680    681   
            parsed.double_value.float_equals(&expected_output.double_value),
  681    682   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  682    683   
            expected_output.double_value,
  683    684   
            parsed.double_value
  684    685   
        );
  685    686   
    }
  686    687   
    /// Supports handling -Infinity float values.
  687    688   
    /// Test ID: RestJsonSupportsNegativeInfinityFloatInputs
  688    689   
    #[::tokio::test]
  689         -
    #[allow(unused_mut)]
         690  +
    #[::tracing_test::traced_test]
  690    691   
    async fn rest_json_supports_negative_infinity_float_inputs_response() {
  691    692   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder()
  692    693   
            .set_float_value(::std::option::Option::Some(
  693    694   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  694    695   
            ))
  695    696   
            .set_double_value(::std::option::Option::Some(
  696    697   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  697    698   
            ))
  698    699   
            .build();
  699    700   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/sparse_json_lists.rs

@@ -191,191 +286,287 @@
  211    211   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  212    212   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  213    213   
        })?;
  214    214   
        cfg.interceptor_state()
  215    215   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  216    216   
        ::std::result::Result::Ok(())
  217    217   
    }
  218    218   
}
  219    219   
#[allow(unreachable_code, unused_variables)]
  220    220   
#[cfg(test)]
  221         -
mod sparse_json_lists_request_test {
         221  +
mod sparse_json_lists_test {
         222  +
  222    223   
    /// Serializes null values in sparse lists
  223    224   
    /// Test ID: RestJsonSparseListsSerializeNull
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn rest_json_sparse_lists_serialize_null_request() {
  227    228   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  228    229   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  229    230   
  230    231   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  231    232   
        let result = client
  232    233   
            .sparse_json_lists()
  233    234   
            .set_sparse_string_list(::std::option::Option::Some(vec![
  234    235   
                ::std::option::Option::None,
  235    236   
                ::std::option::Option::Some("hi".to_owned()),
  236    237   
            ]))
  237    238   
            .send()
  238    239   
            .await;
  239    240   
        let _ = dbg!(result);
  240    241   
        let http_request = request_receiver.expect_request();
  241    242   
        let expected_headers = [("Content-Type", "application/json")];
  242    243   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  243    244   
        let body = http_request.body().bytes().expect("body should be strict");
  244    245   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  245    246   
            body,
  246    247   
            "{\n    \"sparseStringList\": [\n        null,\n        \"hi\"\n    ]\n}",
  247    248   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  248    249   
        ));
  249    250   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  250    251   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  251    252   
        ::pretty_assertions::assert_eq!(uri.path(), "/SparseJsonLists", "path was incorrect");
  252    253   
    }
  253    254   
    /// Serializes null values in sparse lists
  254    255   
    /// Test ID: RestJsonSparseListsSerializeNull
  255    256   
    #[::tokio::test]
  256         -
    #[allow(unused_mut)]
         257  +
    #[::tracing_test::traced_test]
  257    258   
    async fn rest_json_sparse_lists_serialize_null_response() {
  258    259   
        let expected_output = crate::operation::sparse_json_lists::SparseJsonListsOutput::builder()
  259    260   
            .set_sparse_string_list(::std::option::Option::Some(vec![
  260    261   
                ::std::option::Option::None,
  261    262   
                ::std::option::Option::Some("hi".to_owned()),
  262    263   
            ]))
  263    264   
            .build();
  264    265   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  265    266   
            ::http::response::Builder::new()
  266    267   
                .header("Content-Type", "application/json")

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/sparse_json_maps.rs

@@ -191,191 +449,450 @@
  211    211   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  212    212   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  213    213   
        })?;
  214    214   
        cfg.interceptor_state()
  215    215   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  216    216   
        ::std::result::Result::Ok(())
  217    217   
    }
  218    218   
}
  219    219   
#[allow(unreachable_code, unused_variables)]
  220    220   
#[cfg(test)]
  221         -
mod sparse_json_maps_request_test {
         221  +
mod sparse_json_maps_test {
         222  +
  222    223   
    /// Serializes JSON maps
  223    224   
    /// Test ID: RestJsonSparseJsonMaps
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn rest_json_sparse_json_maps_request() {
  227    228   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  228    229   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  229    230   
  230    231   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  231    232   
        let result = client
  232    233   
            .sparse_json_maps()
  233    234   
            .set_sparse_struct_map(::std::option::Option::Some({
  234    235   
                let mut ret = ::std::collections::HashMap::new();
  235    236   
                ret.insert(
  236    237   
                    "foo".to_owned(),
  237    238   
                    ::std::option::Option::Some(
  238    239   
                        crate::types::GreetingStruct::builder()
  239    240   
                            .set_hi(::std::option::Option::Some("there".to_owned()))
  240    241   
                            .build(),
  241    242   
                    ),
  242    243   
                );
  243    244   
                ret.insert(
  244    245   
                    "baz".to_owned(),
  245    246   
                    ::std::option::Option::Some(
  246    247   
                        crate::types::GreetingStruct::builder()
  247    248   
                            .set_hi(::std::option::Option::Some("bye".to_owned()))
  248    249   
                            .build(),
  249    250   
                    ),
  250    251   
                );
  251    252   
                ret
  252    253   
            }))
  253    254   
            .send()
  254    255   
            .await;
  255    256   
        let _ = dbg!(result);
  256    257   
        let http_request = request_receiver.expect_request();
  257    258   
        let expected_headers = [("Content-Type", "application/json")];
  258    259   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  259    260   
        let body = http_request.body().bytes().expect("body should be strict");
  260    261   
        ::aws_smithy_protocol_test::assert_ok(
  261    262   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"sparseStructMap\": {\n        \"foo\": {\n            \"hi\": \"there\"\n        },\n        \"baz\": {\n            \"hi\": \"bye\"\n        }\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  262    263   
        );
  263    264   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  264    265   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  265    266   
        ::pretty_assertions::assert_eq!(uri.path(), "/SparseJsonMaps", "path was incorrect");
  266    267   
    }
  267    268   
    /// Serializes JSON map values in sparse maps
  268    269   
    /// Test ID: RestJsonSerializesSparseNullMapValues
  269    270   
    #[::tokio::test]
  270         -
    #[allow(unused_mut)]
         271  +
    #[::tracing_test::traced_test]
  271    272   
    async fn rest_json_serializes_sparse_null_map_values_request() {
  272    273   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  273    274   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  274    275   
  275    276   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  276    277   
        let result = client
  277    278   
            .sparse_json_maps()
  278    279   
            .set_sparse_boolean_map(::std::option::Option::Some({
  279    280   
                let mut ret = ::std::collections::HashMap::new();
  280    281   
                ret.insert("x".to_owned(), ::std::option::Option::None);
  281    282   
                ret
  282    283   
            }))
  283    284   
            .set_sparse_number_map(::std::option::Option::Some({
  284    285   
                let mut ret = ::std::collections::HashMap::new();
  285    286   
                ret.insert("x".to_owned(), ::std::option::Option::None);
  286    287   
                ret
  287    288   
            }))
  288    289   
            .set_sparse_string_map(::std::option::Option::Some({
  289    290   
                let mut ret = ::std::collections::HashMap::new();
  290    291   
                ret.insert("x".to_owned(), ::std::option::Option::None);
  291    292   
                ret
  292    293   
            }))
  293    294   
            .set_sparse_struct_map(::std::option::Option::Some({
  294    295   
                let mut ret = ::std::collections::HashMap::new();
  295    296   
                ret.insert("x".to_owned(), ::std::option::Option::None);
  296    297   
                ret
  297    298   
            }))
  298    299   
            .send()
  299    300   
            .await;
  300    301   
        let _ = dbg!(result);
  301    302   
        let http_request = request_receiver.expect_request();
  302    303   
        let expected_headers = [("Content-Type", "application/json")];
  303    304   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  304    305   
        let body = http_request.body().bytes().expect("body should be strict");
  305    306   
        ::aws_smithy_protocol_test::assert_ok(
  306    307   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"sparseBooleanMap\": {\n        \"x\": null\n    },\n    \"sparseNumberMap\": {\n        \"x\": null\n    },\n    \"sparseStringMap\": {\n        \"x\": null\n    },\n    \"sparseStructMap\": {\n        \"x\": null\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  307    308   
        );
  308    309   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  309    310   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  310    311   
        ::pretty_assertions::assert_eq!(uri.path(), "/SparseJsonMaps", "path was incorrect");
  311    312   
    }
  312    313   
    /// Ensure that 0 and false are sent over the wire in all maps and lists
  313    314   
    /// Test ID: RestJsonSerializesZeroValuesInSparseMaps
  314    315   
    #[::tokio::test]
  315         -
    #[allow(unused_mut)]
         316  +
    #[::tracing_test::traced_test]
  316    317   
    async fn rest_json_serializes_zero_values_in_sparse_maps_request() {
  317    318   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  318    319   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  319    320   
  320    321   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  321    322   
        let result = client
  322    323   
            .sparse_json_maps()
  323    324   
            .set_sparse_number_map(::std::option::Option::Some({
  324    325   
                let mut ret = ::std::collections::HashMap::new();
  325    326   
                ret.insert("x".to_owned(), ::std::option::Option::Some(0));
  326    327   
                ret
  327    328   
            }))
  328    329   
            .set_sparse_boolean_map(::std::option::Option::Some({
  329    330   
                let mut ret = ::std::collections::HashMap::new();
  330    331   
                ret.insert("x".to_owned(), ::std::option::Option::Some(false));
  331    332   
                ret
  332    333   
            }))
  333    334   
            .send()
  334    335   
            .await;
  335    336   
        let _ = dbg!(result);
  336    337   
        let http_request = request_receiver.expect_request();
  337    338   
        let expected_headers = [("Content-Type", "application/json")];
  338    339   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  339    340   
        let body = http_request.body().bytes().expect("body should be strict");
  340    341   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  341    342   
            body,
  342    343   
            "{\n    \"sparseNumberMap\": {\n        \"x\": 0\n    },\n    \"sparseBooleanMap\": {\n        \"x\": false\n    }\n}",
  343    344   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  344    345   
        ));
  345    346   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  346    347   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  347    348   
        ::pretty_assertions::assert_eq!(uri.path(), "/SparseJsonMaps", "path was incorrect");
  348    349   
    }
  349    350   
    /// A request that contains a sparse map of sets
  350    351   
    /// Test ID: RestJsonSerializesSparseSetMap
  351    352   
    #[::tokio::test]
  352         -
    #[allow(unused_mut)]
         353  +
    #[::tracing_test::traced_test]
  353    354   
    async fn rest_json_serializes_sparse_set_map_request() {
  354    355   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  355    356   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  356    357   
  357    358   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  358    359   
        let result = client
  359    360   
            .sparse_json_maps()
  360    361   
            .set_sparse_set_map(::std::option::Option::Some({
  361    362   
                let mut ret = ::std::collections::HashMap::new();
  362    363   
                ret.insert("x".to_owned(), ::std::option::Option::Some(vec![]));
  363    364   
                ret.insert("y".to_owned(), ::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned()]));
  364    365   
                ret
  365    366   
            }))
  366    367   
            .send()
  367    368   
            .await;
  368    369   
        let _ = dbg!(result);
  369    370   
        let http_request = request_receiver.expect_request();
  370    371   
        let expected_headers = [("Content-Type", "application/json")];
  371    372   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  372    373   
        let body = http_request.body().bytes().expect("body should be strict");
  373    374   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  374    375   
            body,
  375    376   
            "{\n    \"sparseSetMap\": {\n        \"x\": [],\n        \"y\": [\"a\", \"b\"]\n    }\n}",
  376    377   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  377    378   
        ));
  378    379   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  379    380   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  380    381   
        ::pretty_assertions::assert_eq!(uri.path(), "/SparseJsonMaps", "path was incorrect");
  381    382   
    }
  382    383   
    /// A request that contains a sparse map of sets.
  383    384   
    /// Test ID: RestJsonSerializesSparseSetMapAndRetainsNull
  384    385   
    #[::tokio::test]
  385         -
    #[allow(unused_mut)]
         386  +
    #[::tracing_test::traced_test]
  386    387   
    async fn rest_json_serializes_sparse_set_map_and_retains_null_request() {
  387    388   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  388    389   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  389    390   
  390    391   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  391    392   
        let result = client
  392    393   
            .sparse_json_maps()
  393    394   
            .set_sparse_set_map(::std::option::Option::Some({
  394    395   
                let mut ret = ::std::collections::HashMap::new();
  395    396   
                ret.insert("x".to_owned(), ::std::option::Option::Some(vec![]));
  396    397   
                ret.insert("y".to_owned(), ::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned()]));
  397    398   
                ret.insert("z".to_owned(), ::std::option::Option::None);
  398    399   
                ret
  399    400   
            }))
  400    401   
            .send()
  401    402   
            .await;
  402    403   
        let _ = dbg!(result);
  403    404   
        let http_request = request_receiver.expect_request();
  404    405   
        let expected_headers = [("Content-Type", "application/json")];
  405    406   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  406    407   
        let body = http_request.body().bytes().expect("body should be strict");
  407    408   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  408    409   
            body,
  409    410   
            "{\n    \"sparseSetMap\": {\n        \"x\": [],\n        \"y\": [\"a\", \"b\"],\n        \"z\": null\n    }\n}",
  410    411   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  411    412   
        ));
  412    413   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  413    414   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  414    415   
        ::pretty_assertions::assert_eq!(uri.path(), "/SparseJsonMaps", "path was incorrect");
  415    416   
    }
  416    417   
    /// Deserializes JSON maps
  417    418   
    /// Test ID: RestJsonSparseJsonMaps
  418    419   
    #[::tokio::test]
  419         -
    #[allow(unused_mut)]
         420  +
    #[::tracing_test::traced_test]
  420    421   
    async fn rest_json_sparse_json_maps_response() {
  421    422   
        let expected_output = crate::operation::sparse_json_maps::SparseJsonMapsOutput::builder()
  422    423   
            .set_sparse_struct_map(::std::option::Option::Some({
  423    424   
                let mut ret = ::std::collections::HashMap::new();
  424    425   
                ret.insert(
  425    426   
                    "foo".to_owned(),
  426    427   
                    ::std::option::Option::Some(
  427    428   
                        crate::types::GreetingStruct::builder()
  428    429   
                            .set_hi(::std::option::Option::Some("there".to_owned()))
  429    430   
                            .build(),
@@ -467,468 +527,528 @@
  487    488   
        );
  488    489   
        ::pretty_assertions::assert_eq!(
  489    490   
            parsed.sparse_set_map,
  490    491   
            expected_output.sparse_set_map,
  491    492   
            "Unexpected value for `sparse_set_map`"
  492    493   
        );
  493    494   
    }
  494    495   
    /// Deserializes null JSON map values
  495    496   
    /// Test ID: RestJsonDeserializesSparseNullMapValues
  496    497   
    #[::tokio::test]
  497         -
    #[allow(unused_mut)]
         498  +
    #[::tracing_test::traced_test]
  498    499   
    async fn rest_json_deserializes_sparse_null_map_values_response() {
  499    500   
        let expected_output = crate::operation::sparse_json_maps::SparseJsonMapsOutput::builder()
  500    501   
            .set_sparse_boolean_map(::std::option::Option::Some({
  501    502   
                let mut ret = ::std::collections::HashMap::new();
  502    503   
                ret.insert("x".to_owned(), ::std::option::Option::None);
  503    504   
                ret
  504    505   
            }))
  505    506   
            .set_sparse_number_map(::std::option::Option::Some({
  506    507   
                let mut ret = ::std::collections::HashMap::new();
  507    508   
                ret.insert("x".to_owned(), ::std::option::Option::None);
@@ -545,546 +605,606 @@
  565    566   
        );
  566    567   
        ::pretty_assertions::assert_eq!(
  567    568   
            parsed.sparse_set_map,
  568    569   
            expected_output.sparse_set_map,
  569    570   
            "Unexpected value for `sparse_set_map`"
  570    571   
        );
  571    572   
    }
  572    573   
    /// Ensure that 0 and false are sent over the wire in all maps and lists
  573    574   
    /// Test ID: RestJsonDeserializesZeroValuesInSparseMaps
  574    575   
    #[::tokio::test]
  575         -
    #[allow(unused_mut)]
         576  +
    #[::tracing_test::traced_test]
  576    577   
    async fn rest_json_deserializes_zero_values_in_sparse_maps_response() {
  577    578   
        let expected_output = crate::operation::sparse_json_maps::SparseJsonMapsOutput::builder()
  578    579   
            .set_sparse_number_map(::std::option::Option::Some({
  579    580   
                let mut ret = ::std::collections::HashMap::new();
  580    581   
                ret.insert("x".to_owned(), ::std::option::Option::Some(0));
  581    582   
                ret
  582    583   
            }))
  583    584   
            .set_sparse_boolean_map(::std::option::Option::Some({
  584    585   
                let mut ret = ::std::collections::HashMap::new();
  585    586   
                ret.insert("x".to_owned(), ::std::option::Option::Some(false));
@@ -617,618 +677,678 @@
  637    638   
        );
  638    639   
        ::pretty_assertions::assert_eq!(
  639    640   
            parsed.sparse_set_map,
  640    641   
            expected_output.sparse_set_map,
  641    642   
            "Unexpected value for `sparse_set_map`"
  642    643   
        );
  643    644   
    }
  644    645   
    /// A response that contains a sparse map of sets
  645    646   
    /// Test ID: RestJsonDeserializesSparseSetMap
  646    647   
    #[::tokio::test]
  647         -
    #[allow(unused_mut)]
         648  +
    #[::tracing_test::traced_test]
  648    649   
    async fn rest_json_deserializes_sparse_set_map_response() {
  649    650   
        let expected_output = crate::operation::sparse_json_maps::SparseJsonMapsOutput::builder()
  650    651   
            .set_sparse_set_map(::std::option::Option::Some({
  651    652   
                let mut ret = ::std::collections::HashMap::new();
  652    653   
                ret.insert("x".to_owned(), ::std::option::Option::Some(vec![]));
  653    654   
                ret.insert("y".to_owned(), ::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned()]));
  654    655   
                ret
  655    656   
            }))
  656    657   
            .build();
  657    658   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
@@ -685,686 +745,746 @@
  705    706   
        );
  706    707   
        ::pretty_assertions::assert_eq!(
  707    708   
            parsed.sparse_set_map,
  708    709   
            expected_output.sparse_set_map,
  709    710   
            "Unexpected value for `sparse_set_map`"
  710    711   
        );
  711    712   
    }
  712    713   
    /// A response that contains a sparse map of sets.
  713    714   
    /// Test ID: RestJsonDeserializesSparseSetMapAndRetainsNull
  714    715   
    #[::tokio::test]
  715         -
    #[allow(unused_mut)]
         716  +
    #[::tracing_test::traced_test]
  716    717   
    async fn rest_json_deserializes_sparse_set_map_and_retains_null_response() {
  717    718   
        let expected_output = crate::operation::sparse_json_maps::SparseJsonMapsOutput::builder()
  718    719   
            .set_sparse_set_map(::std::option::Option::Some({
  719    720   
                let mut ret = ::std::collections::HashMap::new();
  720    721   
                ret.insert("x".to_owned(), ::std::option::Option::Some(vec![]));
  721    722   
                ret.insert("y".to_owned(), ::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned()]));
  722    723   
                ret.insert("z".to_owned(), ::std::option::Option::None);
  723    724   
                ret
  724    725   
            }))
  725    726   
            .build();

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/streaming_traits.rs

@@ -203,203 +368,369 @@
  223    223   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  224    224   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  225    225   
        })?;
  226    226   
        cfg.interceptor_state()
  227    227   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  228    228   
        ::std::result::Result::Ok(())
  229    229   
    }
  230    230   
}
  231    231   
#[allow(unreachable_code, unused_variables)]
  232    232   
#[cfg(test)]
  233         -
mod streaming_traits_request_test {
         233  +
mod streaming_traits_test {
         234  +
  234    235   
    /// Serializes a blob in the HTTP payload
  235    236   
    /// Test ID: RestJsonStreamingTraitsWithBlob
  236    237   
    #[::tokio::test]
  237         -
    #[allow(unused_mut)]
         238  +
    #[::tracing_test::traced_test]
  238    239   
    async fn rest_json_streaming_traits_with_blob_request() {
  239    240   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  240    241   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  241    242   
  242    243   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  243    244   
        let result = client
  244    245   
            .streaming_traits()
  245    246   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  246    247   
            .set_blob(::std::option::Option::Some(::aws_smithy_types::byte_stream::ByteStream::from_static(
  247    248   
                b"blobby blob blob",
  248    249   
            )))
  249    250   
            .send()
  250    251   
            .await;
  251    252   
        let _ = dbg!(result);
  252    253   
        let http_request = request_receiver.expect_request();
  253    254   
        let expected_headers = [("Content-Type", "application/octet-stream"), ("X-Foo", "Foo")];
  254    255   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  255    256   
        let body = http_request.body().bytes().expect("body should be strict");
  256    257   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  257    258   
            body,
  258    259   
            "blobby blob blob",
  259    260   
            ::aws_smithy_protocol_test::MediaType::from("application/octet-stream"),
  260    261   
        ));
  261    262   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  262    263   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  263    264   
        ::pretty_assertions::assert_eq!(uri.path(), "/StreamingTraits", "path was incorrect");
  264    265   
    }
  265    266   
    /// Serializes an empty blob in the HTTP payload
  266    267   
    /// Test ID: RestJsonStreamingTraitsWithNoBlobBody
  267    268   
    #[::tokio::test]
  268         -
    #[allow(unused_mut)]
         269  +
    #[::tracing_test::traced_test]
  269    270   
    async fn rest_json_streaming_traits_with_no_blob_body_request() {
  270    271   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  271    272   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  272    273   
  273    274   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  274    275   
        let result = client
  275    276   
            .streaming_traits()
  276    277   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  277    278   
            .send()
  278    279   
            .await;
  279    280   
        let _ = dbg!(result);
  280    281   
        let http_request = request_receiver.expect_request();
  281    282   
        let expected_headers = [("X-Foo", "Foo")];
  282    283   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  283    284   
        let body = http_request.body().bytes().expect("body should be strict");
  284    285   
        // No body
  285    286   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  286    287   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  287    288   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  288    289   
        ::pretty_assertions::assert_eq!(uri.path(), "/StreamingTraits", "path was incorrect");
  289    290   
    }
  290    291   
    /// Serializes a blob in the HTTP payload
  291    292   
    /// Test ID: RestJsonStreamingTraitsWithBlob
  292    293   
    #[::tokio::test]
  293         -
    #[allow(unused_mut)]
         294  +
    #[::tracing_test::traced_test]
  294    295   
    async fn rest_json_streaming_traits_with_blob_response() {
  295    296   
        let expected_output = crate::operation::streaming_traits::StreamingTraitsOutput::builder()
  296    297   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  297    298   
            .set_blob(::std::option::Option::Some(::aws_smithy_types::byte_stream::ByteStream::from_static(
  298    299   
                b"blobby blob blob",
  299    300   
            )))
  300    301   
            .build();
  301    302   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  302    303   
            ::http::response::Builder::new()
  303    304   
                .header("Content-Type", "application/octet-stream")
  304    305   
                .header("X-Foo", "Foo")
  305    306   
                .status(200)
  306    307   
                .body(::aws_smithy_types::body::SdkBody::from("blobby blob blob"))
  307    308   
                .unwrap(),
  308    309   
        )
  309    310   
        .unwrap();
  310    311   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  311    312   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  312    313   
  313    314   
        let op = crate::operation::streaming_traits::StreamingTraits::new();
  314    315   
        let config = op.config().expect("the operation has config");
  315    316   
        let de = config
  316    317   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  317    318   
            .expect("the config must have a deserializer");
  318    319   
  319    320   
        let parsed = de.deserialize_streaming(&mut http_response);
  320    321   
        let parsed = parsed.unwrap_or_else(|| {
  321    322   
            let http_response =
  322    323   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  323    324   
            de.deserialize_nonstreaming(&http_response)
  324    325   
        });
  325    326   
        let parsed = parsed
  326    327   
            .expect("should be successful response")
  327    328   
            .downcast::<crate::operation::streaming_traits::StreamingTraitsOutput>()
  328    329   
            .unwrap();
  329    330   
        ::pretty_assertions::assert_eq!(parsed.foo, expected_output.foo, "Unexpected value for `foo`");
  330    331   
        ::pretty_assertions::assert_eq!(
  331    332   
            parsed.blob.collect().await.unwrap().into_bytes(),
  332    333   
            expected_output.blob.collect().await.unwrap().into_bytes()
  333    334   
        );
  334    335   
    }
  335    336   
    /// Serializes an empty blob in the HTTP payload
  336    337   
    /// Test ID: RestJsonStreamingTraitsWithNoBlobBody
  337    338   
    #[::tokio::test]
  338         -
    #[allow(unused_mut)]
         339  +
    #[::tracing_test::traced_test]
  339    340   
    async fn rest_json_streaming_traits_with_no_blob_body_response() {
  340    341   
        let expected_output = crate::operation::streaming_traits::StreamingTraitsOutput::builder()
  341    342   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  342    343   
            .build();
  343    344   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  344    345   
            ::http::response::Builder::new()
  345    346   
                .header("X-Foo", "Foo")
  346    347   
                .status(200)
  347    348   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  348    349   
                .unwrap(),

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/streaming_traits_require_length.rs

@@ -199,199 +296,297 @@
  219    219   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  220    220   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  221    221   
        })?;
  222    222   
        cfg.interceptor_state()
  223    223   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  224    224   
        ::std::result::Result::Ok(())
  225    225   
    }
  226    226   
}
  227    227   
#[allow(unreachable_code, unused_variables)]
  228    228   
#[cfg(test)]
  229         -
mod streaming_traits_require_length_request_test {
         229  +
mod streaming_traits_require_length_test {
         230  +
  230    231   
    /// Serializes a blob in the HTTP payload with a required length
  231    232   
    /// Test ID: RestJsonStreamingTraitsRequireLengthWithBlob
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn rest_json_streaming_traits_require_length_with_blob_request() {
  235    236   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  236    237   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  237    238   
  238    239   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  239    240   
        let result = client
  240    241   
            .streaming_traits_require_length()
  241    242   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  242    243   
            .set_blob(::std::option::Option::Some(::aws_smithy_types::byte_stream::ByteStream::from_static(
  243    244   
                b"blobby blob blob",
  244    245   
            )))
  245    246   
            .send()
  246    247   
            .await;
  247    248   
        let _ = dbg!(result);
  248    249   
        let http_request = request_receiver.expect_request();
  249    250   
        let expected_headers = [("Content-Type", "application/octet-stream"), ("X-Foo", "Foo")];
  250    251   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  251    252   
        let required_headers = &["Content-Length"];
  252    253   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  253    254   
        let body = http_request.body().bytes().expect("body should be strict");
  254    255   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  255    256   
            body,
  256    257   
            "blobby blob blob",
  257    258   
            ::aws_smithy_protocol_test::MediaType::from("application/octet-stream"),
  258    259   
        ));
  259    260   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  260    261   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  261    262   
        ::pretty_assertions::assert_eq!(uri.path(), "/StreamingTraitsRequireLength", "path was incorrect");
  262    263   
    }
  263    264   
    /// Serializes an empty blob in the HTTP payload
  264    265   
    /// Test ID: RestJsonStreamingTraitsRequireLengthWithNoBlobBody
  265    266   
    #[::tokio::test]
  266         -
    #[allow(unused_mut)]
         267  +
    #[::tracing_test::traced_test]
  267    268   
    async fn rest_json_streaming_traits_require_length_with_no_blob_body_request() {
  268    269   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  269    270   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  270    271   
  271    272   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  272    273   
        let result = client
  273    274   
            .streaming_traits_require_length()
  274    275   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  275    276   
            .send()
  276    277   
            .await;

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/streaming_traits_with_media_type.rs

@@ -212,212 +307,308 @@
  232    232   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  233    233   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  234    234   
        })?;
  235    235   
        cfg.interceptor_state()
  236    236   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  237    237   
        ::std::result::Result::Ok(())
  238    238   
    }
  239    239   
}
  240    240   
#[allow(unreachable_code, unused_variables)]
  241    241   
#[cfg(test)]
  242         -
mod streaming_traits_with_media_type_request_test {
         242  +
mod streaming_traits_with_media_type_test {
         243  +
  243    244   
    /// Serializes a blob in the HTTP payload with a content-type
  244    245   
    /// Test ID: RestJsonStreamingTraitsWithMediaTypeWithBlob
  245    246   
    #[::tokio::test]
  246         -
    #[allow(unused_mut)]
         247  +
    #[::tracing_test::traced_test]
  247    248   
    async fn rest_json_streaming_traits_with_media_type_with_blob_request() {
  248    249   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  249    250   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  250    251   
  251    252   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  252    253   
        let result = client
  253    254   
            .streaming_traits_with_media_type()
  254    255   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  255    256   
            .set_blob(::std::option::Option::Some(::aws_smithy_types::byte_stream::ByteStream::from_static(
  256    257   
                b"blobby blob blob",
  257    258   
            )))
  258    259   
            .send()
  259    260   
            .await;
  260    261   
        let _ = dbg!(result);
  261    262   
        let http_request = request_receiver.expect_request();
  262    263   
        let expected_headers = [("Content-Type", "text/plain"), ("X-Foo", "Foo")];
  263    264   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  264    265   
        let body = http_request.body().bytes().expect("body should be strict");
  265    266   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  266    267   
            body,
  267    268   
            "blobby blob blob",
  268    269   
            ::aws_smithy_protocol_test::MediaType::from("application/octet-stream"),
  269    270   
        ));
  270    271   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  271    272   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  272    273   
        ::pretty_assertions::assert_eq!(uri.path(), "/StreamingTraitsWithMediaType", "path was incorrect");
  273    274   
    }
  274    275   
    /// Serializes a blob in the HTTP payload with a content-type
  275    276   
    /// Test ID: RestJsonStreamingTraitsWithMediaTypeWithBlob
  276    277   
    #[::tokio::test]
  277         -
    #[allow(unused_mut)]
         278  +
    #[::tracing_test::traced_test]
  278    279   
    async fn rest_json_streaming_traits_with_media_type_with_blob_response() {
  279    280   
        let expected_output = crate::operation::streaming_traits_with_media_type::StreamingTraitsWithMediaTypeOutput::builder()
  280    281   
            .set_foo(::std::option::Option::Some("Foo".to_owned()))
  281    282   
            .set_blob(::std::option::Option::Some(::aws_smithy_types::byte_stream::ByteStream::from_static(
  282    283   
                b"blobby blob blob",
  283    284   
            )))
  284    285   
            .build();
  285    286   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  286    287   
            ::http::response::Builder::new()
  287    288   
                .header("Content-Type", "text/plain")

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/test_body_structure.rs

@@ -198,198 +294,295 @@
  218    218   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  219    219   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  220    220   
        })?;
  221    221   
        cfg.interceptor_state()
  222    222   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  223    223   
        ::std::result::Result::Ok(())
  224    224   
    }
  225    225   
}
  226    226   
#[allow(unreachable_code, unused_variables)]
  227    227   
#[cfg(test)]
  228         -
mod test_body_structure_request_test {
         228  +
mod test_body_structure_test {
         229  +
  229    230   
    /// Serializes a structure
  230    231   
    /// Test ID: RestJsonTestBodyStructure
  231    232   
    #[::tokio::test]
  232         -
    #[allow(unused_mut)]
         233  +
    #[::tracing_test::traced_test]
  233    234   
    async fn rest_json_test_body_structure_request() {
  234    235   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  235    236   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  236    237   
  237    238   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  238    239   
        let result = client
  239    240   
            .test_body_structure()
  240    241   
            .set_test_config(::std::option::Option::Some(
  241    242   
                crate::types::TestConfig::builder().set_timeout(::std::option::Option::Some(10)).build(),
  242    243   
            ))
  243    244   
            .send()
  244    245   
            .await;
  245    246   
        let _ = dbg!(result);
  246    247   
        let http_request = request_receiver.expect_request();
  247    248   
        let expected_headers = [("Content-Type", "application/json")];
  248    249   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  249    250   
        let required_headers = &["Content-Length"];
  250    251   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  251    252   
        let body = http_request.body().bytes().expect("body should be strict");
  252    253   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  253    254   
            body,
  254    255   
            "{\"testConfig\":\n    {\"timeout\": 10}\n}",
  255    256   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  256    257   
        ));
  257    258   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  258    259   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  259    260   
        ::pretty_assertions::assert_eq!(uri.path(), "/body", "path was incorrect");
  260    261   
    }
  261    262   
    /// Serializes an empty structure in the body
  262    263   
    /// Test ID: RestJsonHttpWithEmptyBody
  263    264   
    #[::tokio::test]
  264         -
    #[allow(unused_mut)]
         265  +
    #[::tracing_test::traced_test]
  265    266   
    async fn rest_json_http_with_empty_body_request() {
  266    267   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  267    268   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  268    269   
  269    270   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  270    271   
        let result = client.test_body_structure().send().await;
  271    272   
        let _ = dbg!(result);
  272    273   
        let http_request = request_receiver.expect_request();
  273    274   
        let expected_headers = [("Content-Type", "application/json")];
  274    275   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/test_no_payload.rs

@@ -188,188 +273,274 @@
  208    208   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  209    209   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  210    210   
        })?;
  211    211   
        cfg.interceptor_state()
  212    212   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  213    213   
        ::std::result::Result::Ok(())
  214    214   
    }
  215    215   
}
  216    216   
#[allow(unreachable_code, unused_variables)]
  217    217   
#[cfg(test)]
  218         -
mod test_no_payload_request_test {
         218  +
mod test_no_payload_test {
         219  +
  219    220   
    /// Serializes a GET request with no modeled body
  220    221   
    /// Test ID: RestJsonHttpWithNoModeledBody
  221    222   
    #[::tokio::test]
  222         -
    #[allow(unused_mut)]
         223  +
    #[::tracing_test::traced_test]
  223    224   
    async fn rest_json_http_with_no_modeled_body_request() {
  224    225   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  225    226   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  226    227   
  227    228   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  228    229   
        let result = client.test_no_payload().send().await;
  229    230   
        let _ = dbg!(result);
  230    231   
        let http_request = request_receiver.expect_request();
  231    232   
        let forbidden_headers = &["Content-Length", "Content-Type"];
  232    233   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::forbid_headers(http_request.headers(), forbidden_headers));
  233    234   
        let body = http_request.body().bytes().expect("body should be strict");
  234    235   
        // No body
  235    236   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  236    237   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  237    238   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  238    239   
        ::pretty_assertions::assert_eq!(uri.path(), "/no_payload", "path was incorrect");
  239    240   
    }
  240    241   
    /// Serializes a GET request with header member but no modeled body
  241    242   
    /// Test ID: RestJsonHttpWithHeaderMemberNoModeledBody
  242    243   
    #[::tokio::test]
  243         -
    #[allow(unused_mut)]
         244  +
    #[::tracing_test::traced_test]
  244    245   
    async fn rest_json_http_with_header_member_no_modeled_body_request() {
  245    246   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  246    247   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  247    248   
  248    249   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  249    250   
        let result = client
  250    251   
            .test_no_payload()
  251    252   
            .set_test_id(::std::option::Option::Some("t-12345".to_owned()))
  252    253   
            .send()
  253    254   
            .await;