Client Test

Client Test

rev. 9f5fb9826a6af51ebfb3736d0a778b00ec7b08b3 (ignoring whitespace)

Files changed:

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

@@ -187,187 +294,295 @@
  207    207   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  208    208   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  209    209   
        })?;
  210    210   
        cfg.interceptor_state()
  211    211   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  212    212   
        ::std::result::Result::Ok(())
  213    213   
    }
  214    214   
}
  215    215   
#[allow(unreachable_code, unused_variables)]
  216    216   
#[cfg(test)]
  217         -
mod http_response_code_request_test {
         217  +
mod http_response_code_test {
         218  +
  218    219   
    /// Binds the http response code to an output structure. Note that
  219    220   
    /// even though all members are bound outside of the payload, an
  220    221   
    /// empty JSON object is serialized in the response. However,
  221    222   
    /// clients should be able to handle an empty JSON object or an
  222    223   
    /// empty payload without failing to deserialize a response.
  223    224   
    /// Test ID: RestJsonHttpResponseCode
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn rest_json_http_response_code_response() {
  227    228   
        let expected_output = crate::operation::http_response_code::HttpResponseCodeOutput::builder()
  228    229   
            .set_status(::std::option::Option::Some(201))
  229    230   
            .build();
  230    231   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  231    232   
            ::http::response::Builder::new()
  232    233   
                .header("Content-Type", "application/json")
  233    234   
                .status(201)
  234    235   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  235    236   
                .unwrap(),
  236    237   
        )
  237    238   
        .unwrap();
  238    239   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  239    240   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  240    241   
  241    242   
        let op = crate::operation::http_response_code::HttpResponseCode::new();
  242    243   
        let config = op.config().expect("the operation has config");
  243    244   
        let de = config
  244    245   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  245    246   
            .expect("the config must have a deserializer");
  246    247   
  247    248   
        let parsed = de.deserialize_streaming(&mut http_response);
  248    249   
        let parsed = parsed.unwrap_or_else(|| {
  249    250   
            let http_response =
  250    251   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  251    252   
            de.deserialize_nonstreaming(&http_response)
  252    253   
        });
  253    254   
        let parsed = parsed
  254    255   
            .expect("should be successful response")
  255    256   
            .downcast::<crate::operation::http_response_code::HttpResponseCodeOutput>()
  256    257   
            .unwrap();
  257    258   
        ::pretty_assertions::assert_eq!(parsed.status, expected_output.status, "Unexpected value for `status`");
  258    259   
    }
  259    260   
    /// This test ensures that clients gracefully handle cases where
  260    261   
    /// the service responds with no payload rather than an empty JSON
  261    262   
    /// object.
  262    263   
    /// Test ID: RestJsonHttpResponseCodeWithNoPayload
  263    264   
    #[::tokio::test]
  264         -
    #[allow(unused_mut)]
         265  +
    #[::tracing_test::traced_test]
  265    266   
    async fn rest_json_http_response_code_with_no_payload_response() {
  266    267   
        let expected_output = crate::operation::http_response_code::HttpResponseCodeOutput::builder()
  267    268   
            .set_status(::std::option::Option::Some(201))
  268    269   
            .build();
  269    270   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  270    271   
            ::http::response::Builder::new()
  271    272   
                .status(201)
  272    273   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  273    274   
                .unwrap(),
  274    275   
        )

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

@@ -199,199 +287,288 @@
  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 http_string_payload_request_test {
         229  +
mod http_string_payload_test {
         230  +
  230    231   
    /// Test ID: RestJsonStringPayloadRequest
  231    232   
    #[::tokio::test]
  232         -
    #[allow(unused_mut)]
         233  +
    #[::tracing_test::traced_test]
  233    234   
    async fn rest_json_string_payload_request_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   
            .http_string_payload()
  240    241   
            .set_payload(::std::option::Option::Some("rawstring".to_owned()))
  241    242   
            .send()
  242    243   
            .await;
  243    244   
        let _ = dbg!(result);
  244    245   
        let http_request = request_receiver.expect_request();
  245    246   
        let body = http_request.body().bytes().expect("body should be strict");
  246    247   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  247    248   
            body,
  248    249   
            "rawstring",
  249    250   
            ::aws_smithy_protocol_test::MediaType::from("unknown"),
  250    251   
        ));
  251    252   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  252    253   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  253    254   
        ::pretty_assertions::assert_eq!(uri.path(), "/StringPayload", "path was incorrect");
  254    255   
    }
  255    256   
    /// Test ID: RestJsonStringPayloadResponse
  256    257   
    #[::tokio::test]
  257         -
    #[allow(unused_mut)]
         258  +
    #[::tracing_test::traced_test]
  258    259   
    async fn rest_json_string_payload_response_response() {
  259    260   
        let expected_output = crate::operation::http_string_payload::HttpStringPayloadOutput::builder()
  260    261   
            .set_payload(::std::option::Option::Some("rawstring".to_owned()))
  261    262   
            .build();
  262    263   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  263    264   
            ::http::response::Builder::new()
  264    265   
                .status(200)
  265    266   
                .body(::aws_smithy_types::body::SdkBody::from("rawstring"))
  266    267   
                .unwrap(),
  267    268   
        )

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

@@ -193,193 +297,298 @@
  213    213   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  214    214   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  215    215   
        })?;
  216    216   
        cfg.interceptor_state()
  217    217   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  218    218   
        ::std::result::Result::Ok(())
  219    219   
    }
  220    220   
}
  221    221   
#[allow(unreachable_code, unused_variables)]
  222    222   
#[cfg(test)]
  223         -
mod ignore_query_params_in_response_request_test {
         223  +
mod ignore_query_params_in_response_test {
         224  +
  224    225   
    /// Query parameters must be ignored when serializing the output
  225    226   
    /// of an operation. As of January 2021, server implementations
  226    227   
    /// are expected to respond with a JSON object regardless of
  227    228   
    /// if the output parameters are empty.
  228    229   
    /// Test ID: RestJsonIgnoreQueryParamsInResponse
  229    230   
    #[::tokio::test]
  230         -
    #[allow(unused_mut)]
         231  +
    #[::tracing_test::traced_test]
  231    232   
    async fn rest_json_ignore_query_params_in_response_response() {
  232    233   
        let expected_output = crate::operation::ignore_query_params_in_response::IgnoreQueryParamsInResponseOutput::builder().build();
  233    234   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  234    235   
            ::http::response::Builder::new()
  235    236   
                .header("Content-Type", "application/json")
  236    237   
                .status(200)
  237    238   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  238    239   
                .unwrap(),
  239    240   
        )
  240    241   
        .unwrap();
  241    242   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  242    243   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  243    244   
  244    245   
        let op = crate::operation::ignore_query_params_in_response::IgnoreQueryParamsInResponse::new();
  245    246   
        let config = op.config().expect("the operation has config");
  246    247   
        let de = config
  247    248   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  248    249   
            .expect("the config must have a deserializer");
  249    250   
  250    251   
        let parsed = de.deserialize_streaming(&mut http_response);
  251    252   
        let parsed = parsed.unwrap_or_else(|| {
  252    253   
            let http_response =
  253    254   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  254    255   
            de.deserialize_nonstreaming(&http_response)
  255    256   
        });
  256    257   
        let parsed = parsed
  257    258   
            .expect("should be successful response")
  258    259   
            .downcast::<crate::operation::ignore_query_params_in_response::IgnoreQueryParamsInResponseOutput>()
  259    260   
            .unwrap();
  260    261   
        ::pretty_assertions::assert_eq!(parsed.baz, expected_output.baz, "Unexpected value for `baz`");
  261    262   
    }
  262    263   
    /// This test is similar to RestJsonIgnoreQueryParamsInResponse,
  263    264   
    /// but it ensures that clients gracefully handle responses from
  264    265   
    /// the server that do not serialize an empty JSON object.
  265    266   
    /// Test ID: RestJsonIgnoreQueryParamsInResponseNoPayload
  266    267   
    #[::tokio::test]
  267         -
    #[allow(unused_mut)]
         268  +
    #[::tracing_test::traced_test]
  268    269   
    async fn rest_json_ignore_query_params_in_response_no_payload_response() {
  269    270   
        let expected_output = crate::operation::ignore_query_params_in_response::IgnoreQueryParamsInResponseOutput::builder().build();
  270    271   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  271    272   
            ::http::response::Builder::new()
  272    273   
                .status(200)
  273    274   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  274    275   
                .unwrap(),
  275    276   
        )
  276    277   
        .unwrap();
  277    278   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;

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

@@ -194,194 +553,554 @@
  214    214   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  215    215   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  216    216   
        })?;
  217    217   
        cfg.interceptor_state()
  218    218   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  219    219   
        ::std::result::Result::Ok(())
  220    220   
    }
  221    221   
}
  222    222   
#[allow(unreachable_code, unused_variables)]
  223    223   
#[cfg(test)]
  224         -
mod input_and_output_with_headers_request_test {
         224  +
mod input_and_output_with_headers_test {
  225    225   
    use ::aws_smithy_protocol_test::FloatEquals;
         226  +
  226    227   
    /// Tests requests with string header bindings
  227    228   
    /// Test ID: RestJsonInputAndOutputWithStringHeaders
  228    229   
    #[::tokio::test]
  229         -
    #[allow(unused_mut)]
         230  +
    #[::tracing_test::traced_test]
  230    231   
    async fn rest_json_input_and_output_with_string_headers_request() {
  231    232   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  232    233   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  233    234   
  234    235   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  235    236   
        let result = client
  236    237   
            .input_and_output_with_headers()
  237    238   
            .set_header_string(::std::option::Option::Some("Hello".to_owned()))
  238    239   
            .set_header_string_list(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  239    240   
            .set_header_string_set(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  240    241   
            .send()
  241    242   
            .await;
  242    243   
        let _ = dbg!(result);
  243    244   
        let http_request = request_receiver.expect_request();
  244    245   
        let expected_headers = [("X-String", "Hello"), ("X-StringList", "a, b, c"), ("X-StringSet", "a, b, c")];
  245    246   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  246    247   
        let body = http_request.body().bytes().expect("body should be strict");
  247    248   
        // No body
  248    249   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  249    250   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  250    251   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  251    252   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  252    253   
    }
  253    254   
    /// Tests requests with string list header bindings that require quoting
  254    255   
    /// Test ID: RestJsonInputAndOutputWithQuotedStringHeaders
  255    256   
    #[::tokio::test]
  256         -
    #[allow(unused_mut)]
         257  +
    #[::tracing_test::traced_test]
  257    258   
    async fn rest_json_input_and_output_with_quoted_string_headers_request() {
  258    259   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  259    260   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  260    261   
  261    262   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  262    263   
        let result = client
  263    264   
            .input_and_output_with_headers()
  264    265   
            .set_header_string_list(::std::option::Option::Some(vec!["b,c".to_owned(), "\"def\"".to_owned(), "a".to_owned()]))
  265    266   
            .send()
  266    267   
            .await;
  267    268   
        let _ = dbg!(result);
  268    269   
        let http_request = request_receiver.expect_request();
  269    270   
        let expected_headers = [("X-StringList", "\"b,c\", \"\\\"def\\\"\", a")];
  270    271   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  271    272   
        let body = http_request.body().bytes().expect("body should be strict");
  272    273   
        // No body
  273    274   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  274    275   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  275    276   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  276    277   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  277    278   
    }
  278    279   
    /// Tests requests with numeric header bindings
  279    280   
    /// Test ID: RestJsonInputAndOutputWithNumericHeaders
  280    281   
    #[::tokio::test]
  281         -
    #[allow(unused_mut)]
         282  +
    #[::tracing_test::traced_test]
  282    283   
    async fn rest_json_input_and_output_with_numeric_headers_request() {
  283    284   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  284    285   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  285    286   
  286    287   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  287    288   
        let result = client
  288    289   
            .input_and_output_with_headers()
  289    290   
            .set_header_byte(::std::option::Option::Some(1))
  290    291   
            .set_header_short(::std::option::Option::Some(123))
  291    292   
            .set_header_integer(::std::option::Option::Some(123))
  292    293   
            .set_header_long(::std::option::Option::Some(123))
  293    294   
            .set_header_float(::std::option::Option::Some(1.1_f32))
  294    295   
            .set_header_double(::std::option::Option::Some(1.1_f64))
  295    296   
            .set_header_integer_list(::std::option::Option::Some(vec![1, 2, 3]))
  296    297   
            .send()
  297    298   
            .await;
  298    299   
        let _ = dbg!(result);
  299    300   
        let http_request = request_receiver.expect_request();
  300    301   
        let expected_headers = [
  301    302   
            ("X-Byte", "1"),
  302    303   
            ("X-Double", "1.1"),
  303    304   
            ("X-Float", "1.1"),
  304    305   
            ("X-Integer", "123"),
  305    306   
            ("X-IntegerList", "1, 2, 3"),
  306    307   
            ("X-Long", "123"),
  307    308   
            ("X-Short", "123"),
  308    309   
        ];
  309    310   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  310    311   
        let body = http_request.body().bytes().expect("body should be strict");
  311    312   
        // No body
  312    313   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  313    314   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  314    315   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  315    316   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  316    317   
    }
  317    318   
    /// Tests requests with boolean header bindings
  318    319   
    /// Test ID: RestJsonInputAndOutputWithBooleanHeaders
  319    320   
    #[::tokio::test]
  320         -
    #[allow(unused_mut)]
         321  +
    #[::tracing_test::traced_test]
  321    322   
    async fn rest_json_input_and_output_with_boolean_headers_request() {
  322    323   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  323    324   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  324    325   
  325    326   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  326    327   
        let result = client
  327    328   
            .input_and_output_with_headers()
  328    329   
            .set_header_true_bool(::std::option::Option::Some(true))
  329    330   
            .set_header_false_bool(::std::option::Option::Some(false))
  330    331   
            .set_header_boolean_list(::std::option::Option::Some(vec![true, false, true]))
  331    332   
            .send()
  332    333   
            .await;
  333    334   
        let _ = dbg!(result);
  334    335   
        let http_request = request_receiver.expect_request();
  335    336   
        let expected_headers = [("X-Boolean1", "true"), ("X-Boolean2", "false"), ("X-BooleanList", "true, false, true")];
  336    337   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  337    338   
        let body = http_request.body().bytes().expect("body should be strict");
  338    339   
        // No body
  339    340   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  340    341   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  341    342   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  342    343   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  343    344   
    }
  344    345   
    /// Tests requests with timestamp header bindings
  345    346   
    /// Test ID: RestJsonInputAndOutputWithTimestampHeaders
  346    347   
    #[::tokio::test]
  347         -
    #[allow(unused_mut)]
         348  +
    #[::tracing_test::traced_test]
  348    349   
    async fn rest_json_input_and_output_with_timestamp_headers_request() {
  349    350   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  350    351   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  351    352   
  352    353   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  353    354   
        let result = client
  354    355   
            .input_and_output_with_headers()
  355    356   
            .set_header_timestamp_list(::std::option::Option::Some(vec![
  356    357   
                ::aws_smithy_types::DateTime::from_fractional_secs(1576540098, 0_f64),
  357    358   
                ::aws_smithy_types::DateTime::from_fractional_secs(1576540098, 0_f64),
  358    359   
            ]))
  359    360   
            .send()
  360    361   
            .await;
  361    362   
        let _ = dbg!(result);
  362    363   
        let http_request = request_receiver.expect_request();
  363    364   
        let expected_headers = [("X-TimestampList", "Mon, 16 Dec 2019 23:48:18 GMT, Mon, 16 Dec 2019 23:48:18 GMT")];
  364    365   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  365    366   
        let body = http_request.body().bytes().expect("body should be strict");
  366    367   
        // No body
  367    368   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  368    369   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  369    370   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  370    371   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  371    372   
    }
  372    373   
    /// Tests requests with enum header bindings
  373    374   
    /// Test ID: RestJsonInputAndOutputWithEnumHeaders
  374    375   
    #[::tokio::test]
  375         -
    #[allow(unused_mut)]
         376  +
    #[::tracing_test::traced_test]
  376    377   
    async fn rest_json_input_and_output_with_enum_headers_request() {
  377    378   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  378    379   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  379    380   
  380    381   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  381    382   
        let result = client
  382    383   
            .input_and_output_with_headers()
  383    384   
            .set_header_enum(::std::option::Option::Some(
  384    385   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  385    386   
            ))
  386    387   
            .set_header_enum_list(::std::option::Option::Some(vec![
  387    388   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  388    389   
                "Bar".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  389    390   
                "Baz".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  390    391   
            ]))
  391    392   
            .send()
  392    393   
            .await;
  393    394   
        let _ = dbg!(result);
  394    395   
        let http_request = request_receiver.expect_request();
  395    396   
        let expected_headers = [("X-Enum", "Foo"), ("X-EnumList", "Foo, Bar, Baz")];
  396    397   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  397    398   
        let body = http_request.body().bytes().expect("body should be strict");
  398    399   
        // No body
  399    400   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  400    401   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  401    402   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  402    403   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  403    404   
    }
  404    405   
    /// Tests requests with intEnum header bindings
  405    406   
    /// Test ID: RestJsonInputAndOutputWithIntEnumHeaders
  406    407   
    #[::tokio::test]
  407         -
    #[allow(unused_mut)]
         408  +
    #[::tracing_test::traced_test]
  408    409   
    async fn rest_json_input_and_output_with_int_enum_headers_request() {
  409    410   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  410    411   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  411    412   
  412    413   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  413    414   
        let result = client
  414    415   
            .input_and_output_with_headers()
  415    416   
            .set_header_integer_enum(::std::option::Option::Some(1))
  416    417   
            .set_header_integer_enum_list(::std::option::Option::Some(vec![1, 2, 3]))
  417    418   
            .send()
  418    419   
            .await;
  419    420   
        let _ = dbg!(result);
  420    421   
        let http_request = request_receiver.expect_request();
  421    422   
        let expected_headers = [("X-IntegerEnum", "1"), ("X-IntegerEnumList", "1, 2, 3")];
  422    423   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  423    424   
        let body = http_request.body().bytes().expect("body should be strict");
  424    425   
        // No body
  425    426   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  426    427   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  427    428   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  428    429   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  429    430   
    }
  430    431   
    /// Supports handling NaN float header values.
  431    432   
    /// Test ID: RestJsonSupportsNaNFloatHeaderInputs
  432    433   
    #[::tokio::test]
  433         -
    #[allow(unused_mut)]
         434  +
    #[::tracing_test::traced_test]
  434    435   
    async fn rest_json_supports_na_n_float_header_inputs_request() {
  435    436   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  436    437   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  437    438   
  438    439   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  439    440   
        let result = client
  440    441   
            .input_and_output_with_headers()
  441    442   
            .set_header_float(::std::option::Option::Some(
  442    443   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  443    444   
            ))
  444    445   
            .set_header_double(::std::option::Option::Some(
  445    446   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  446    447   
            ))
  447    448   
            .send()
  448    449   
            .await;
  449    450   
        let _ = dbg!(result);
  450    451   
        let http_request = request_receiver.expect_request();
  451    452   
        let expected_headers = [("X-Double", "NaN"), ("X-Float", "NaN")];
  452    453   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  453    454   
        let body = http_request.body().bytes().expect("body should be strict");
  454    455   
        // No body
  455    456   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  456    457   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  457    458   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  458    459   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  459    460   
    }
  460    461   
    /// Supports handling Infinity float header values.
  461    462   
    /// Test ID: RestJsonSupportsInfinityFloatHeaderInputs
  462    463   
    #[::tokio::test]
  463         -
    #[allow(unused_mut)]
         464  +
    #[::tracing_test::traced_test]
  464    465   
    async fn rest_json_supports_infinity_float_header_inputs_request() {
  465    466   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  466    467   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  467    468   
  468    469   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  469    470   
        let result = client
  470    471   
            .input_and_output_with_headers()
  471    472   
            .set_header_float(::std::option::Option::Some(
  472    473   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  473    474   
            ))
  474    475   
            .set_header_double(::std::option::Option::Some(
  475    476   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  476    477   
            ))
  477    478   
            .send()
  478    479   
            .await;
  479    480   
        let _ = dbg!(result);
  480    481   
        let http_request = request_receiver.expect_request();
  481    482   
        let expected_headers = [("X-Double", "Infinity"), ("X-Float", "Infinity")];
  482    483   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  483    484   
        let body = http_request.body().bytes().expect("body should be strict");
  484    485   
        // No body
  485    486   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  486    487   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  487    488   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  488    489   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  489    490   
    }
  490    491   
    /// Supports handling -Infinity float header values.
  491    492   
    /// Test ID: RestJsonSupportsNegativeInfinityFloatHeaderInputs
  492    493   
    #[::tokio::test]
  493         -
    #[allow(unused_mut)]
         494  +
    #[::tracing_test::traced_test]
  494    495   
    async fn rest_json_supports_negative_infinity_float_header_inputs_request() {
  495    496   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  496    497   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  497    498   
  498    499   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  499    500   
        let result = client
  500    501   
            .input_and_output_with_headers()
  501    502   
            .set_header_float(::std::option::Option::Some(
  502    503   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  503    504   
            ))
  504    505   
            .set_header_double(::std::option::Option::Some(
  505    506   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  506    507   
            ))
  507    508   
            .send()
  508    509   
            .await;
  509    510   
        let _ = dbg!(result);
  510    511   
        let http_request = request_receiver.expect_request();
  511    512   
        let expected_headers = [("X-Double", "-Infinity"), ("X-Float", "-Infinity")];
  512    513   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  513    514   
        let body = http_request.body().bytes().expect("body should be strict");
  514    515   
        // No body
  515    516   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  516    517   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  517    518   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  518    519   
        ::pretty_assertions::assert_eq!(uri.path(), "/InputAndOutputWithHeaders", "path was incorrect");
  519    520   
    }
  520    521   
    /// Tests responses with string header bindings
  521    522   
    /// Test ID: RestJsonInputAndOutputWithStringHeaders
  522    523   
    #[::tokio::test]
  523         -
    #[allow(unused_mut)]
         524  +
    #[::tracing_test::traced_test]
  524    525   
    async fn rest_json_input_and_output_with_string_headers_response() {
  525    526   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
  526    527   
            .set_header_string(::std::option::Option::Some("Hello".to_owned()))
  527    528   
            .set_header_string_list(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  528    529   
            .set_header_string_set(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  529    530   
            .build();
  530    531   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  531    532   
            ::http::response::Builder::new()
  532    533   
                .header("X-String", "Hello")
  533    534   
                .header("X-StringList", "a, b, c")
@@ -609,610 +669,670 @@
  629    630   
        );
  630    631   
        ::pretty_assertions::assert_eq!(
  631    632   
            parsed.header_integer_enum_list,
  632    633   
            expected_output.header_integer_enum_list,
  633    634   
            "Unexpected value for `header_integer_enum_list`"
  634    635   
        );
  635    636   
    }
  636    637   
    /// Tests responses with string list header bindings that require quoting
  637    638   
    /// Test ID: RestJsonInputAndOutputWithQuotedStringHeaders
  638    639   
    #[::tokio::test]
  639         -
    #[allow(unused_mut)]
         640  +
    #[::tracing_test::traced_test]
  640    641   
    async fn rest_json_input_and_output_with_quoted_string_headers_response() {
  641    642   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
  642    643   
            .set_header_string_list(::std::option::Option::Some(vec!["b,c".to_owned(), "\"def\"".to_owned(), "a".to_owned()]))
  643    644   
            .build();
  644    645   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  645    646   
            ::http::response::Builder::new()
  646    647   
                .header("X-StringList", "\"b,c\", \"\\\"def\\\"\", a")
  647    648   
                .status(200)
  648    649   
                .body(::aws_smithy_types::body::SdkBody::from(vec![]))
  649    650   
                .unwrap(),
@@ -721,722 +781,782 @@
  741    742   
        );
  742    743   
        ::pretty_assertions::assert_eq!(
  743    744   
            parsed.header_integer_enum_list,
  744    745   
            expected_output.header_integer_enum_list,
  745    746   
            "Unexpected value for `header_integer_enum_list`"
  746    747   
        );
  747    748   
    }
  748    749   
    /// Tests responses with numeric header bindings
  749    750   
    /// Test ID: RestJsonInputAndOutputWithNumericHeaders
  750    751   
    #[::tokio::test]
  751         -
    #[allow(unused_mut)]
         752  +
    #[::tracing_test::traced_test]
  752    753   
    async fn rest_json_input_and_output_with_numeric_headers_response() {
  753    754   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
  754    755   
            .set_header_byte(::std::option::Option::Some(1))
  755    756   
            .set_header_short(::std::option::Option::Some(123))
  756    757   
            .set_header_integer(::std::option::Option::Some(123))
  757    758   
            .set_header_long(::std::option::Option::Some(123))
  758    759   
            .set_header_float(::std::option::Option::Some(1.1_f32))
  759    760   
            .set_header_double(::std::option::Option::Some(1.1_f64))
  760    761   
            .set_header_integer_list(::std::option::Option::Some(vec![1, 2, 3]))
  761    762   
            .build();
@@ -845,846 +905,906 @@
  865    866   
        );
  866    867   
        ::pretty_assertions::assert_eq!(
  867    868   
            parsed.header_integer_enum_list,
  868    869   
            expected_output.header_integer_enum_list,
  869    870   
            "Unexpected value for `header_integer_enum_list`"
  870    871   
        );
  871    872   
    }
  872    873   
    /// Tests responses with boolean header bindings
  873    874   
    /// Test ID: RestJsonInputAndOutputWithBooleanHeaders
  874    875   
    #[::tokio::test]
  875         -
    #[allow(unused_mut)]
         876  +
    #[::tracing_test::traced_test]
  876    877   
    async fn rest_json_input_and_output_with_boolean_headers_response() {
  877    878   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
  878    879   
            .set_header_true_bool(::std::option::Option::Some(true))
  879    880   
            .set_header_false_bool(::std::option::Option::Some(false))
  880    881   
            .set_header_boolean_list(::std::option::Option::Some(vec![true, false, true]))
  881    882   
            .build();
  882    883   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  883    884   
            ::http::response::Builder::new()
  884    885   
                .header("X-Boolean1", "true")
  885    886   
                .header("X-Boolean2", "false")
@@ -961,962 +1021,1022 @@
  981    982   
        );
  982    983   
        ::pretty_assertions::assert_eq!(
  983    984   
            parsed.header_integer_enum_list,
  984    985   
            expected_output.header_integer_enum_list,
  985    986   
            "Unexpected value for `header_integer_enum_list`"
  986    987   
        );
  987    988   
    }
  988    989   
    /// Tests responses with timestamp header bindings
  989    990   
    /// Test ID: RestJsonInputAndOutputWithTimestampHeaders
  990    991   
    #[::tokio::test]
  991         -
    #[allow(unused_mut)]
         992  +
    #[::tracing_test::traced_test]
  992    993   
    async fn rest_json_input_and_output_with_timestamp_headers_response() {
  993    994   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
  994    995   
            .set_header_timestamp_list(::std::option::Option::Some(vec![
  995    996   
                ::aws_smithy_types::DateTime::from_fractional_secs(1576540098, 0_f64),
  996    997   
                ::aws_smithy_types::DateTime::from_fractional_secs(1576540098, 0_f64),
  997    998   
            ]))
  998    999   
            .build();
  999   1000   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
 1000   1001   
            ::http::response::Builder::new()
 1001   1002   
                .header("X-TimestampList", "Mon, 16 Dec 2019 23:48:18 GMT, Mon, 16 Dec 2019 23:48:18 GMT")
@@ -1076,1077 +1136,1137 @@
 1096   1097   
        );
 1097   1098   
        ::pretty_assertions::assert_eq!(
 1098   1099   
            parsed.header_integer_enum_list,
 1099   1100   
            expected_output.header_integer_enum_list,
 1100   1101   
            "Unexpected value for `header_integer_enum_list`"
 1101   1102   
        );
 1102   1103   
    }
 1103   1104   
    /// Tests responses with enum header bindings
 1104   1105   
    /// Test ID: RestJsonInputAndOutputWithEnumHeaders
 1105   1106   
    #[::tokio::test]
 1106         -
    #[allow(unused_mut)]
        1107  +
    #[::tracing_test::traced_test]
 1107   1108   
    async fn rest_json_input_and_output_with_enum_headers_response() {
 1108   1109   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
 1109   1110   
            .set_header_enum(::std::option::Option::Some(
 1110   1111   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
 1111   1112   
            ))
 1112   1113   
            .set_header_enum_list(::std::option::Option::Some(vec![
 1113   1114   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
 1114   1115   
                "Bar".parse::<crate::types::FooEnum>().expect("static value validated to member"),
 1115   1116   
                "Baz".parse::<crate::types::FooEnum>().expect("static value validated to member"),
 1116   1117   
            ]))
@@ -1196,1197 +1256,1257 @@
 1216   1217   
        );
 1217   1218   
        ::pretty_assertions::assert_eq!(
 1218   1219   
            parsed.header_integer_enum_list,
 1219   1220   
            expected_output.header_integer_enum_list,
 1220   1221   
            "Unexpected value for `header_integer_enum_list`"
 1221   1222   
        );
 1222   1223   
    }
 1223   1224   
    /// Tests responses with intEnum header bindings
 1224   1225   
    /// Test ID: RestJsonInputAndOutputWithIntEnumHeaders
 1225   1226   
    #[::tokio::test]
 1226         -
    #[allow(unused_mut)]
        1227  +
    #[::tracing_test::traced_test]
 1227   1228   
    async fn rest_json_input_and_output_with_int_enum_headers_response() {
 1228   1229   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
 1229   1230   
            .set_header_integer_enum(::std::option::Option::Some(1))
 1230   1231   
            .set_header_integer_enum_list(::std::option::Option::Some(vec![1, 2, 3]))
 1231   1232   
            .build();
 1232   1233   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
 1233   1234   
            ::http::response::Builder::new()
 1234   1235   
                .header("X-IntegerEnum", "1")
 1235   1236   
                .header("X-IntegerEnumList", "1, 2, 3")
 1236   1237   
                .status(200)
@@ -1310,1311 +1370,1371 @@
 1330   1331   
        );
 1331   1332   
        ::pretty_assertions::assert_eq!(
 1332   1333   
            parsed.header_integer_enum_list,
 1333   1334   
            expected_output.header_integer_enum_list,
 1334   1335   
            "Unexpected value for `header_integer_enum_list`"
 1335   1336   
        );
 1336   1337   
    }
 1337   1338   
    /// Supports handling NaN float header values.
 1338   1339   
    /// Test ID: RestJsonSupportsNaNFloatHeaderOutputs
 1339   1340   
    #[::tokio::test]
 1340         -
    #[allow(unused_mut)]
        1341  +
    #[::tracing_test::traced_test]
 1341   1342   
    async fn rest_json_supports_na_n_float_header_outputs_response() {
 1342   1343   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
 1343   1344   
            .set_header_float(::std::option::Option::Some(
 1344   1345   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
 1345   1346   
            ))
 1346   1347   
            .set_header_double(::std::option::Option::Some(
 1347   1348   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
 1348   1349   
            ))
 1349   1350   
            .build();
 1350   1351   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
@@ -1428,1429 +1488,1489 @@
 1448   1449   
        );
 1449   1450   
        ::pretty_assertions::assert_eq!(
 1450   1451   
            parsed.header_integer_enum_list,
 1451   1452   
            expected_output.header_integer_enum_list,
 1452   1453   
            "Unexpected value for `header_integer_enum_list`"
 1453   1454   
        );
 1454   1455   
    }
 1455   1456   
    /// Supports handling Infinity float header values.
 1456   1457   
    /// Test ID: RestJsonSupportsInfinityFloatHeaderOutputs
 1457   1458   
    #[::tokio::test]
 1458         -
    #[allow(unused_mut)]
        1459  +
    #[::tracing_test::traced_test]
 1459   1460   
    async fn rest_json_supports_infinity_float_header_outputs_response() {
 1460   1461   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
 1461   1462   
            .set_header_float(::std::option::Option::Some(
 1462   1463   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
 1463   1464   
            ))
 1464   1465   
            .set_header_double(::std::option::Option::Some(
 1465   1466   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
 1466   1467   
            ))
 1467   1468   
            .build();
 1468   1469   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
@@ -1546,1547 +1606,1607 @@
 1566   1567   
        );
 1567   1568   
        ::pretty_assertions::assert_eq!(
 1568   1569   
            parsed.header_integer_enum_list,
 1569   1570   
            expected_output.header_integer_enum_list,
 1570   1571   
            "Unexpected value for `header_integer_enum_list`"
 1571   1572   
        );
 1572   1573   
    }
 1573   1574   
    /// Supports handling -Infinity float header values.
 1574   1575   
    /// Test ID: RestJsonSupportsNegativeInfinityFloatHeaderOutputs
 1575   1576   
    #[::tokio::test]
 1576         -
    #[allow(unused_mut)]
        1577  +
    #[::tracing_test::traced_test]
 1577   1578   
    async fn rest_json_supports_negative_infinity_float_header_outputs_response() {
 1578   1579   
        let expected_output = crate::operation::input_and_output_with_headers::InputAndOutputWithHeadersOutput::builder()
 1579   1580   
            .set_header_float(::std::option::Option::Some(
 1580   1581   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
 1581   1582   
            ))
 1582   1583   
            .set_header_double(::std::option::Option::Some(
 1583   1584   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
 1584   1585   
            ))
 1585   1586   
            .build();
 1586   1587   
        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/json_blobs.rs

@@ -188,188 +280,281 @@
  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 json_blobs_request_test {
         218  +
mod json_blobs_test {
         219  +
  219    220   
    /// Blobs are base64 encoded
  220    221   
    /// Test ID: RestJsonJsonBlobs
  221    222   
    #[::tokio::test]
  222         -
    #[allow(unused_mut)]
         223  +
    #[::tracing_test::traced_test]
  223    224   
    async fn rest_json_json_blobs_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
  229    230   
            .json_blobs()
  230    231   
            .set_data(::std::option::Option::Some(::aws_smithy_types::Blob::new("value")))
  231    232   
            .send()
  232    233   
            .await;
  233    234   
        let _ = dbg!(result);
  234    235   
        let http_request = request_receiver.expect_request();
  235    236   
        let expected_headers = [("Content-Type", "application/json")];
  236    237   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  237    238   
        let body = http_request.body().bytes().expect("body should be strict");
  238    239   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  239    240   
            body,
  240    241   
            "{\n    \"data\": \"dmFsdWU=\"\n}",
  241    242   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  242    243   
        ));
  243    244   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  244    245   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  245    246   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonBlobs", "path was incorrect");
  246    247   
    }
  247    248   
    /// Blobs are base64 encoded
  248    249   
    /// Test ID: RestJsonJsonBlobs
  249    250   
    #[::tokio::test]
  250         -
    #[allow(unused_mut)]
         251  +
    #[::tracing_test::traced_test]
  251    252   
    async fn rest_json_json_blobs_response() {
  252    253   
        let expected_output = crate::operation::json_blobs::JsonBlobsOutput::builder()
  253    254   
            .set_data(::std::option::Option::Some(::aws_smithy_types::Blob::new("value")))
  254    255   
            .build();
  255    256   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  256    257   
            ::http::response::Builder::new()
  257    258   
                .header("Content-Type", "application/json")
  258    259   
                .status(200)
  259    260   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"data\": \"dmFsdWU=\"\n}"))
  260    261   
                .unwrap(),

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

@@ -188,188 +306,307 @@
  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 json_enums_request_test {
         218  +
mod json_enums_test {
         219  +
  219    220   
    /// Serializes simple scalar properties
  220    221   
    /// Test ID: RestJsonJsonEnums
  221    222   
    #[::tokio::test]
  222         -
    #[allow(unused_mut)]
         223  +
    #[::tracing_test::traced_test]
  223    224   
    async fn rest_json_json_enums_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
  229    230   
            .json_enums()
  230    231   
            .set_foo_enum1(::std::option::Option::Some(
  231    232   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  232    233   
            ))
  233    234   
            .set_foo_enum2(::std::option::Option::Some(
  234    235   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  235    236   
            ))
  236    237   
            .set_foo_enum3(::std::option::Option::Some(
  237    238   
                "1".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  238    239   
            ))
  239    240   
            .set_foo_enum_list(::std::option::Option::Some(vec![
  240    241   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  241    242   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  242    243   
            ]))
  243    244   
            .set_foo_enum_set(::std::option::Option::Some(vec![
  244    245   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  245    246   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  246    247   
            ]))
  247    248   
            .set_foo_enum_map(::std::option::Option::Some({
  248    249   
                let mut ret = ::std::collections::HashMap::new();
  249    250   
                ret.insert(
  250    251   
                    "hi".to_owned(),
  251    252   
                    "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  252    253   
                );
  253    254   
                ret.insert(
  254    255   
                    "zero".to_owned(),
  255    256   
                    "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  256    257   
                );
  257    258   
                ret
  258    259   
            }))
  259    260   
            .send()
  260    261   
            .await;
  261    262   
        let _ = dbg!(result);
  262    263   
        let http_request = request_receiver.expect_request();
  263    264   
        let expected_headers = [("Content-Type", "application/json")];
  264    265   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  265    266   
        let body = http_request.body().bytes().expect("body should be strict");
  266    267   
        ::aws_smithy_protocol_test::assert_ok(
  267    268   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"fooEnum1\": \"Foo\",\n    \"fooEnum2\": \"0\",\n    \"fooEnum3\": \"1\",\n    \"fooEnumList\": [\n        \"Foo\",\n        \"0\"\n    ],\n    \"fooEnumSet\": [\n        \"Foo\",\n        \"0\"\n    ],\n    \"fooEnumMap\": {\n        \"hi\": \"Foo\",\n        \"zero\": \"0\"\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  268    269   
        );
  269    270   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  270    271   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  271    272   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonEnums", "path was incorrect");
  272    273   
    }
  273    274   
    /// Serializes simple scalar properties
  274    275   
    /// Test ID: RestJsonJsonEnums
  275    276   
    #[::tokio::test]
  276         -
    #[allow(unused_mut)]
         277  +
    #[::tracing_test::traced_test]
  277    278   
    async fn rest_json_json_enums_response() {
  278    279   
        let expected_output = crate::operation::json_enums::JsonEnumsOutput::builder()
  279    280   
            .set_foo_enum1(::std::option::Option::Some(
  280    281   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  281    282   
            ))
  282    283   
            .set_foo_enum2(::std::option::Option::Some(
  283    284   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  284    285   
            ))
  285    286   
            .set_foo_enum3(::std::option::Option::Some(
  286    287   
                "1".parse::<crate::types::FooEnum>().expect("static value validated to member"),

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

@@ -191,191 +291,292 @@
  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 json_int_enums_request_test {
         221  +
mod json_int_enums_test {
         222  +
  222    223   
    /// Serializes intEnums as integers
  223    224   
    /// Test ID: RestJsonJsonIntEnums
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn rest_json_json_int_enums_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   
            .json_int_enums()
  233    234   
            .set_integer_enum1(::std::option::Option::Some(1))
  234    235   
            .set_integer_enum2(::std::option::Option::Some(2))
  235    236   
            .set_integer_enum3(::std::option::Option::Some(3))
  236    237   
            .set_integer_enum_list(::std::option::Option::Some(vec![1, 2, 3]))
  237    238   
            .set_integer_enum_set(::std::option::Option::Some(vec![1, 2]))
  238    239   
            .set_integer_enum_map(::std::option::Option::Some({
  239    240   
                let mut ret = ::std::collections::HashMap::new();
  240    241   
                ret.insert("abc".to_owned(), 1);
  241    242   
                ret.insert("def".to_owned(), 2);
  242    243   
                ret
  243    244   
            }))
  244    245   
            .send()
  245    246   
            .await;
  246    247   
        let _ = dbg!(result);
  247    248   
        let http_request = request_receiver.expect_request();
  248    249   
        let expected_headers = [("Content-Type", "application/json")];
  249    250   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  250    251   
        let body = http_request.body().bytes().expect("body should be strict");
  251    252   
        ::aws_smithy_protocol_test::assert_ok(
  252    253   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"integerEnum1\": 1,\n    \"integerEnum2\": 2,\n    \"integerEnum3\": 3,\n    \"integerEnumList\": [\n        1,\n        2,\n        3\n    ],\n    \"integerEnumSet\": [\n        1,\n        2\n    ],\n    \"integerEnumMap\": {\n        \"abc\": 1,\n        \"def\": 2\n    }\n}", ::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(), "PUT", "method was incorrect");
  256    257   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonIntEnums", "path was incorrect");
  257    258   
    }
  258    259   
    /// Serializes intEnums as integers
  259    260   
    /// Test ID: RestJsonJsonIntEnums
  260    261   
    #[::tokio::test]
  261         -
    #[allow(unused_mut)]
         262  +
    #[::tracing_test::traced_test]
  262    263   
    async fn rest_json_json_int_enums_response() {
  263    264   
        let expected_output = crate::operation::json_int_enums::JsonIntEnumsOutput::builder()
  264    265   
            .set_integer_enum1(::std::option::Option::Some(1))
  265    266   
            .set_integer_enum2(::std::option::Option::Some(2))
  266    267   
            .set_integer_enum3(::std::option::Option::Some(3))
  267    268   
            .set_integer_enum_list(::std::option::Option::Some(vec![1, 2, 3]))
  268    269   
            .set_integer_enum_set(::std::option::Option::Some(vec![1, 2]))
  269    270   
            .set_integer_enum_map(::std::option::Option::Some({
  270    271   
                let mut ret = ::std::collections::HashMap::new();
  271    272   
                ret.insert("abc".to_owned(), 1);

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

@@ -188,188 +328,329 @@
  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 json_lists_request_test {
         218  +
mod json_lists_test {
         219  +
  219    220   
    /// Serializes JSON lists
  220    221   
    /// Test ID: RestJsonLists
  221    222   
    #[::tokio::test]
  222         -
    #[allow(unused_mut)]
         223  +
    #[::tracing_test::traced_test]
  223    224   
    async fn rest_json_lists_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
  229    230   
            .json_lists()
  230    231   
            .set_string_list(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  231    232   
            .set_string_set(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  232    233   
            .set_integer_list(::std::option::Option::Some(vec![1, 2]))
  233    234   
            .set_boolean_list(::std::option::Option::Some(vec![true, false]))
  234    235   
            .set_timestamp_list(::std::option::Option::Some(vec![
  235    236   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  236    237   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  237    238   
            ]))
  238    239   
            .set_enum_list(::std::option::Option::Some(vec![
  239    240   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  240    241   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  241    242   
            ]))
  242    243   
            .set_int_enum_list(::std::option::Option::Some(vec![1, 2]))
  243    244   
            .set_nested_string_list(::std::option::Option::Some(vec![
  244    245   
                vec!["foo".to_owned(), "bar".to_owned()],
  245    246   
                vec!["baz".to_owned(), "qux".to_owned()],
  246    247   
            ]))
  247    248   
            .set_structure_list(::std::option::Option::Some(vec![
  248    249   
                crate::types::StructureListMember::builder()
  249    250   
                    .set_a(::std::option::Option::Some("1".to_owned()))
  250    251   
                    .set_b(::std::option::Option::Some("2".to_owned()))
  251    252   
                    .build(),
  252    253   
                crate::types::StructureListMember::builder()
  253    254   
                    .set_a(::std::option::Option::Some("3".to_owned()))
  254    255   
                    .set_b(::std::option::Option::Some("4".to_owned()))
  255    256   
                    .build(),
  256    257   
            ]))
  257    258   
            .send()
  258    259   
            .await;
  259    260   
        let _ = dbg!(result);
  260    261   
        let http_request = request_receiver.expect_request();
  261    262   
        let expected_headers = [("Content-Type", "application/json")];
  262    263   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  263    264   
        let body = http_request.body().bytes().expect("body should be strict");
  264    265   
        ::aws_smithy_protocol_test::assert_ok(
  265    266   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"stringList\": [\n        \"foo\",\n        \"bar\"\n    ],\n    \"stringSet\": [\n        \"foo\",\n        \"bar\"\n    ],\n    \"integerList\": [\n        1,\n        2\n    ],\n    \"booleanList\": [\n        true,\n        false\n    ],\n    \"timestampList\": [\n        1398796238,\n        1398796238\n    ],\n    \"enumList\": [\n        \"Foo\",\n        \"0\"\n    ],\n    \"intEnumList\": [\n        1,\n        2\n    ],\n    \"nestedStringList\": [\n        [\n            \"foo\",\n            \"bar\"\n        ],\n        [\n            \"baz\",\n            \"qux\"\n        ]\n    ],\n    \"myStructureList\": [\n        {\n            \"value\": \"1\",\n            \"other\": \"2\"\n        },\n        {\n            \"value\": \"3\",\n            \"other\": \"4\"\n        }\n    ]\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  266    267   
        );
  267    268   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  268    269   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  269    270   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonLists", "path was incorrect");
  270    271   
    }
  271    272   
    /// Serializes empty JSON lists
  272    273   
    /// Test ID: RestJsonListsEmpty
  273    274   
    #[::tokio::test]
  274         -
    #[allow(unused_mut)]
         275  +
    #[::tracing_test::traced_test]
  275    276   
    async fn rest_json_lists_empty_request() {
  276    277   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  277    278   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  278    279   
  279    280   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  280    281   
        let result = client.json_lists().set_string_list(::std::option::Option::Some(vec![])).send().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   
            "{\n    \"stringList\": []\n}",
  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(), "/JsonLists", "path was incorrect");
  294    295   
    }
  295    296   
    /// Serializes JSON lists
  296    297   
    /// Test ID: RestJsonLists
  297    298   
    #[::tokio::test]
  298         -
    #[allow(unused_mut)]
         299  +
    #[::tracing_test::traced_test]
  299    300   
    async fn rest_json_lists_response() {
  300    301   
        let expected_output = crate::operation::json_lists::JsonListsOutput::builder()
  301    302   
            .set_string_list(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  302    303   
            .set_string_set(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  303    304   
            .set_integer_list(::std::option::Option::Some(vec![1, 2]))
  304    305   
            .set_boolean_list(::std::option::Option::Some(vec![true, false]))
  305    306   
            .set_timestamp_list(::std::option::Option::Some(vec![
  306    307   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  307    308   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  308    309   
            ]))
@@ -353,354 +413,414 @@
  373    374   
        );
  374    375   
        ::pretty_assertions::assert_eq!(
  375    376   
            parsed.structure_list,
  376    377   
            expected_output.structure_list,
  377    378   
            "Unexpected value for `structure_list`"
  378    379   
        );
  379    380   
    }
  380    381   
    /// Serializes empty JSON lists
  381    382   
    /// Test ID: RestJsonListsEmpty
  382    383   
    #[::tokio::test]
  383         -
    #[allow(unused_mut)]
         384  +
    #[::tracing_test::traced_test]
  384    385   
    async fn rest_json_lists_empty_response() {
  385    386   
        let expected_output = crate::operation::json_lists::JsonListsOutput::builder()
  386    387   
            .set_string_list(::std::option::Option::Some(vec![]))
  387    388   
            .build();
  388    389   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  389    390   
            ::http::response::Builder::new()
  390    391   
                .header("Content-Type", "application/json")
  391    392   
                .status(200)
  392    393   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"stringList\": []\n}"))
  393    394   
                .unwrap(),

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

@@ -184,184 +359,360 @@
  204    204   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  205    205   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  206    206   
        })?;
  207    207   
        cfg.interceptor_state()
  208    208   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  209    209   
        ::std::result::Result::Ok(())
  210    210   
    }
  211    211   
}
  212    212   
#[allow(unreachable_code, unused_variables)]
  213    213   
#[cfg(test)]
  214         -
mod json_maps_request_test {
         214  +
mod json_maps_test {
         215  +
  215    216   
    /// Serializes JSON maps
  216    217   
    /// Test ID: RestJsonJsonMaps
  217    218   
    #[::tokio::test]
  218         -
    #[allow(unused_mut)]
         219  +
    #[::tracing_test::traced_test]
  219    220   
    async fn rest_json_json_maps_request() {
  220    221   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  221    222   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  222    223   
  223    224   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  224    225   
        let result = client
  225    226   
            .json_maps()
  226    227   
            .set_dense_struct_map(::std::option::Option::Some({
  227    228   
                let mut ret = ::std::collections::HashMap::new();
  228    229   
                ret.insert(
  229    230   
                    "foo".to_owned(),
  230    231   
                    crate::types::GreetingStruct::builder()
  231    232   
                        .set_hi(::std::option::Option::Some("there".to_owned()))
  232    233   
                        .build(),
  233    234   
                );
  234    235   
                ret.insert(
  235    236   
                    "baz".to_owned(),
  236    237   
                    crate::types::GreetingStruct::builder()
  237    238   
                        .set_hi(::std::option::Option::Some("bye".to_owned()))
  238    239   
                        .build(),
  239    240   
                );
  240    241   
                ret
  241    242   
            }))
  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(
  250    251   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"denseStructMap\": {\n        \"foo\": {\n            \"hi\": \"there\"\n        },\n        \"baz\": {\n            \"hi\": \"bye\"\n        }\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  251    252   
        );
  252    253   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  253    254   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  254    255   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonMaps", "path was incorrect");
  255    256   
    }
  256    257   
    /// Ensure that 0 and false are sent over the wire in all maps and lists
  257    258   
    /// Test ID: RestJsonSerializesZeroValuesInMaps
  258    259   
    #[::tokio::test]
  259         -
    #[allow(unused_mut)]
         260  +
    #[::tracing_test::traced_test]
  260    261   
    async fn rest_json_serializes_zero_values_in_maps_request() {
  261    262   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  262    263   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  263    264   
  264    265   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  265    266   
        let result = client
  266    267   
            .json_maps()
  267    268   
            .set_dense_number_map(::std::option::Option::Some({
  268    269   
                let mut ret = ::std::collections::HashMap::new();
  269    270   
                ret.insert("x".to_owned(), 0);
  270    271   
                ret
  271    272   
            }))
  272    273   
            .set_dense_boolean_map(::std::option::Option::Some({
  273    274   
                let mut ret = ::std::collections::HashMap::new();
  274    275   
                ret.insert("x".to_owned(), false);
  275    276   
                ret
  276    277   
            }))
  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 = [("Content-Type", "application/json")];
  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   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  285    286   
            body,
  286    287   
            "{\n    \"denseNumberMap\": {\n        \"x\": 0\n    },\n    \"denseBooleanMap\": {\n        \"x\": false\n    }\n}",
  287    288   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  288    289   
        ));
  289    290   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  290    291   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  291    292   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonMaps", "path was incorrect");
  292    293   
    }
  293    294   
    /// A request that contains a dense map of sets.
  294    295   
    /// Test ID: RestJsonSerializesDenseSetMap
  295    296   
    #[::tokio::test]
  296         -
    #[allow(unused_mut)]
         297  +
    #[::tracing_test::traced_test]
  297    298   
    async fn rest_json_serializes_dense_set_map_request() {
  298    299   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  299    300   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  300    301   
  301    302   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  302    303   
        let result = client
  303    304   
            .json_maps()
  304    305   
            .set_dense_set_map(::std::option::Option::Some({
  305    306   
                let mut ret = ::std::collections::HashMap::new();
  306    307   
                ret.insert("x".to_owned(), vec![]);
  307    308   
                ret.insert("y".to_owned(), vec!["a".to_owned(), "b".to_owned()]);
  308    309   
                ret
  309    310   
            }))
  310    311   
            .send()
  311    312   
            .await;
  312    313   
        let _ = dbg!(result);
  313    314   
        let http_request = request_receiver.expect_request();
  314    315   
        let expected_headers = [("Content-Type", "application/json")];
  315    316   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  316    317   
        let body = http_request.body().bytes().expect("body should be strict");
  317    318   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  318    319   
            body,
  319    320   
            "{\n    \"denseSetMap\": {\n        \"x\": [],\n        \"y\": [\"a\", \"b\"]\n    }\n}",
  320    321   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  321    322   
        ));
  322    323   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  323    324   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  324    325   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonMaps", "path was incorrect");
  325    326   
    }
  326    327   
    /// Deserializes JSON maps
  327    328   
    /// Test ID: RestJsonJsonMaps
  328    329   
    #[::tokio::test]
  329         -
    #[allow(unused_mut)]
         330  +
    #[::tracing_test::traced_test]
  330    331   
    async fn rest_json_json_maps_response() {
  331    332   
        let expected_output = crate::operation::json_maps::JsonMapsOutput::builder()
  332    333   
            .set_dense_struct_map(::std::option::Option::Some({
  333    334   
                let mut ret = ::std::collections::HashMap::new();
  334    335   
                ret.insert(
  335    336   
                    "foo".to_owned(),
  336    337   
                    crate::types::GreetingStruct::builder()
  337    338   
                        .set_hi(::std::option::Option::Some("there".to_owned()))
  338    339   
                        .build(),
  339    340   
                );
@@ -373,374 +433,434 @@
  393    394   
        );
  394    395   
        ::pretty_assertions::assert_eq!(
  395    396   
            parsed.dense_set_map,
  396    397   
            expected_output.dense_set_map,
  397    398   
            "Unexpected value for `dense_set_map`"
  398    399   
        );
  399    400   
    }
  400    401   
    /// Ensure that 0 and false are sent over the wire in all maps and lists
  401    402   
    /// Test ID: RestJsonDeserializesZeroValuesInMaps
  402    403   
    #[::tokio::test]
  403         -
    #[allow(unused_mut)]
         404  +
    #[::tracing_test::traced_test]
  404    405   
    async fn rest_json_deserializes_zero_values_in_maps_response() {
  405    406   
        let expected_output = crate::operation::json_maps::JsonMapsOutput::builder()
  406    407   
            .set_dense_number_map(::std::option::Option::Some({
  407    408   
                let mut ret = ::std::collections::HashMap::new();
  408    409   
                ret.insert("x".to_owned(), 0);
  409    410   
                ret
  410    411   
            }))
  411    412   
            .set_dense_boolean_map(::std::option::Option::Some({
  412    413   
                let mut ret = ::std::collections::HashMap::new();
  413    414   
                ret.insert("x".to_owned(), false);
@@ -445,446 +505,506 @@
  465    466   
        );
  466    467   
        ::pretty_assertions::assert_eq!(
  467    468   
            parsed.dense_set_map,
  468    469   
            expected_output.dense_set_map,
  469    470   
            "Unexpected value for `dense_set_map`"
  470    471   
        );
  471    472   
    }
  472    473   
    /// A response that contains a dense map of sets.
  473    474   
    /// Test ID: RestJsonDeserializesDenseSetMap
  474    475   
    #[::tokio::test]
  475         -
    #[allow(unused_mut)]
         476  +
    #[::tracing_test::traced_test]
  476    477   
    async fn rest_json_deserializes_dense_set_map_response() {
  477    478   
        let expected_output = crate::operation::json_maps::JsonMapsOutput::builder()
  478    479   
            .set_dense_set_map(::std::option::Option::Some({
  479    480   
                let mut ret = ::std::collections::HashMap::new();
  480    481   
                ret.insert("x".to_owned(), vec![]);
  481    482   
                ret.insert("y".to_owned(), vec!["a".to_owned(), "b".to_owned()]);
  482    483   
                ret
  483    484   
            }))
  484    485   
            .build();
  485    486   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
@@ -514,515 +574,575 @@
  534    535   
        ::pretty_assertions::assert_eq!(
  535    536   
            parsed.dense_set_map,
  536    537   
            expected_output.dense_set_map,
  537    538   
            "Unexpected value for `dense_set_map`"
  538    539   
        );
  539    540   
    }
  540    541   
    /// Clients SHOULD tolerate seeing a null value in a dense map, and they SHOULD
  541    542   
    /// drop the null key-value pair.
  542    543   
    /// Test ID: RestJsonDeserializesDenseSetMapAndSkipsNull
  543    544   
    #[::tokio::test]
  544         -
    #[allow(unused_mut)]
         545  +
    #[::tracing_test::traced_test]
  545    546   
    async fn rest_json_deserializes_dense_set_map_and_skips_null_response() {
  546    547   
        let expected_output = crate::operation::json_maps::JsonMapsOutput::builder()
  547    548   
            .set_dense_set_map(::std::option::Option::Some({
  548    549   
                let mut ret = ::std::collections::HashMap::new();
  549    550   
                ret.insert("x".to_owned(), vec![]);
  550    551   
                ret.insert("y".to_owned(), vec!["a".to_owned(), "b".to_owned()]);
  551    552   
                ret
  552    553   
            }))
  553    554   
            .build();
  554    555   
        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/json_timestamps.rs

@@ -191,191 +526,527 @@
  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 json_timestamps_request_test {
         221  +
mod json_timestamps_test {
         222  +
  222    223   
    /// Tests how normal timestamps are serialized
  223    224   
    /// Test ID: RestJsonJsonTimestamps
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn rest_json_json_timestamps_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   
            .json_timestamps()
  233    234   
            .set_normal(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  234    235   
                1398796238, 0_f64,
  235    236   
            )))
  236    237   
            .send()
  237    238   
            .await;
  238    239   
        let _ = dbg!(result);
  239    240   
        let http_request = request_receiver.expect_request();
  240    241   
        let expected_headers = [("Content-Type", "application/json")];
  241    242   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  242    243   
        let body = http_request.body().bytes().expect("body should be strict");
  243    244   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  244    245   
            body,
  245    246   
            "{\n    \"normal\": 1398796238\n}",
  246    247   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  247    248   
        ));
  248    249   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  249    250   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  250    251   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonTimestamps", "path was incorrect");
  251    252   
    }
  252    253   
    /// Ensures that the timestampFormat of date-time works like normal timestamps
  253    254   
    /// Test ID: RestJsonJsonTimestampsWithDateTimeFormat
  254    255   
    #[::tokio::test]
  255         -
    #[allow(unused_mut)]
         256  +
    #[::tracing_test::traced_test]
  256    257   
    async fn rest_json_json_timestamps_with_date_time_format_request() {
  257    258   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  258    259   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  259    260   
  260    261   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  261    262   
        let result = client
  262    263   
            .json_timestamps()
  263    264   
            .set_date_time(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  264    265   
                1398796238, 0_f64,
  265    266   
            )))
  266    267   
            .send()
  267    268   
            .await;
  268    269   
        let _ = dbg!(result);
  269    270   
        let http_request = request_receiver.expect_request();
  270    271   
        let expected_headers = [("Content-Type", "application/json")];
  271    272   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  272    273   
        let body = http_request.body().bytes().expect("body should be strict");
  273    274   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  274    275   
            body,
  275    276   
            "{\n    \"dateTime\": \"2014-04-29T18:30:38Z\"\n}",
  276    277   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  277    278   
        ));
  278    279   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  279    280   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  280    281   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonTimestamps", "path was incorrect");
  281    282   
    }
  282    283   
    /// Ensures that the timestampFormat of date-time on the target shape works like normal timestamps
  283    284   
    /// Test ID: RestJsonJsonTimestampsWithDateTimeOnTargetFormat
  284    285   
    #[::tokio::test]
  285         -
    #[allow(unused_mut)]
         286  +
    #[::tracing_test::traced_test]
  286    287   
    async fn rest_json_json_timestamps_with_date_time_on_target_format_request() {
  287    288   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  288    289   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  289    290   
  290    291   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  291    292   
        let result = client
  292    293   
            .json_timestamps()
  293    294   
            .set_date_time_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  294    295   
                1398796238, 0_f64,
  295    296   
            )))
  296    297   
            .send()
  297    298   
            .await;
  298    299   
        let _ = dbg!(result);
  299    300   
        let http_request = request_receiver.expect_request();
  300    301   
        let expected_headers = [("Content-Type", "application/json")];
  301    302   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  302    303   
        let body = http_request.body().bytes().expect("body should be strict");
  303    304   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  304    305   
            body,
  305    306   
            "{\n    \"dateTimeOnTarget\": \"2014-04-29T18:30:38Z\"\n}",
  306    307   
            ::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(), "/JsonTimestamps", "path was incorrect");
  311    312   
    }
  312    313   
    /// Ensures that the timestampFormat of epoch-seconds works
  313    314   
    /// Test ID: RestJsonJsonTimestampsWithEpochSecondsFormat
  314    315   
    #[::tokio::test]
  315         -
    #[allow(unused_mut)]
         316  +
    #[::tracing_test::traced_test]
  316    317   
    async fn rest_json_json_timestamps_with_epoch_seconds_format_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   
            .json_timestamps()
  323    324   
            .set_epoch_seconds(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  324    325   
                1398796238, 0_f64,
  325    326   
            )))
  326    327   
            .send()
  327    328   
            .await;
  328    329   
        let _ = dbg!(result);
  329    330   
        let http_request = request_receiver.expect_request();
  330    331   
        let expected_headers = [("Content-Type", "application/json")];
  331    332   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  332    333   
        let body = http_request.body().bytes().expect("body should be strict");
  333    334   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  334    335   
            body,
  335    336   
            "{\n    \"epochSeconds\": 1398796238\n}",
  336    337   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  337    338   
        ));
  338    339   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  339    340   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  340    341   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonTimestamps", "path was incorrect");
  341    342   
    }
  342    343   
    /// Ensures that the timestampFormat of epoch-seconds on the target shape works
  343    344   
    /// Test ID: RestJsonJsonTimestampsWithEpochSecondsOnTargetFormat
  344    345   
    #[::tokio::test]
  345         -
    #[allow(unused_mut)]
         346  +
    #[::tracing_test::traced_test]
  346    347   
    async fn rest_json_json_timestamps_with_epoch_seconds_on_target_format_request() {
  347    348   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  348    349   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  349    350   
  350    351   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  351    352   
        let result = client
  352    353   
            .json_timestamps()
  353    354   
            .set_epoch_seconds_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  354    355   
                1398796238, 0_f64,
  355    356   
            )))
  356    357   
            .send()
  357    358   
            .await;
  358    359   
        let _ = dbg!(result);
  359    360   
        let http_request = request_receiver.expect_request();
  360    361   
        let expected_headers = [("Content-Type", "application/json")];
  361    362   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  362    363   
        let body = http_request.body().bytes().expect("body should be strict");
  363    364   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  364    365   
            body,
  365    366   
            "{\n    \"epochSecondsOnTarget\": 1398796238\n}",
  366    367   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  367    368   
        ));
  368    369   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  369    370   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  370    371   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonTimestamps", "path was incorrect");
  371    372   
    }
  372    373   
    /// Ensures that the timestampFormat of http-date works
  373    374   
    /// Test ID: RestJsonJsonTimestampsWithHttpDateFormat
  374    375   
    #[::tokio::test]
  375         -
    #[allow(unused_mut)]
         376  +
    #[::tracing_test::traced_test]
  376    377   
    async fn rest_json_json_timestamps_with_http_date_format_request() {
  377    378   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  378    379   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  379    380   
  380    381   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  381    382   
        let result = client
  382    383   
            .json_timestamps()
  383    384   
            .set_http_date(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  384    385   
                1398796238, 0_f64,
  385    386   
            )))
  386    387   
            .send()
  387    388   
            .await;
  388    389   
        let _ = dbg!(result);
  389    390   
        let http_request = request_receiver.expect_request();
  390    391   
        let expected_headers = [("Content-Type", "application/json")];
  391    392   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  392    393   
        let body = http_request.body().bytes().expect("body should be strict");
  393    394   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  394    395   
            body,
  395    396   
            "{\n    \"httpDate\": \"Tue, 29 Apr 2014 18:30:38 GMT\"\n}",
  396    397   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  397    398   
        ));
  398    399   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  399    400   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  400    401   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonTimestamps", "path was incorrect");
  401    402   
    }
  402    403   
    /// Ensures that the timestampFormat of http-date on the target shape works
  403    404   
    /// Test ID: RestJsonJsonTimestampsWithHttpDateOnTargetFormat
  404    405   
    #[::tokio::test]
  405         -
    #[allow(unused_mut)]
         406  +
    #[::tracing_test::traced_test]
  406    407   
    async fn rest_json_json_timestamps_with_http_date_on_target_format_request() {
  407    408   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  408    409   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  409    410   
  410    411   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  411    412   
        let result = client
  412    413   
            .json_timestamps()
  413    414   
            .set_http_date_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  414    415   
                1398796238, 0_f64,
  415    416   
            )))
  416    417   
            .send()
  417    418   
            .await;
  418    419   
        let _ = dbg!(result);
  419    420   
        let http_request = request_receiver.expect_request();
  420    421   
        let expected_headers = [("Content-Type", "application/json")];
  421    422   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  422    423   
        let body = http_request.body().bytes().expect("body should be strict");
  423    424   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  424    425   
            body,
  425    426   
            "{\n    \"httpDateOnTarget\": \"Tue, 29 Apr 2014 18:30:38 GMT\"\n}",
  426    427   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  427    428   
        ));
  428    429   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  429    430   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  430    431   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonTimestamps", "path was incorrect");
  431    432   
    }
  432    433   
    /// Tests how normal timestamps are serialized
  433    434   
    /// Test ID: RestJsonJsonTimestamps
  434    435   
    #[::tokio::test]
  435         -
    #[allow(unused_mut)]
         436  +
    #[::tracing_test::traced_test]
  436    437   
    async fn rest_json_json_timestamps_response() {
  437    438   
        let expected_output = crate::operation::json_timestamps::JsonTimestampsOutput::builder()
  438    439   
            .set_normal(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  439    440   
                1398796238, 0_f64,
  440    441   
            )))
  441    442   
            .build();
  442    443   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  443    444   
            ::http::response::Builder::new()
  444    445   
                .header("Content-Type", "application/json")
  445    446   
                .status(200)
  446    447   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"normal\": 1398796238\n}"))
  447    448   
                .unwrap(),
  448    449   
        )
  449    450   
        .unwrap();
  450    451   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  451    452   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  452    453   
  453    454   
        let op = crate::operation::json_timestamps::JsonTimestamps::new();
  454    455   
        let config = op.config().expect("the operation has config");
  455    456   
        let de = config
  456    457   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  457    458   
            .expect("the config must have a deserializer");
  458    459   
  459    460   
        let parsed = de.deserialize_streaming(&mut http_response);
  460    461   
        let parsed = parsed.unwrap_or_else(|| {
  461    462   
            let http_response =
  462    463   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  463    464   
            de.deserialize_nonstreaming(&http_response)
  464    465   
        });
  465    466   
        let parsed = parsed
  466    467   
            .expect("should be successful response")
  467    468   
            .downcast::<crate::operation::json_timestamps::JsonTimestampsOutput>()
  468    469   
            .unwrap();
  469    470   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  470    471   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  471    472   
        ::pretty_assertions::assert_eq!(
  472    473   
            parsed.date_time_on_target,
  473    474   
            expected_output.date_time_on_target,
  474    475   
            "Unexpected value for `date_time_on_target`"
  475    476   
        );
  476    477   
        ::pretty_assertions::assert_eq!(
  477    478   
            parsed.epoch_seconds,
  478    479   
            expected_output.epoch_seconds,
  479    480   
            "Unexpected value for `epoch_seconds`"
  480    481   
        );
  481    482   
        ::pretty_assertions::assert_eq!(
  482    483   
            parsed.epoch_seconds_on_target,
  483    484   
            expected_output.epoch_seconds_on_target,
  484    485   
            "Unexpected value for `epoch_seconds_on_target`"
  485    486   
        );
  486    487   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  487    488   
        ::pretty_assertions::assert_eq!(
  488    489   
            parsed.http_date_on_target,
  489    490   
            expected_output.http_date_on_target,
  490    491   
            "Unexpected value for `http_date_on_target`"
  491    492   
        );
  492    493   
    }
  493    494   
    /// Ensures that the timestampFormat of date-time works like normal timestamps
  494    495   
    /// Test ID: RestJsonJsonTimestampsWithDateTimeFormat
  495    496   
    #[::tokio::test]
  496         -
    #[allow(unused_mut)]
         497  +
    #[::tracing_test::traced_test]
  497    498   
    async fn rest_json_json_timestamps_with_date_time_format_response() {
  498    499   
        let expected_output = crate::operation::json_timestamps::JsonTimestampsOutput::builder()
  499    500   
            .set_date_time(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  500    501   
                1398796238, 0_f64,
  501    502   
            )))
  502    503   
            .build();
  503    504   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  504    505   
            ::http::response::Builder::new()
  505    506   
                .header("Content-Type", "application/json")
  506    507   
                .status(200)
@@ -529,530 +589,590 @@
  549    550   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  550    551   
        ::pretty_assertions::assert_eq!(
  551    552   
            parsed.http_date_on_target,
  552    553   
            expected_output.http_date_on_target,
  553    554   
            "Unexpected value for `http_date_on_target`"
  554    555   
        );
  555    556   
    }
  556    557   
    /// Ensures that the timestampFormat of date-time on the target shape works like normal timestamps
  557    558   
    /// Test ID: RestJsonJsonTimestampsWithDateTimeOnTargetFormat
  558    559   
    #[::tokio::test]
  559         -
    #[allow(unused_mut)]
         560  +
    #[::tracing_test::traced_test]
  560    561   
    async fn rest_json_json_timestamps_with_date_time_on_target_format_response() {
  561    562   
        let expected_output = crate::operation::json_timestamps::JsonTimestampsOutput::builder()
  562    563   
            .set_date_time_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  563    564   
                1398796238, 0_f64,
  564    565   
            )))
  565    566   
            .build();
  566    567   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  567    568   
            ::http::response::Builder::new()
  568    569   
                .header("Content-Type", "application/json")
  569    570   
                .status(200)
@@ -592,593 +774,775 @@
  612    613   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  613    614   
        ::pretty_assertions::assert_eq!(
  614    615   
            parsed.http_date_on_target,
  615    616   
            expected_output.http_date_on_target,
  616    617   
            "Unexpected value for `http_date_on_target`"
  617    618   
        );
  618    619   
    }
  619    620   
    /// Ensures that the timestampFormat of epoch-seconds works
  620    621   
    /// Test ID: RestJsonJsonTimestampsWithEpochSecondsFormat
  621    622   
    #[::tokio::test]
  622         -
    #[allow(unused_mut)]
         623  +
    #[::tracing_test::traced_test]
  623    624   
    async fn rest_json_json_timestamps_with_epoch_seconds_format_response() {
  624    625   
        let expected_output = crate::operation::json_timestamps::JsonTimestampsOutput::builder()
  625    626   
            .set_epoch_seconds(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  626    627   
                1398796238, 0_f64,
  627    628   
            )))
  628    629   
            .build();
  629    630   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  630    631   
            ::http::response::Builder::new()
  631    632   
                .header("Content-Type", "application/json")
  632    633   
                .status(200)
  633    634   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"epochSeconds\": 1398796238\n}"))
  634    635   
                .unwrap(),
  635    636   
        )
  636    637   
        .unwrap();
  637    638   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  638    639   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  639    640   
  640    641   
        let op = crate::operation::json_timestamps::JsonTimestamps::new();
  641    642   
        let config = op.config().expect("the operation has config");
  642    643   
        let de = config
  643    644   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  644    645   
            .expect("the config must have a deserializer");
  645    646   
  646    647   
        let parsed = de.deserialize_streaming(&mut http_response);
  647    648   
        let parsed = parsed.unwrap_or_else(|| {
  648    649   
            let http_response =
  649    650   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  650    651   
            de.deserialize_nonstreaming(&http_response)
  651    652   
        });
  652    653   
        let parsed = parsed
  653    654   
            .expect("should be successful response")
  654    655   
            .downcast::<crate::operation::json_timestamps::JsonTimestampsOutput>()
  655    656   
            .unwrap();
  656    657   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  657    658   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  658    659   
        ::pretty_assertions::assert_eq!(
  659    660   
            parsed.date_time_on_target,
  660    661   
            expected_output.date_time_on_target,
  661    662   
            "Unexpected value for `date_time_on_target`"
  662    663   
        );
  663    664   
        ::pretty_assertions::assert_eq!(
  664    665   
            parsed.epoch_seconds,
  665    666   
            expected_output.epoch_seconds,
  666    667   
            "Unexpected value for `epoch_seconds`"
  667    668   
        );
  668    669   
        ::pretty_assertions::assert_eq!(
  669    670   
            parsed.epoch_seconds_on_target,
  670    671   
            expected_output.epoch_seconds_on_target,
  671    672   
            "Unexpected value for `epoch_seconds_on_target`"
  672    673   
        );
  673    674   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  674    675   
        ::pretty_assertions::assert_eq!(
  675    676   
            parsed.http_date_on_target,
  676    677   
            expected_output.http_date_on_target,
  677    678   
            "Unexpected value for `http_date_on_target`"
  678    679   
        );
  679    680   
    }
  680    681   
    /// Ensures that the timestampFormat of epoch-seconds on the target shape works
  681    682   
    /// Test ID: RestJsonJsonTimestampsWithEpochSecondsOnTargetFormat
  682    683   
    #[::tokio::test]
  683         -
    #[allow(unused_mut)]
         684  +
    #[::tracing_test::traced_test]
  684    685   
    async fn rest_json_json_timestamps_with_epoch_seconds_on_target_format_response() {
  685    686   
        let expected_output = crate::operation::json_timestamps::JsonTimestampsOutput::builder()
  686    687   
            .set_epoch_seconds_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  687    688   
                1398796238, 0_f64,
  688    689   
            )))
  689    690   
            .build();
  690    691   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  691    692   
            ::http::response::Builder::new()
  692    693   
                .header("Content-Type", "application/json")
  693    694   
                .status(200)
  694    695   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"epochSecondsOnTarget\": 1398796238\n}"))
  695    696   
                .unwrap(),
  696    697   
        )
  697    698   
        .unwrap();
  698    699   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  699    700   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  700    701   
  701    702   
        let op = crate::operation::json_timestamps::JsonTimestamps::new();
  702    703   
        let config = op.config().expect("the operation has config");
  703    704   
        let de = config
  704    705   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  705    706   
            .expect("the config must have a deserializer");
  706    707   
  707    708   
        let parsed = de.deserialize_streaming(&mut http_response);
  708    709   
        let parsed = parsed.unwrap_or_else(|| {
  709    710   
            let http_response =
  710    711   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  711    712   
            de.deserialize_nonstreaming(&http_response)
  712    713   
        });
  713    714   
        let parsed = parsed
  714    715   
            .expect("should be successful response")
  715    716   
            .downcast::<crate::operation::json_timestamps::JsonTimestampsOutput>()
  716    717   
            .unwrap();
  717    718   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  718    719   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  719    720   
        ::pretty_assertions::assert_eq!(
  720    721   
            parsed.date_time_on_target,
  721    722   
            expected_output.date_time_on_target,
  722    723   
            "Unexpected value for `date_time_on_target`"
  723    724   
        );
  724    725   
        ::pretty_assertions::assert_eq!(
  725    726   
            parsed.epoch_seconds,
  726    727   
            expected_output.epoch_seconds,
  727    728   
            "Unexpected value for `epoch_seconds`"
  728    729   
        );
  729    730   
        ::pretty_assertions::assert_eq!(
  730    731   
            parsed.epoch_seconds_on_target,
  731    732   
            expected_output.epoch_seconds_on_target,
  732    733   
            "Unexpected value for `epoch_seconds_on_target`"
  733    734   
        );
  734    735   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  735    736   
        ::pretty_assertions::assert_eq!(
  736    737   
            parsed.http_date_on_target,
  737    738   
            expected_output.http_date_on_target,
  738    739   
            "Unexpected value for `http_date_on_target`"
  739    740   
        );
  740    741   
    }
  741    742   
    /// Ensures that the timestampFormat of http-date works
  742    743   
    /// Test ID: RestJsonJsonTimestampsWithHttpDateFormat
  743    744   
    #[::tokio::test]
  744         -
    #[allow(unused_mut)]
         745  +
    #[::tracing_test::traced_test]
  745    746   
    async fn rest_json_json_timestamps_with_http_date_format_response() {
  746    747   
        let expected_output = crate::operation::json_timestamps::JsonTimestampsOutput::builder()
  747    748   
            .set_http_date(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  748    749   
                1398796238, 0_f64,
  749    750   
            )))
  750    751   
            .build();
  751    752   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  752    753   
            ::http::response::Builder::new()
  753    754   
                .header("Content-Type", "application/json")
  754    755   
                .status(200)
@@ -777,778 +837,838 @@
  797    798   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  798    799   
        ::pretty_assertions::assert_eq!(
  799    800   
            parsed.http_date_on_target,
  800    801   
            expected_output.http_date_on_target,
  801    802   
            "Unexpected value for `http_date_on_target`"
  802    803   
        );
  803    804   
    }
  804    805   
    /// Ensures that the timestampFormat of http-date on the target shape works
  805    806   
    /// Test ID: RestJsonJsonTimestampsWithHttpDateOnTargetFormat
  806    807   
    #[::tokio::test]
  807         -
    #[allow(unused_mut)]
         808  +
    #[::tracing_test::traced_test]
  808    809   
    async fn rest_json_json_timestamps_with_http_date_on_target_format_response() {
  809    810   
        let expected_output = crate::operation::json_timestamps::JsonTimestampsOutput::builder()
  810    811   
            .set_http_date_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  811    812   
                1398796238, 0_f64,
  812    813   
            )))
  813    814   
            .build();
  814    815   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  815    816   
            ::http::response::Builder::new()
  816    817   
                .header("Content-Type", "application/json")
  817    818   
                .status(200)

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

@@ -188,188 +919,920 @@
  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 json_unions_request_test {
         218  +
mod json_unions_test {
         219  +
  219    220   
    /// Serializes a string union value
  220    221   
    /// Test ID: RestJsonSerializeStringUnionValue
  221    222   
    #[::tokio::test]
  222         -
    #[allow(unused_mut)]
         223  +
    #[::tracing_test::traced_test]
  223    224   
    async fn rest_json_serialize_string_union_value_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
  229    230   
            .json_unions()
  230    231   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StringValue("foo".to_owned())))
  231    232   
            .send()
  232    233   
            .await;
  233    234   
        let _ = dbg!(result);
  234    235   
        let http_request = request_receiver.expect_request();
  235    236   
        let expected_headers = [("Content-Type", "application/json")];
  236    237   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  237    238   
        let body = http_request.body().bytes().expect("body should be strict");
  238    239   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  239    240   
            body,
  240    241   
            "{\n    \"contents\": {\n        \"stringValue\": \"foo\"\n    }\n}",
  241    242   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  242    243   
        ));
  243    244   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  244    245   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  245    246   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  246    247   
    }
  247    248   
    /// Serializes a boolean union value
  248    249   
    /// Test ID: RestJsonSerializeBooleanUnionValue
  249    250   
    #[::tokio::test]
  250         -
    #[allow(unused_mut)]
         251  +
    #[::tracing_test::traced_test]
  251    252   
    async fn rest_json_serialize_boolean_union_value_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
  257    258   
            .json_unions()
  258    259   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BooleanValue(true)))
  259    260   
            .send()
  260    261   
            .await;
  261    262   
        let _ = dbg!(result);
  262    263   
        let http_request = request_receiver.expect_request();
  263    264   
        let expected_headers = [("Content-Type", "application/json")];
  264    265   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  265    266   
        let body = http_request.body().bytes().expect("body should be strict");
  266    267   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  267    268   
            body,
  268    269   
            "{\n    \"contents\": {\n        \"booleanValue\": true\n    }\n}",
  269    270   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  270    271   
        ));
  271    272   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  272    273   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  273    274   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  274    275   
    }
  275    276   
    /// Serializes a number union value
  276    277   
    /// Test ID: RestJsonSerializeNumberUnionValue
  277    278   
    #[::tokio::test]
  278         -
    #[allow(unused_mut)]
         279  +
    #[::tracing_test::traced_test]
  279    280   
    async fn rest_json_serialize_number_union_value_request() {
  280    281   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  281    282   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  282    283   
  283    284   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  284    285   
        let result = client
  285    286   
            .json_unions()
  286    287   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::NumberValue(1)))
  287    288   
            .send()
  288    289   
            .await;
  289    290   
        let _ = dbg!(result);
  290    291   
        let http_request = request_receiver.expect_request();
  291    292   
        let expected_headers = [("Content-Type", "application/json")];
  292    293   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  293    294   
        let body = http_request.body().bytes().expect("body should be strict");
  294    295   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  295    296   
            body,
  296    297   
            "{\n    \"contents\": {\n        \"numberValue\": 1\n    }\n}",
  297    298   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  298    299   
        ));
  299    300   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  300    301   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  301    302   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  302    303   
    }
  303    304   
    /// Serializes a blob union value
  304    305   
    /// Test ID: RestJsonSerializeBlobUnionValue
  305    306   
    #[::tokio::test]
  306         -
    #[allow(unused_mut)]
         307  +
    #[::tracing_test::traced_test]
  307    308   
    async fn rest_json_serialize_blob_union_value_request() {
  308    309   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  309    310   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  310    311   
  311    312   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  312    313   
        let result = client
  313    314   
            .json_unions()
  314    315   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BlobValue(
  315    316   
                ::aws_smithy_types::Blob::new("foo"),
  316    317   
            )))
  317    318   
            .send()
  318    319   
            .await;
  319    320   
        let _ = dbg!(result);
  320    321   
        let http_request = request_receiver.expect_request();
  321    322   
        let expected_headers = [("Content-Type", "application/json")];
  322    323   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  323    324   
        let body = http_request.body().bytes().expect("body should be strict");
  324    325   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  325    326   
            body,
  326    327   
            "{\n    \"contents\": {\n        \"blobValue\": \"Zm9v\"\n    }\n}",
  327    328   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  328    329   
        ));
  329    330   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  330    331   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  331    332   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  332    333   
    }
  333    334   
    /// Serializes a timestamp union value
  334    335   
    /// Test ID: RestJsonSerializeTimestampUnionValue
  335    336   
    #[::tokio::test]
  336         -
    #[allow(unused_mut)]
         337  +
    #[::tracing_test::traced_test]
  337    338   
    async fn rest_json_serialize_timestamp_union_value_request() {
  338    339   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  339    340   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  340    341   
  341    342   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  342    343   
        let result = client
  343    344   
            .json_unions()
  344    345   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::TimestampValue(
  345    346   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  346    347   
            )))
  347    348   
            .send()
  348    349   
            .await;
  349    350   
        let _ = dbg!(result);
  350    351   
        let http_request = request_receiver.expect_request();
  351    352   
        let expected_headers = [("Content-Type", "application/json")];
  352    353   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  353    354   
        let body = http_request.body().bytes().expect("body should be strict");
  354    355   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  355    356   
            body,
  356    357   
            "{\n    \"contents\": {\n        \"timestampValue\": 1398796238\n    }\n}",
  357    358   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  358    359   
        ));
  359    360   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  360    361   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  361    362   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  362    363   
    }
  363    364   
    /// Serializes an enum union value
  364    365   
    /// Test ID: RestJsonSerializeEnumUnionValue
  365    366   
    #[::tokio::test]
  366         -
    #[allow(unused_mut)]
         367  +
    #[::tracing_test::traced_test]
  367    368   
    async fn rest_json_serialize_enum_union_value_request() {
  368    369   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  369    370   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  370    371   
  371    372   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  372    373   
        let result = client
  373    374   
            .json_unions()
  374    375   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::EnumValue(
  375    376   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  376    377   
            )))
  377    378   
            .send()
  378    379   
            .await;
  379    380   
        let _ = dbg!(result);
  380    381   
        let http_request = request_receiver.expect_request();
  381    382   
        let expected_headers = [("Content-Type", "application/json")];
  382    383   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  383    384   
        let body = http_request.body().bytes().expect("body should be strict");
  384    385   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  385    386   
            body,
  386    387   
            "{\n    \"contents\": {\n        \"enumValue\": \"Foo\"\n    }\n}",
  387    388   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  388    389   
        ));
  389    390   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  390    391   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  391    392   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  392    393   
    }
  393    394   
    /// Serializes a list union value
  394    395   
    /// Test ID: RestJsonSerializeListUnionValue
  395    396   
    #[::tokio::test]
  396         -
    #[allow(unused_mut)]
         397  +
    #[::tracing_test::traced_test]
  397    398   
    async fn rest_json_serialize_list_union_value_request() {
  398    399   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  399    400   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  400    401   
  401    402   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  402    403   
        let result = client
  403    404   
            .json_unions()
  404    405   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::ListValue(vec![
  405    406   
                "foo".to_owned(),
  406    407   
                "bar".to_owned(),
  407    408   
            ])))
  408    409   
            .send()
  409    410   
            .await;
  410    411   
        let _ = dbg!(result);
  411    412   
        let http_request = request_receiver.expect_request();
  412    413   
        let expected_headers = [("Content-Type", "application/json")];
  413    414   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  414    415   
        let body = http_request.body().bytes().expect("body should be strict");
  415    416   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  416    417   
            body,
  417    418   
            "{\n    \"contents\": {\n        \"listValue\": [\"foo\", \"bar\"]\n    }\n}",
  418    419   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  419    420   
        ));
  420    421   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  421    422   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  422    423   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  423    424   
    }
  424    425   
    /// Serializes a map union value
  425    426   
    /// Test ID: RestJsonSerializeMapUnionValue
  426    427   
    #[::tokio::test]
  427         -
    #[allow(unused_mut)]
         428  +
    #[::tracing_test::traced_test]
  428    429   
    async fn rest_json_serialize_map_union_value_request() {
  429    430   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  430    431   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  431    432   
  432    433   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  433    434   
        let result = client
  434    435   
            .json_unions()
  435    436   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::MapValue({
  436    437   
                let mut ret = ::std::collections::HashMap::new();
  437    438   
                ret.insert("foo".to_owned(), "bar".to_owned());
  438    439   
                ret.insert("spam".to_owned(), "eggs".to_owned());
  439    440   
                ret
  440    441   
            })))
  441    442   
            .send()
  442    443   
            .await;
  443    444   
        let _ = dbg!(result);
  444    445   
        let http_request = request_receiver.expect_request();
  445    446   
        let expected_headers = [("Content-Type", "application/json")];
  446    447   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  447    448   
        let body = http_request.body().bytes().expect("body should be strict");
  448    449   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  449    450   
            body,
  450    451   
            "{\n    \"contents\": {\n        \"mapValue\": {\n            \"foo\": \"bar\",\n            \"spam\": \"eggs\"\n        }\n    }\n}",
  451    452   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  452    453   
        ));
  453    454   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  454    455   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  455    456   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  456    457   
    }
  457    458   
    /// Serializes a structure union value
  458    459   
    /// Test ID: RestJsonSerializeStructureUnionValue
  459    460   
    #[::tokio::test]
  460         -
    #[allow(unused_mut)]
         461  +
    #[::tracing_test::traced_test]
  461    462   
    async fn rest_json_serialize_structure_union_value_request() {
  462    463   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  463    464   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  464    465   
  465    466   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  466    467   
        let result = client
  467    468   
            .json_unions()
  468    469   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StructureValue(
  469    470   
                crate::types::GreetingStruct::builder()
  470    471   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  471    472   
                    .build(),
  472    473   
            )))
  473    474   
            .send()
  474    475   
            .await;
  475    476   
        let _ = dbg!(result);
  476    477   
        let http_request = request_receiver.expect_request();
  477    478   
        let expected_headers = [("Content-Type", "application/json")];
  478    479   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  479    480   
        let body = http_request.body().bytes().expect("body should be strict");
  480    481   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  481    482   
            body,
  482    483   
            "{\n    \"contents\": {\n        \"structureValue\": {\n            \"hi\": \"hello\"\n        }\n    }\n}",
  483    484   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  484    485   
        ));
  485    486   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  486    487   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  487    488   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  488    489   
    }
  489    490   
    /// Serializes a renamed structure union value
  490    491   
    /// Test ID: RestJsonSerializeRenamedStructureUnionValue
  491    492   
    #[::tokio::test]
  492         -
    #[allow(unused_mut)]
         493  +
    #[::tracing_test::traced_test]
  493    494   
    async fn rest_json_serialize_renamed_structure_union_value_request() {
  494    495   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  495    496   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  496    497   
  497    498   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  498    499   
        let result = client
  499    500   
            .json_unions()
  500    501   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::RenamedStructureValue(
  501    502   
                crate::types::RenamedGreeting::builder()
  502    503   
                    .set_salutation(::std::option::Option::Some("hello!".to_owned()))
  503    504   
                    .build(),
  504    505   
            )))
  505    506   
            .send()
  506    507   
            .await;
  507    508   
        let _ = dbg!(result);
  508    509   
        let http_request = request_receiver.expect_request();
  509    510   
        let expected_headers = [("Content-Type", "application/json")];
  510    511   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  511    512   
        let body = http_request.body().bytes().expect("body should be strict");
  512    513   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  513    514   
            body,
  514    515   
            "{\n    \"contents\": {\n        \"renamedStructureValue\": {\n            \"salutation\": \"hello!\"\n        }\n    }\n}",
  515    516   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  516    517   
        ));
  517    518   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  518    519   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  519    520   
        ::pretty_assertions::assert_eq!(uri.path(), "/JsonUnions", "path was incorrect");
  520    521   
    }
  521    522   
    /// Deserializes a string union value
  522    523   
    /// Test ID: RestJsonDeserializeStringUnionValue
  523    524   
    #[::tokio::test]
  524         -
    #[allow(unused_mut)]
         525  +
    #[::tracing_test::traced_test]
  525    526   
    async fn rest_json_deserialize_string_union_value_response() {
  526    527   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  527    528   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StringValue("foo".to_owned())))
  528    529   
            .build();
  529    530   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  530    531   
            ::http::response::Builder::new()
  531    532   
                .header("Content-Type", "application/json")
  532    533   
                .status(200)
  533    534   
                .body(::aws_smithy_types::body::SdkBody::from(
  534    535   
                    "{\n    \"contents\": {\n        \"stringValue\": \"foo\"\n    }\n}",
  535    536   
                ))
  536    537   
                .unwrap(),
  537    538   
        )
  538    539   
        .unwrap();
  539    540   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  540    541   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  541    542   
  542    543   
        let op = crate::operation::json_unions::JsonUnions::new();
  543    544   
        let config = op.config().expect("the operation has config");
  544    545   
        let de = config
  545    546   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  546    547   
            .expect("the config must have a deserializer");
  547    548   
  548    549   
        let parsed = de.deserialize_streaming(&mut http_response);
  549    550   
        let parsed = parsed.unwrap_or_else(|| {
  550    551   
            let http_response =
  551    552   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  552    553   
            de.deserialize_nonstreaming(&http_response)
  553    554   
        });
  554    555   
        let parsed = parsed
  555    556   
            .expect("should be successful response")
  556    557   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  557    558   
            .unwrap();
  558    559   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  559    560   
    }
  560    561   
    /// Deserializes a boolean union value
  561    562   
    /// Test ID: RestJsonDeserializeBooleanUnionValue
  562    563   
    #[::tokio::test]
  563         -
    #[allow(unused_mut)]
         564  +
    #[::tracing_test::traced_test]
  564    565   
    async fn rest_json_deserialize_boolean_union_value_response() {
  565    566   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  566    567   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BooleanValue(true)))
  567    568   
            .build();
  568    569   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  569    570   
            ::http::response::Builder::new()
  570    571   
                .header("Content-Type", "application/json")
  571    572   
                .status(200)
  572    573   
                .body(::aws_smithy_types::body::SdkBody::from(
  573    574   
                    "{\n    \"contents\": {\n        \"booleanValue\": true\n    }\n}",
  574    575   
                ))
  575    576   
                .unwrap(),
  576    577   
        )
  577    578   
        .unwrap();
  578    579   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  579    580   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  580    581   
  581    582   
        let op = crate::operation::json_unions::JsonUnions::new();
  582    583   
        let config = op.config().expect("the operation has config");
  583    584   
        let de = config
  584    585   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  585    586   
            .expect("the config must have a deserializer");
  586    587   
  587    588   
        let parsed = de.deserialize_streaming(&mut http_response);
  588    589   
        let parsed = parsed.unwrap_or_else(|| {
  589    590   
            let http_response =
  590    591   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  591    592   
            de.deserialize_nonstreaming(&http_response)
  592    593   
        });
  593    594   
        let parsed = parsed
  594    595   
            .expect("should be successful response")
  595    596   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  596    597   
            .unwrap();
  597    598   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  598    599   
    }
  599    600   
    /// Deserializes a number union value
  600    601   
    /// Test ID: RestJsonDeserializeNumberUnionValue
  601    602   
    #[::tokio::test]
  602         -
    #[allow(unused_mut)]
         603  +
    #[::tracing_test::traced_test]
  603    604   
    async fn rest_json_deserialize_number_union_value_response() {
  604    605   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  605    606   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::NumberValue(1)))
  606    607   
            .build();
  607    608   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  608    609   
            ::http::response::Builder::new()
  609    610   
                .header("Content-Type", "application/json")
  610    611   
                .status(200)
  611    612   
                .body(::aws_smithy_types::body::SdkBody::from(
  612    613   
                    "{\n    \"contents\": {\n        \"numberValue\": 1\n    }\n}",
  613    614   
                ))
  614    615   
                .unwrap(),
  615    616   
        )
  616    617   
        .unwrap();
  617    618   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  618    619   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  619    620   
  620    621   
        let op = crate::operation::json_unions::JsonUnions::new();
  621    622   
        let config = op.config().expect("the operation has config");
  622    623   
        let de = config
  623    624   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  624    625   
            .expect("the config must have a deserializer");
  625    626   
  626    627   
        let parsed = de.deserialize_streaming(&mut http_response);
  627    628   
        let parsed = parsed.unwrap_or_else(|| {
  628    629   
            let http_response =
  629    630   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  630    631   
            de.deserialize_nonstreaming(&http_response)
  631    632   
        });
  632    633   
        let parsed = parsed
  633    634   
            .expect("should be successful response")
  634    635   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  635    636   
            .unwrap();
  636    637   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  637    638   
    }
  638    639   
    /// Deserializes a blob union value
  639    640   
    /// Test ID: RestJsonDeserializeBlobUnionValue
  640    641   
    #[::tokio::test]
  641         -
    #[allow(unused_mut)]
         642  +
    #[::tracing_test::traced_test]
  642    643   
    async fn rest_json_deserialize_blob_union_value_response() {
  643    644   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  644    645   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BlobValue(
  645    646   
                ::aws_smithy_types::Blob::new("foo"),
  646    647   
            )))
  647    648   
            .build();
  648    649   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  649    650   
            ::http::response::Builder::new()
  650    651   
                .header("Content-Type", "application/json")
  651    652   
                .status(200)
  652    653   
                .body(::aws_smithy_types::body::SdkBody::from(
  653    654   
                    "{\n    \"contents\": {\n        \"blobValue\": \"Zm9v\"\n    }\n}",
  654    655   
                ))
  655    656   
                .unwrap(),
  656    657   
        )
  657    658   
        .unwrap();
  658    659   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  659    660   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  660    661   
  661    662   
        let op = crate::operation::json_unions::JsonUnions::new();
  662    663   
        let config = op.config().expect("the operation has config");
  663    664   
        let de = config
  664    665   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  665    666   
            .expect("the config must have a deserializer");
  666    667   
  667    668   
        let parsed = de.deserialize_streaming(&mut http_response);
  668    669   
        let parsed = parsed.unwrap_or_else(|| {
  669    670   
            let http_response =
  670    671   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  671    672   
            de.deserialize_nonstreaming(&http_response)
  672    673   
        });
  673    674   
        let parsed = parsed
  674    675   
            .expect("should be successful response")
  675    676   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  676    677   
            .unwrap();
  677    678   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  678    679   
    }
  679    680   
    /// Deserializes a timestamp union value
  680    681   
    /// Test ID: RestJsonDeserializeTimestampUnionValue
  681    682   
    #[::tokio::test]
  682         -
    #[allow(unused_mut)]
         683  +
    #[::tracing_test::traced_test]
  683    684   
    async fn rest_json_deserialize_timestamp_union_value_response() {
  684    685   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  685    686   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::TimestampValue(
  686    687   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  687    688   
            )))
  688    689   
            .build();
  689    690   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  690    691   
            ::http::response::Builder::new()
  691    692   
                .header("Content-Type", "application/json")
  692    693   
                .status(200)
  693    694   
                .body(::aws_smithy_types::body::SdkBody::from(
  694    695   
                    "{\n    \"contents\": {\n        \"timestampValue\": 1398796238\n    }\n}",
  695    696   
                ))
  696    697   
                .unwrap(),
  697    698   
        )
  698    699   
        .unwrap();
  699    700   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  700    701   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  701    702   
  702    703   
        let op = crate::operation::json_unions::JsonUnions::new();
  703    704   
        let config = op.config().expect("the operation has config");
  704    705   
        let de = config
  705    706   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  706    707   
            .expect("the config must have a deserializer");
  707    708   
  708    709   
        let parsed = de.deserialize_streaming(&mut http_response);
  709    710   
        let parsed = parsed.unwrap_or_else(|| {
  710    711   
            let http_response =
  711    712   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  712    713   
            de.deserialize_nonstreaming(&http_response)
  713    714   
        });
  714    715   
        let parsed = parsed
  715    716   
            .expect("should be successful response")
  716    717   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  717    718   
            .unwrap();
  718    719   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  719    720   
    }
  720    721   
    /// Deserializes an enum union value
  721    722   
    /// Test ID: RestJsonDeserializeEnumUnionValue
  722    723   
    #[::tokio::test]
  723         -
    #[allow(unused_mut)]
         724  +
    #[::tracing_test::traced_test]
  724    725   
    async fn rest_json_deserialize_enum_union_value_response() {
  725    726   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  726    727   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::EnumValue(
  727    728   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  728    729   
            )))
  729    730   
            .build();
  730    731   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  731    732   
            ::http::response::Builder::new()
  732    733   
                .header("Content-Type", "application/json")
  733    734   
                .status(200)
  734    735   
                .body(::aws_smithy_types::body::SdkBody::from(
  735    736   
                    "{\n    \"contents\": {\n        \"enumValue\": \"Foo\"\n    }\n}",
  736    737   
                ))
  737    738   
                .unwrap(),
  738    739   
        )
  739    740   
        .unwrap();
  740    741   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  741    742   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  742    743   
  743    744   
        let op = crate::operation::json_unions::JsonUnions::new();
  744    745   
        let config = op.config().expect("the operation has config");
  745    746   
        let de = config
  746    747   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  747    748   
            .expect("the config must have a deserializer");
  748    749   
  749    750   
        let parsed = de.deserialize_streaming(&mut http_response);
  750    751   
        let parsed = parsed.unwrap_or_else(|| {
  751    752   
            let http_response =
  752    753   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  753    754   
            de.deserialize_nonstreaming(&http_response)
  754    755   
        });
  755    756   
        let parsed = parsed
  756    757   
            .expect("should be successful response")
  757    758   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  758    759   
            .unwrap();
  759    760   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  760    761   
    }
  761    762   
    /// Deserializes a list union value
  762    763   
    /// Test ID: RestJsonDeserializeListUnionValue
  763    764   
    #[::tokio::test]
  764         -
    #[allow(unused_mut)]
         765  +
    #[::tracing_test::traced_test]
  765    766   
    async fn rest_json_deserialize_list_union_value_response() {
  766    767   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  767    768   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::ListValue(vec![
  768    769   
                "foo".to_owned(),
  769    770   
                "bar".to_owned(),
  770    771   
            ])))
  771    772   
            .build();
  772    773   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  773    774   
            ::http::response::Builder::new()
  774    775   
                .header("Content-Type", "application/json")
  775    776   
                .status(200)
  776    777   
                .body(::aws_smithy_types::body::SdkBody::from(
  777    778   
                    "{\n    \"contents\": {\n        \"listValue\": [\"foo\", \"bar\"]\n    }\n}",
  778    779   
                ))
  779    780   
                .unwrap(),
  780    781   
        )
  781    782   
        .unwrap();
  782    783   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  783    784   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  784    785   
  785    786   
        let op = crate::operation::json_unions::JsonUnions::new();
  786    787   
        let config = op.config().expect("the operation has config");
  787    788   
        let de = config
  788    789   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  789    790   
            .expect("the config must have a deserializer");
  790    791   
  791    792   
        let parsed = de.deserialize_streaming(&mut http_response);
  792    793   
        let parsed = parsed.unwrap_or_else(|| {
  793    794   
            let http_response =
  794    795   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  795    796   
            de.deserialize_nonstreaming(&http_response)
  796    797   
        });
  797    798   
        let parsed = parsed
  798    799   
            .expect("should be successful response")
  799    800   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  800    801   
            .unwrap();
  801    802   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  802    803   
    }
  803    804   
    /// Deserializes a map union value
  804    805   
    /// Test ID: RestJsonDeserializeMapUnionValue
  805    806   
    #[::tokio::test]
  806         -
    #[allow(unused_mut)]
         807  +
    #[::tracing_test::traced_test]
  807    808   
    async fn rest_json_deserialize_map_union_value_response() {
  808    809   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  809    810   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::MapValue({
  810    811   
                let mut ret = ::std::collections::HashMap::new();
  811    812   
                ret.insert("foo".to_owned(), "bar".to_owned());
  812    813   
                ret.insert("spam".to_owned(), "eggs".to_owned());
  813    814   
                ret
  814    815   
            })))
  815    816   
            .build();
  816    817   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  817    818   
        .header("Content-Type", "application/json")
  818    819   
        .status(200)
  819    820   
                    .body(::aws_smithy_types::body::SdkBody::from("{\n    \"contents\": {\n        \"mapValue\": {\n            \"foo\": \"bar\",\n            \"spam\": \"eggs\"\n        }\n    }\n}"))
  820    821   
                    .unwrap()
  821    822   
                    ).unwrap();
  822    823   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  823    824   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  824    825   
  825    826   
        let op = crate::operation::json_unions::JsonUnions::new();
  826    827   
        let config = op.config().expect("the operation has config");
  827    828   
        let de = config
  828    829   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  829    830   
            .expect("the config must have a deserializer");
  830    831   
  831    832   
        let parsed = de.deserialize_streaming(&mut http_response);
  832    833   
        let parsed = parsed.unwrap_or_else(|| {
  833    834   
            let http_response =
  834    835   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  835    836   
            de.deserialize_nonstreaming(&http_response)
  836    837   
        });
  837    838   
        let parsed = parsed
  838    839   
            .expect("should be successful response")
  839    840   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  840    841   
            .unwrap();
  841    842   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  842    843   
    }
  843    844   
    /// Deserializes a structure union value
  844    845   
    /// Test ID: RestJsonDeserializeStructureUnionValue
  845    846   
    #[::tokio::test]
  846         -
    #[allow(unused_mut)]
         847  +
    #[::tracing_test::traced_test]
  847    848   
    async fn rest_json_deserialize_structure_union_value_response() {
  848    849   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  849    850   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StructureValue(
  850    851   
                crate::types::GreetingStruct::builder()
  851    852   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  852    853   
                    .build(),
  853    854   
            )))
  854    855   
            .build();
  855    856   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  856    857   
            ::http::response::Builder::new()
  857    858   
                .header("Content-Type", "application/json")
  858    859   
                .status(200)
  859    860   
                .body(::aws_smithy_types::body::SdkBody::from(
  860    861   
                    "{\n    \"contents\": {\n        \"structureValue\": {\n            \"hi\": \"hello\"\n        }\n    }\n}",
  861    862   
                ))
  862    863   
                .unwrap(),
  863    864   
        )
  864    865   
        .unwrap();
  865    866   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  866    867   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  867    868   
  868    869   
        let op = crate::operation::json_unions::JsonUnions::new();
  869    870   
        let config = op.config().expect("the operation has config");
  870    871   
        let de = config
  871    872   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  872    873   
            .expect("the config must have a deserializer");
  873    874   
  874    875   
        let parsed = de.deserialize_streaming(&mut http_response);
  875    876   
        let parsed = parsed.unwrap_or_else(|| {
  876    877   
            let http_response =
  877    878   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  878    879   
            de.deserialize_nonstreaming(&http_response)
  879    880   
        });
  880    881   
        let parsed = parsed
  881    882   
            .expect("should be successful response")
  882    883   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  883    884   
            .unwrap();
  884    885   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  885    886   
    }
  886    887   
    /// Ignores an unrecognized __type property
  887    888   
    /// Test ID: RestJsonDeserializeIgnoreType
  888    889   
    #[::tokio::test]
  889         -
    #[allow(unused_mut)]
         890  +
    #[::tracing_test::traced_test]
  890    891   
    async fn rest_json_deserialize_ignore_type_response() {
  891    892   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  892    893   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StructureValue(
  893    894   
                crate::types::GreetingStruct::builder()
  894    895   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  895    896   
                    .build(),
  896    897   
            )))
  897    898   
            .build();
  898    899   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  899    900   
        .header("Content-Type", "application/json")

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

@@ -188,188 +277,278 @@
  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 media_type_header_request_test {
         218  +
mod media_type_header_test {
         219  +
  219    220   
    /// Headers that target strings with a mediaType are base64 encoded
  220    221   
    /// Test ID: MediaTypeHeaderInputBase64
  221    222   
    #[::tokio::test]
  222         -
    #[allow(unused_mut)]
         223  +
    #[::tracing_test::traced_test]
  223    224   
    async fn media_type_header_input_base64_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
  229    230   
            .media_type_header()
  230    231   
            .set_json(::std::option::Option::Some("true".to_owned()))
  231    232   
            .send()
  232    233   
            .await;
  233    234   
        let _ = dbg!(result);
  234    235   
        let http_request = request_receiver.expect_request();
  235    236   
        let expected_headers = [("X-Json", "dHJ1ZQ==")];
  236    237   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  237    238   
        let body = http_request.body().bytes().expect("body should be strict");
  238    239   
        // No body
  239    240   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  240    241   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  241    242   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  242    243   
        ::pretty_assertions::assert_eq!(uri.path(), "/MediaTypeHeader", "path was incorrect");
  243    244   
    }
  244    245   
    /// Headers that target strings with a mediaType are base64 encoded
  245    246   
    /// Test ID: MediaTypeHeaderOutputBase64
  246    247   
    #[::tokio::test]
  247         -
    #[allow(unused_mut)]
         248  +
    #[::tracing_test::traced_test]
  248    249   
    async fn media_type_header_output_base64_response() {
  249    250   
        let expected_output = crate::operation::media_type_header::MediaTypeHeaderOutput::builder()
  250    251   
            .set_json(::std::option::Option::Some("true".to_owned()))
  251    252   
            .build();
  252    253   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  253    254   
            ::http::response::Builder::new()
  254    255   
                .header("X-Json", "dHJ1ZQ==")
  255    256   
                .status(200)
  256    257   
                .body(::aws_smithy_types::body::SdkBody::from(vec![]))
  257    258   
                .unwrap(),

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

@@ -193,193 +280,281 @@
  213    213   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  214    214   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  215    215   
        })?;
  216    216   
        cfg.interceptor_state()
  217    217   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  218    218   
        ::std::result::Result::Ok(())
  219    219   
    }
  220    220   
}
  221    221   
#[allow(unreachable_code, unused_variables)]
  222    222   
#[cfg(test)]
  223         -
mod no_input_and_no_output_request_test {
         223  +
mod no_input_and_no_output_test {
         224  +
  224    225   
    /// No input serializes no payload. When clients do not need to
  225    226   
    /// serialize any data in the payload, they should omit a payload
  226    227   
    /// altogether.
  227    228   
    /// Test ID: RestJsonNoInputAndNoOutput
  228    229   
    #[::tokio::test]
  229         -
    #[allow(unused_mut)]
         230  +
    #[::tracing_test::traced_test]
  230    231   
    async fn rest_json_no_input_and_no_output_request() {
  231    232   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  232    233   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  233    234   
  234    235   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  235    236   
        let result = client.no_input_and_no_output().send().await;
  236    237   
        let _ = dbg!(result);
  237    238   
        let http_request = request_receiver.expect_request();
  238    239   
        let body = http_request.body().bytes().expect("body should be strict");
  239    240   
        // No body
  240    241   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  241    242   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  242    243   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  243    244   
        ::pretty_assertions::assert_eq!(uri.path(), "/NoInputAndNoOutput", "path was incorrect");
  244    245   
    }
  245    246   
    /// When an operation does not define output, the service will respond
  246    247   
    /// with an empty payload, and may optionally include the content-type
  247    248   
    /// header.
  248    249   
    /// Test ID: RestJsonNoInputAndNoOutput
  249    250   
    #[::tokio::test]
  250         -
    #[allow(unused_mut)]
         251  +
    #[::tracing_test::traced_test]
  251    252   
    async fn rest_json_no_input_and_no_output_response() {
  252    253   
        let expected_output = crate::operation::no_input_and_no_output::NoInputAndNoOutputOutput::builder().build();
  253    254   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  254    255   
            ::http::response::Builder::new()
  255    256   
                .status(200)
  256    257   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  257    258   
                .unwrap(),
  258    259   
        )
  259    260   
        .unwrap();
  260    261   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;

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

@@ -187,187 +309,310 @@
  207    207   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  208    208   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  209    209   
        })?;
  210    210   
        cfg.interceptor_state()
  211    211   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  212    212   
        ::std::result::Result::Ok(())
  213    213   
    }
  214    214   
}
  215    215   
#[allow(unreachable_code, unused_variables)]
  216    216   
#[cfg(test)]
  217         -
mod no_input_and_output_request_test {
         217  +
mod no_input_and_output_test {
         218  +
  218    219   
    /// No input serializes no payload. When clients do not need to
  219    220   
    /// serialize any data in the payload, they should omit a payload
  220    221   
    /// altogether.
  221    222   
    /// Test ID: RestJsonNoInputAndOutput
  222    223   
    #[::tokio::test]
  223         -
    #[allow(unused_mut)]
         224  +
    #[::tracing_test::traced_test]
  224    225   
    async fn rest_json_no_input_and_output_request() {
  225    226   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  226    227   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  227    228   
  228    229   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  229    230   
        let result = client.no_input_and_output().send().await;
  230    231   
        let _ = dbg!(result);
  231    232   
        let http_request = request_receiver.expect_request();
  232    233   
        let body = http_request.body().bytes().expect("body should be strict");
  233    234   
        // No body
  234    235   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  235    236   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  236    237   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  237    238   
        ::pretty_assertions::assert_eq!(uri.path(), "/NoInputAndOutputOutput", "path was incorrect");
  238    239   
    }
  239    240   
    /// Operations that define output and do not bind anything to
  240    241   
    /// the payload return a JSON object in the response.
  241    242   
    /// Test ID: RestJsonNoInputAndOutputWithJson
  242    243   
    #[::tokio::test]
  243         -
    #[allow(unused_mut)]
         244  +
    #[::tracing_test::traced_test]
  244    245   
    async fn rest_json_no_input_and_output_with_json_response() {
  245    246   
        let expected_output = crate::operation::no_input_and_output::NoInputAndOutputOutput::builder().build();
  246    247   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  247    248   
            ::http::response::Builder::new()
  248    249   
                .header("Content-Type", "application/json")
  249    250   
                .status(200)
  250    251   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  251    252   
                .unwrap(),
  252    253   
        )
  253    254   
        .unwrap();
  254    255   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  255    256   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  256    257   
  257    258   
        let op = crate::operation::no_input_and_output::NoInputAndOutput::new();
  258    259   
        let config = op.config().expect("the operation has config");
  259    260   
        let de = config
  260    261   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  261    262   
            .expect("the config must have a deserializer");
  262    263   
  263    264   
        let parsed = de.deserialize_streaming(&mut http_response);
  264    265   
        let parsed = parsed.unwrap_or_else(|| {
  265    266   
            let http_response =
  266    267   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  267    268   
            de.deserialize_nonstreaming(&http_response)
  268    269   
        });
  269    270   
        let parsed = parsed
  270    271   
            .expect("should be successful response")
  271    272   
            .downcast::<crate::operation::no_input_and_output::NoInputAndOutputOutput>()
  272    273   
            .unwrap();
  273    274   
    }
  274    275   
    /// This test is similar to RestJsonNoInputAndOutputWithJson, but
  275    276   
    /// it ensures that clients can gracefully handle responses that
  276    277   
    /// omit a JSON payload.
  277    278   
    /// Test ID: RestJsonNoInputAndOutputNoPayload
  278    279   
    #[::tokio::test]
  279         -
    #[allow(unused_mut)]
         280  +
    #[::tracing_test::traced_test]
  280    281   
    async fn rest_json_no_input_and_output_no_payload_response() {
  281    282   
        let expected_output = crate::operation::no_input_and_output::NoInputAndOutputOutput::builder().build();
  282    283   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  283    284   
            ::http::response::Builder::new()
  284    285   
                .status(200)
  285    286   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  286    287   
                .unwrap(),
  287    288   
        )
  288    289   
        .unwrap();
  289    290   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;

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

@@ -194,194 +258,259 @@
  214    214   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  215    215   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  216    216   
        })?;
  217    217   
        cfg.interceptor_state()
  218    218   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  219    219   
        ::std::result::Result::Ok(())
  220    220   
    }
  221    221   
}
  222    222   
#[allow(unreachable_code, unused_variables)]
  223    223   
#[cfg(test)]
  224         -
mod null_and_empty_headers_client_request_test {
         224  +
mod null_and_empty_headers_client_test {
         225  +
  225    226   
    /// Do not send null values, empty strings, or empty lists over the wire in headers
  226    227   
    /// Test ID: RestJsonNullAndEmptyHeaders
  227    228   
    #[::tokio::test]
  228         -
    #[allow(unused_mut)]
         229  +
    #[::tracing_test::traced_test]
  229    230   
    async fn rest_json_null_and_empty_headers_request() {
  230    231   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  231    232   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  232    233   
  233    234   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  234    235   
        let result = client
  235    236   
            .null_and_empty_headers_client()
  236    237   
            .set_a(::std::option::Option::None)
  237    238   
            .set_b(::std::option::Option::Some("".to_owned()))
  238    239   
            .set_c(::std::option::Option::Some(vec![]))

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

@@ -213,213 +300,301 @@
  233    233   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  234    234   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  235    235   
        })?;
  236    236   
        cfg.interceptor_state()
  237    237   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  238    238   
        ::std::result::Result::Ok(())
  239    239   
    }
  240    240   
}
  241    241   
#[allow(unreachable_code, unused_variables)]
  242    242   
#[cfg(test)]
  243         -
mod omits_null_serializes_empty_string_request_test {
         243  +
mod omits_null_serializes_empty_string_test {
         244  +
  244    245   
    /// Omits null query values
  245    246   
    /// Test ID: RestJsonOmitsNullQuery
  246    247   
    #[::tokio::test]
  247         -
    #[allow(unused_mut)]
         248  +
    #[::tracing_test::traced_test]
  248    249   
    async fn rest_json_omits_null_query_request() {
  249    250   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  250    251   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  251    252   
  252    253   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  253    254   
        let result = client
  254    255   
            .omits_null_serializes_empty_string()
  255    256   
            .set_null_value(::std::option::Option::None)
  256    257   
            .send()
  257    258   
            .await;
  258    259   
        let _ = dbg!(result);
  259    260   
        let http_request = request_receiver.expect_request();
  260    261   
        let body = http_request.body().bytes().expect("body should be strict");
  261    262   
        // No body
  262    263   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  263    264   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  264    265   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  265    266   
        ::pretty_assertions::assert_eq!(uri.path(), "/OmitsNullSerializesEmptyString", "path was incorrect");
  266    267   
    }
  267    268   
    /// Serializes empty query strings
  268    269   
    /// Test ID: RestJsonSerializesEmptyQueryValue
  269    270   
    #[::tokio::test]
  270         -
    #[allow(unused_mut)]
         271  +
    #[::tracing_test::traced_test]
  271    272   
    async fn rest_json_serializes_empty_query_value_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   
            .omits_null_serializes_empty_string()
  278    279   
            .set_empty_string(::std::option::Option::Some("".to_owned()))
  279    280   
            .send()
  280    281   
            .await;