Client Test

Client Test

rev. ce76c569583a3fdee1e9d39e082a8d5efd7b13b7

Files changed:

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

@@ -192,192 +277,278 @@
  212    212   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  213    213   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  214    214   
        })?;
  215    215   
        cfg.interceptor_state()
  216    216   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  217    217   
        ::std::result::Result::Ok(())
  218    218   
    }
  219    219   
}
  220    220   
#[allow(unreachable_code, unused_variables)]
  221    221   
#[cfg(test)]
  222         -
mod test_payload_blob_request_test {
         222  +
mod test_payload_blob_test {
         223  +
  223    224   
    /// Serializes a payload targeting an empty blob
  224    225   
    /// Test ID: RestJsonHttpWithEmptyBlobPayload
  225    226   
    #[::tokio::test]
  226         -
    #[allow(unused_mut)]
         227  +
    #[::tracing_test::traced_test]
  227    228   
    async fn rest_json_http_with_empty_blob_payload_request() {
  228    229   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  229    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  230    231   
  231    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  232    233   
        let result = client.test_payload_blob().send().await;
  233    234   
        let _ = dbg!(result);
  234    235   
        let http_request = request_receiver.expect_request();
  235    236   
        let expected_headers = [("Content-Type", "application/octet-stream")];
  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(), "POST", "method was incorrect");
  242    243   
        ::pretty_assertions::assert_eq!(uri.path(), "/blob_payload", "path was incorrect");
  243    244   
    }
  244    245   
    /// Serializes a payload targeting a blob
  245    246   
    /// Test ID: RestJsonTestPayloadBlob
  246    247   
    #[::tokio::test]
  247         -
    #[allow(unused_mut)]
         248  +
    #[::tracing_test::traced_test]
  248    249   
    async fn rest_json_test_payload_blob_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   
            .test_payload_blob()
  255    256   
            .set_content_type(::std::option::Option::Some("image/jpg".to_owned()))
  256    257   
            .set_data(::std::option::Option::Some(::aws_smithy_types::Blob::new("1234")))
  257    258   
            .send()

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

@@ -200,200 +326,327 @@
  220    220   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  221    221   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  222    222   
        })?;
  223    223   
        cfg.interceptor_state()
  224    224   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  225    225   
        ::std::result::Result::Ok(())
  226    226   
    }
  227    227   
}
  228    228   
#[allow(unreachable_code, unused_variables)]
  229    229   
#[cfg(test)]
  230         -
mod test_payload_structure_request_test {
         230  +
mod test_payload_structure_test {
         231  +
  231    232   
    /// Serializes a payload targeting an empty structure
  232    233   
    /// Test ID: RestJsonHttpWithEmptyStructurePayload
  233    234   
    #[::tokio::test]
  234         -
    #[allow(unused_mut)]
         235  +
    #[::tracing_test::traced_test]
  235    236   
    async fn rest_json_http_with_empty_structure_payload_request() {
  236    237   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  237    238   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  238    239   
  239    240   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  240    241   
        let result = client
  241    242   
            .test_payload_structure()
  242    243   
            .set_payload_config(::std::option::Option::Some(crate::types::PayloadConfig::builder().build()))
  243    244   
            .send()
  244    245   
            .await;
  245    246   
        let _ = dbg!(result);
  246    247   
        let http_request = request_receiver.expect_request();
  247    248   
        let expected_headers = [("Content-Type", "application/json")];
  248    249   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  249    250   
        let required_headers = &["Content-Length"];
  250    251   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  251    252   
        let body = http_request.body().bytes().expect("body should be strict");
  252    253   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  253    254   
            body,
  254    255   
            "{}",
  255    256   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  256    257   
        ));
  257    258   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  258    259   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  259    260   
        ::pretty_assertions::assert_eq!(uri.path(), "/payload", "path was incorrect");
  260    261   
    }
  261    262   
    /// Serializes a payload targeting a structure
  262    263   
    /// Test ID: RestJsonTestPayloadStructure
  263    264   
    #[::tokio::test]
  264         -
    #[allow(unused_mut)]
         265  +
    #[::tracing_test::traced_test]
  265    266   
    async fn rest_json_test_payload_structure_request() {
  266    267   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  267    268   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  268    269   
  269    270   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  270    271   
        let result = client
  271    272   
            .test_payload_structure()
  272    273   
            .set_payload_config(::std::option::Option::Some(
  273    274   
                crate::types::PayloadConfig::builder().set_data(::std::option::Option::Some(25)).build(),
  274    275   
            ))
  275    276   
            .send()
  276    277   
            .await;
  277    278   
        let _ = dbg!(result);
  278    279   
        let http_request = request_receiver.expect_request();
  279    280   
        let expected_headers = [("Content-Type", "application/json")];
  280    281   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  281    282   
        let required_headers = &["Content-Length"];
  282    283   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_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   
            "{\"data\": 25\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(), "/payload", "path was incorrect");
  292    293   
    }
  293    294   
    /// Serializes an request with header members but no payload
  294    295   
    /// Test ID: RestJsonHttpWithHeadersButNoPayload
  295    296   
    #[::tokio::test]
  296         -
    #[allow(unused_mut)]
         297  +
    #[::tracing_test::traced_test]
  297    298   
    async fn rest_json_http_with_headers_but_no_payload_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   
            .test_payload_structure()
  304    305   
            .set_test_id(::std::option::Option::Some("t-12345".to_owned()))
  305    306   
            .set_payload_config(::std::option::Option::Some(crate::types::PayloadConfig::builder().build()))
  306    307   
            .send()

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

@@ -194,194 +311,312 @@
  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 timestamp_format_headers_request_test {
         224  +
mod timestamp_format_headers_test {
         225  +
  225    226   
    /// Tests how timestamp request headers are serialized
  226    227   
    /// Test ID: RestJsonTimestampFormatHeaders
  227    228   
    #[::tokio::test]
  228         -
    #[allow(unused_mut)]
         229  +
    #[::tracing_test::traced_test]
  229    230   
    async fn rest_json_timestamp_format_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   
            .timestamp_format_headers()
  236    237   
            .set_member_epoch_seconds(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  237    238   
                1576540098, 0_f64,
  238    239   
            )))
  239    240   
            .set_member_http_date(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  240    241   
                1576540098, 0_f64,
  241    242   
            )))
  242    243   
            .set_member_date_time(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  243    244   
                1576540098, 0_f64,
  244    245   
            )))
  245    246   
            .set_default_format(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  246    247   
                1576540098, 0_f64,
  247    248   
            )))
  248    249   
            .set_target_epoch_seconds(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  249    250   
                1576540098, 0_f64,
  250    251   
            )))
  251    252   
            .set_target_http_date(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  252    253   
                1576540098, 0_f64,
  253    254   
            )))
  254    255   
            .set_target_date_time(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  255    256   
                1576540098, 0_f64,
  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 = [
  262    263   
            ("X-defaultFormat", "Mon, 16 Dec 2019 23:48:18 GMT"),
  263    264   
            ("X-memberDateTime", "2019-12-16T23:48:18Z"),
  264    265   
            ("X-memberEpochSeconds", "1576540098"),
  265    266   
            ("X-memberHttpDate", "Mon, 16 Dec 2019 23:48:18 GMT"),
  266    267   
            ("X-targetDateTime", "2019-12-16T23:48:18Z"),
  267    268   
            ("X-targetEpochSeconds", "1576540098"),
  268    269   
            ("X-targetHttpDate", "Mon, 16 Dec 2019 23:48:18 GMT"),
  269    270   
        ];
  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(), "/TimestampFormatHeaders", "path was incorrect");
  277    278   
    }
  278    279   
    /// Tests how timestamp response headers are serialized
  279    280   
    /// Test ID: RestJsonTimestampFormatHeaders
  280    281   
    #[::tokio::test]
  281         -
    #[allow(unused_mut)]
         282  +
    #[::tracing_test::traced_test]
  282    283   
    async fn rest_json_timestamp_format_headers_response() {
  283    284   
        let expected_output = crate::operation::timestamp_format_headers::TimestampFormatHeadersOutput::builder()
  284    285   
            .set_member_epoch_seconds(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  285    286   
                1576540098, 0_f64,
  286    287   
            )))
  287    288   
            .set_member_http_date(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  288    289   
                1576540098, 0_f64,
  289    290   
            )))
  290    291   
            .set_member_date_time(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  291    292   
                1576540098, 0_f64,

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/src/operation/unit_input_and_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 unit_input_and_output_request_test {
         223  +
mod unit_input_and_output_test {
         224  +
  224    225   
    /// A unit type input serializes no payload. When clients do not
  225    226   
    /// need to serialize any data in the payload, they should omit
  226    227   
    /// a payload altogether.
  227    228   
    /// Test ID: RestJsonUnitInputAndOutput
  228    229   
    #[::tokio::test]
  229         -
    #[allow(unused_mut)]
         230  +
    #[::tracing_test::traced_test]
  230    231   
    async fn rest_json_unit_input_and_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.unit_input_and_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(), "/UnitInputAndOutput", "path was incorrect");
  244    245   
    }
  245    246   
    /// When an operation defines Unit 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: RestJsonUnitInputAndOutputNoOutput
  249    250   
    #[::tokio::test]
  250         -
    #[allow(unused_mut)]
         251  +
    #[::tracing_test::traced_test]
  251    252   
    async fn rest_json_unit_input_and_output_no_output_response() {
  252    253   
        let expected_output = crate::operation::unit_input_and_output::UnitInputAndOutputOutput::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_extras/rust-client-codegen/Cargo.toml

@@ -9,9 +46,51 @@
   29     29   
[dev-dependencies.aws-smithy-protocol-test]
   30     30   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-protocol-test"
   31     31   
[dev-dependencies.aws-smithy-runtime]
   32     32   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-runtime"
   33     33   
features = ["client", "test-util"]
   34     34   
[dev-dependencies.pretty_assertions]
   35     35   
version = "1.3.0"
   36     36   
[dev-dependencies.tokio]
   37     37   
version = "1.23.1"
   38     38   
features = ["macros", "test-util", "rt-multi-thread"]
          39  +
[dev-dependencies.tracing]
          40  +
version = "0.1"
          41  +
[dev-dependencies.tracing-test]
          42  +
version = "0.2.5"
          43  +
features = ["no-env-filter"]
   39     44   
[features]
   40     45   
test-util = ["aws-smithy-runtime/test-util"]
   41     46   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
   42     47   
behavior-version-latest = []
   43     48   
rustls = ["aws-smithy-runtime/tls-rustls"]
   44     49   
default = ["rt-tokio", "rustls"]
   45     50   
   46     51   

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/case_insensitive_error_operation.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 case_insensitive_error_operation_request_test {
         223  +
mod case_insensitive_error_operation_test {
         224  +
  224    225   
    /// Upper case error modeled lower case. See: https://github.com/smithy-lang/smithy-rs/blob/6c21fb0eb377c7120a8179f4537ba99a4b50ba96/rust-runtime/inlineable/src/json_errors.rs#L51-L51
  225    226   
    /// Test ID: UpperErrorModeledLower
  226    227   
    #[::tokio::test]
  227         -
    #[allow(unused_mut)]
         228  +
    #[::tracing_test::traced_test]
  228    229   
    async fn upper_error_modeled_lower_response() {
  229    230   
        let expected_output = crate::types::error::CaseInsensitiveError::builder()
  230    231   
            .set_message(::std::option::Option::Some("hello".to_owned()))
  231    232   
            .build();
  232    233   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  233    234   
            ::http::response::Builder::new()
  234    235   
                .header("X-Amzn-Errortype", "CaseInsensitiveError")
  235    236   
                .status(500)
  236    237   
                .body(::aws_smithy_types::body::SdkBody::from("{\"Message\": \"hello\"}"))
  237    238   
                .unwrap(),
  238    239   
        )
  239    240   
        .unwrap();
  240    241   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  241    242   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  242    243   
  243    244   
        let op = crate::operation::case_insensitive_error_operation::CaseInsensitiveErrorOperation::new();
  244    245   
        let config = op.config().expect("the operation has config");
  245    246   
        let de = config
  246    247   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  247    248   
            .expect("the config must have a deserializer");
  248    249   
  249    250   
        let parsed = de.deserialize_streaming(&mut http_response);
  250    251   
        let parsed = parsed.unwrap_or_else(|| {
  251    252   
            let http_response =
  252    253   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  253    254   
            de.deserialize_nonstreaming(&http_response)
  254    255   
        });
  255    256   
        let parsed = parsed.expect_err("should be error response");
  256    257   
        let parsed: &crate::operation::case_insensitive_error_operation::CaseInsensitiveErrorOperationError =
  257    258   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  258    259   
        if let crate::operation::case_insensitive_error_operation::CaseInsensitiveErrorOperationError::CaseInsensitiveError(parsed) = parsed {
  259    260   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  260    261   
        } else {
  261    262   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  262    263   
        }
  263    264   
    }
  264    265   
    /// Upper case error modeled lower case
  265    266   
    /// Test ID: ServiceLevelErrorClient
  266    267   
    #[::tokio::test]
  267         -
    #[allow(unused_mut)]
         268  +
    #[::tracing_test::traced_test]
  268    269   
    async fn service_level_error_client_response() {
  269    270   
        let expected_output = crate::types::error::ExtraError::builder().build();
  270    271   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  271    272   
            ::http::response::Builder::new()
  272    273   
                .header("X-Amzn-Errortype", "ExtraError")
  273    274   
                .status(500)
  274    275   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  275    276   
                .unwrap(),
  276    277   
        )
  277    278   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/empty_struct_with_content_on_wire_op.rs

@@ -197,197 +296,297 @@
  217    217   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  218    218   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  219    219   
        })?;
  220    220   
        cfg.interceptor_state()
  221    221   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  222    222   
        ::std::result::Result::Ok(())
  223    223   
    }
  224    224   
}
  225    225   
#[allow(unreachable_code, unused_variables)]
  226    226   
#[cfg(test)]
  227         -
mod empty_struct_with_content_on_wire_op_request_test {
         227  +
mod empty_struct_with_content_on_wire_op_test {
         228  +
  228    229   
    /// Test ID: EmptyStructWithContentOnWire
  229    230   
    #[::tokio::test]
  230         -
    #[allow(unused_mut)]
         231  +
    #[::tracing_test::traced_test]
  231    232   
    async fn empty_struct_with_content_on_wire_response() {
  232    233   
        let expected_output = crate::operation::empty_struct_with_content_on_wire_op::EmptyStructWithContentOnWireOpOutput::builder()
  233    234   
            .set_empty(::std::option::Option::Some(crate::types::EmptyStruct::builder().build()))
  234    235   
            .build();
  235    236   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  236    237   
            ::http::response::Builder::new()
  237    238   
                .status(200)
  238    239   
                .body(::aws_smithy_types::body::SdkBody::from("{\"empty\": {\"value\":\"not actually empty\"}}"))
  239    240   
                .unwrap(),
  240    241   
        )
  241    242   
        .unwrap();
  242    243   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  243    244   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  244    245   
  245    246   
        let op = crate::operation::empty_struct_with_content_on_wire_op::EmptyStructWithContentOnWireOp::new();
  246    247   
        let config = op.config().expect("the operation has config");
  247    248   
        let de = config
  248    249   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  249    250   
            .expect("the config must have a deserializer");
  250    251   
  251    252   
        let parsed = de.deserialize_streaming(&mut http_response);
  252    253   
        let parsed = parsed.unwrap_or_else(|| {
  253    254   
            let http_response =
  254    255   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  255    256   
            de.deserialize_nonstreaming(&http_response)
  256    257   
        });
  257    258   
        let parsed = parsed
  258    259   
            .expect("should be successful response")
  259    260   
            .downcast::<crate::operation::empty_struct_with_content_on_wire_op::EmptyStructWithContentOnWireOpOutput>()
  260    261   
            .unwrap();
  261    262   
        ::pretty_assertions::assert_eq!(parsed.empty, expected_output.empty, "Unexpected value for `empty`");
  262    263   
    }
  263    264   
    /// Upper case error modeled lower case
  264    265   
    /// Test ID: ServiceLevelErrorClient
  265    266   
    #[::tokio::test]
  266         -
    #[allow(unused_mut)]
         267  +
    #[::tracing_test::traced_test]
  267    268   
    async fn service_level_error_client_response() {
  268    269   
        let expected_output = crate::types::error::ExtraError::builder().build();
  269    270   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  270    271   
            ::http::response::Builder::new()
  271    272   
                .header("X-Amzn-Errortype", "ExtraError")
  272    273   
                .status(500)
  273    274   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  274    275   
                .unwrap(),
  275    276   
        )
  276    277   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/enum_query.rs

@@ -195,195 +280,281 @@
  215    215   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  216    216   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  217    217   
        })?;
  218    218   
        cfg.interceptor_state()
  219    219   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  220    220   
        ::std::result::Result::Ok(())
  221    221   
    }
  222    222   
}
  223    223   
#[allow(unreachable_code, unused_variables)]
  224    224   
#[cfg(test)]
  225         -
mod enum_query_request_test {
         225  +
mod enum_query_test {
         226  +
  226    227   
    /// Test ID: EnumQueryRequest
  227    228   
    #[::tokio::test]
  228         -
    #[allow(unused_mut)]
         229  +
    #[::tracing_test::traced_test]
  229    230   
    async fn enum_query_request_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   
            .enum_query()
  236    237   
            .set_enum(::std::option::Option::Some(
  237    238   
                "enumvalue".parse::<crate::types::StringEnum>().expect("static value validated to member"),
  238    239   
            ))
  239    240   
            .send()
  240    241   
            .await;
  241    242   
        let _ = dbg!(result);
  242    243   
        let http_request = request_receiver.expect_request();
  243    244   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  244    245   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  245    246   
        ::pretty_assertions::assert_eq!(uri.path(), "/foo/enumvalue", "path was incorrect");
  246    247   
    }
  247    248   
    /// Upper case error modeled lower case
  248    249   
    /// Test ID: ServiceLevelErrorClient
  249    250   
    #[::tokio::test]
  250         -
    #[allow(unused_mut)]
         251  +
    #[::tracing_test::traced_test]
  251    252   
    async fn service_level_error_client_response() {
  252    253   
        let expected_output = crate::types::error::ExtraError::builder().build();
  253    254   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  254    255   
            ::http::response::Builder::new()
  255    256   
                .header("X-Amzn-Errortype", "ExtraError")
  256    257   
                .status(500)
  257    258   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  258    259   
                .unwrap(),
  259    260   
        )
  260    261   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/escaped_string_values.rs

@@ -199,199 +338,339 @@
  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 escaped_string_values_request_test {
         229  +
mod escaped_string_values_test {
         230  +
  230    231   
    /// Test ID: EscapedStringValuesRequest
  231    232   
    #[::tokio::test]
  232         -
    #[allow(unused_mut)]
         233  +
    #[::tracing_test::traced_test]
  233    234   
    async fn escaped_string_values_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   
            .escaped_string_values()
  240    241   
            .set_enum(::std::option::Option::Some(
  241    242   
                "has\"quotes"
  242    243   
                    .parse::<crate::types::EnumWithEscapedChars>()
  243    244   
                    .expect("static value validated to member"),
  244    245   
            ))
  245    246   
            .set_some_string(::std::option::Option::Some("test".to_owned()))
  246    247   
            .send()
  247    248   
            .await;
  248    249   
        let _ = dbg!(result);
  249    250   
        let http_request = request_receiver.expect_request();
  250    251   
        let expected_headers = [("Content-Type", "application/json")];
  251    252   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  252    253   
        let body = http_request.body().bytes().expect("body should be strict");
  253    254   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  254    255   
            body,
  255    256   
            "{\"enum\":\"has\\\"quotes\",\"also\\\"has\\\"quotes\":\"test\"}",
  256    257   
            ::aws_smithy_protocol_test::MediaType::from("unknown"),
  257    258   
        ));
  258    259   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  259    260   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  260    261   
        ::pretty_assertions::assert_eq!(uri.path(), "/escaped-string-values", "path was incorrect");
  261    262   
    }
  262    263   
    /// Test ID: EscapedStringValuesResponse
  263    264   
    #[::tokio::test]
  264         -
    #[allow(unused_mut)]
         265  +
    #[::tracing_test::traced_test]
  265    266   
    async fn escaped_string_values_response_response() {
  266    267   
        let expected_output = crate::operation::escaped_string_values::EscapedStringValuesOutput::builder()
  267    268   
            .set_enum(::std::option::Option::Some(
  268    269   
                "has\"quotes"
  269    270   
                    .parse::<crate::types::EnumWithEscapedChars>()
  270    271   
                    .expect("static value validated to member"),
  271    272   
            ))
  272    273   
            .set_some_string(::std::option::Option::Some("test".to_owned()))
  273    274   
            .build();
  274    275   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  275    276   
            ::http::response::Builder::new()
  276    277   
                .status(200)
  277    278   
                .body(::aws_smithy_types::body::SdkBody::from(
  278    279   
                    "{\"enum\":\"has\\\"quotes\",\"also\\\"has\\\"quotes\":\"test\"}",
  279    280   
                ))
  280    281   
                .unwrap(),
  281    282   
        )
  282    283   
        .unwrap();
  283    284   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  284    285   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  285    286   
  286    287   
        let op = crate::operation::escaped_string_values::EscapedStringValues::new();
  287    288   
        let config = op.config().expect("the operation has config");
  288    289   
        let de = config
  289    290   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  290    291   
            .expect("the config must have a deserializer");
  291    292   
  292    293   
        let parsed = de.deserialize_streaming(&mut http_response);
  293    294   
        let parsed = parsed.unwrap_or_else(|| {
  294    295   
            let http_response =
  295    296   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  296    297   
            de.deserialize_nonstreaming(&http_response)
  297    298   
        });
  298    299   
        let parsed = parsed
  299    300   
            .expect("should be successful response")
  300    301   
            .downcast::<crate::operation::escaped_string_values::EscapedStringValuesOutput>()
  301    302   
            .unwrap();
  302    303   
        ::pretty_assertions::assert_eq!(parsed.r#enum, expected_output.r#enum, "Unexpected value for `r#enum`");
  303    304   
        ::pretty_assertions::assert_eq!(parsed.some_string, expected_output.some_string, "Unexpected value for `some_string`");
  304    305   
    }
  305    306   
    /// Upper case error modeled lower case
  306    307   
    /// Test ID: ServiceLevelErrorClient
  307    308   
    #[::tokio::test]
  308         -
    #[allow(unused_mut)]
         309  +
    #[::tracing_test::traced_test]
  309    310   
    async fn service_level_error_client_response() {
  310    311   
        let expected_output = crate::types::error::ExtraError::builder().build();
  311    312   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  312    313   
            ::http::response::Builder::new()
  313    314   
                .header("X-Amzn-Errortype", "ExtraError")
  314    315   
                .status(500)
  315    316   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  316    317   
                .unwrap(),
  317    318   
        )
  318    319   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/http_enum_payload2.rs

@@ -193,193 +324,325 @@
  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 http_enum_payload2_request_test {
         223  +
mod http_enum_payload2_test {
         224  +
  224    225   
    /// Test ID: RestJsonEnumPayloadRequest2
  225    226   
    #[::tokio::test]
  226         -
    #[allow(unused_mut)]
         227  +
    #[::tracing_test::traced_test]
  227    228   
    async fn rest_json_enum_payload_request2_request() {
  228    229   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  229    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  230    231   
  231    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  232    233   
        let result = client
  233    234   
            .http_enum_payload2()
  234    235   
            .set_payload(::std::option::Option::Some(
  235    236   
                "enumvalue".parse::<crate::types::StringEnum>().expect("static value validated to member"),
  236    237   
            ))
  237    238   
            .send()
  238    239   
            .await;
  239    240   
        let _ = dbg!(result);
  240    241   
        let http_request = request_receiver.expect_request();
  241    242   
        let expected_headers = [("Content-Type", "text/plain")];
  242    243   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  243    244   
        let body = http_request.body().bytes().expect("body should be strict");
  244    245   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  245    246   
            body,
  246    247   
            "enumvalue",
  247    248   
            ::aws_smithy_protocol_test::MediaType::from("unknown"),
  248    249   
        ));
  249    250   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  250    251   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  251    252   
        ::pretty_assertions::assert_eq!(uri.path(), "/EnumPayload2", "path was incorrect");
  252    253   
    }
  253    254   
    /// Test ID: RestJsonEnumPayloadResponse2
  254    255   
    #[::tokio::test]
  255         -
    #[allow(unused_mut)]
         256  +
    #[::tracing_test::traced_test]
  256    257   
    async fn rest_json_enum_payload_response2_response() {
  257    258   
        let expected_output = crate::operation::http_enum_payload2::HttpEnumPayload2Output::builder()
  258    259   
            .set_payload(::std::option::Option::Some(
  259    260   
                "enumvalue".parse::<crate::types::StringEnum>().expect("static value validated to member"),
  260    261   
            ))
  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   
                .header("Content-Type", "text/plain")
  265    266   
                .status(200)
  266    267   
                .body(::aws_smithy_types::body::SdkBody::from("enumvalue"))
  267    268   
                .unwrap(),
  268    269   
        )
  269    270   
        .unwrap();
  270    271   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  271    272   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  272    273   
  273    274   
        let op = crate::operation::http_enum_payload2::HttpEnumPayload2::new();
  274    275   
        let config = op.config().expect("the operation has config");
  275    276   
        let de = config
  276    277   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  277    278   
            .expect("the config must have a deserializer");
  278    279   
  279    280   
        let parsed = de.deserialize_streaming(&mut http_response);
  280    281   
        let parsed = parsed.unwrap_or_else(|| {
  281    282   
            let http_response =
  282    283   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  283    284   
            de.deserialize_nonstreaming(&http_response)
  284    285   
        });
  285    286   
        let parsed = parsed
  286    287   
            .expect("should be successful response")
  287    288   
            .downcast::<crate::operation::http_enum_payload2::HttpEnumPayload2Output>()
  288    289   
            .unwrap();
  289    290   
        ::pretty_assertions::assert_eq!(parsed.payload, expected_output.payload, "Unexpected value for `payload`");
  290    291   
    }
  291    292   
    /// Upper case error modeled lower case
  292    293   
    /// Test ID: ServiceLevelErrorClient
  293    294   
    #[::tokio::test]
  294         -
    #[allow(unused_mut)]
         295  +
    #[::tracing_test::traced_test]
  295    296   
    async fn service_level_error_client_response() {
  296    297   
        let expected_output = crate::types::error::ExtraError::builder().build();
  297    298   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  298    299   
            ::http::response::Builder::new()
  299    300   
                .header("X-Amzn-Errortype", "ExtraError")
  300    301   
                .status(500)
  301    302   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  302    303   
                .unwrap(),
  303    304   
        )
  304    305   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/http_payload_traits2.rs

@@ -200,200 +264,265 @@
  220    220   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  221    221   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  222    222   
        })?;
  223    223   
        cfg.interceptor_state()
  224    224   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  225    225   
        ::std::result::Result::Ok(())
  226    226   
    }
  227    227   
}
  228    228   
#[allow(unreachable_code, unused_variables)]
  229    229   
#[cfg(test)]
  230         -
mod http_payload_traits2_request_test {
         230  +
mod http_payload_traits2_test {
         231  +
  231    232   
    /// Upper case error modeled lower case
  232    233   
    /// Test ID: ServiceLevelErrorClient
  233    234   
    #[::tokio::test]
  234         -
    #[allow(unused_mut)]
         235  +
    #[::tracing_test::traced_test]
  235    236   
    async fn service_level_error_client_response() {
  236    237   
        let expected_output = crate::types::error::ExtraError::builder().build();
  237    238   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  238    239   
            ::http::response::Builder::new()
  239    240   
                .header("X-Amzn-Errortype", "ExtraError")
  240    241   
                .status(500)
  241    242   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  242    243   
                .unwrap(),
  243    244   
        )
  244    245   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/http_string_payload2.rs

@@ -199,199 +328,329 @@
  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_payload2_request_test {
         229  +
mod http_string_payload2_test {
         230  +
  230    231   
    /// Test ID: RestJsonStringPayloadRequest2
  231    232   
    #[::tokio::test]
  232         -
    #[allow(unused_mut)]
         233  +
    #[::tracing_test::traced_test]
  233    234   
    async fn rest_json_string_payload_request2_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_payload2()
  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 expected_headers = [("Content-Type", "text/plain")];
  246    247   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  247    248   
        let required_headers = &["Content-Length"];
  248    249   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  249    250   
        let body = http_request.body().bytes().expect("body should be strict");
  250    251   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  251    252   
            body,
  252    253   
            "rawstring",
  253    254   
            ::aws_smithy_protocol_test::MediaType::from("text/plain"),
  254    255   
        ));
  255    256   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  256    257   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  257    258   
        ::pretty_assertions::assert_eq!(uri.path(), "/StringPayload2", "path was incorrect");
  258    259   
    }
  259    260   
    /// Test ID: RestJsonStringPayloadResponse2
  260    261   
    #[::tokio::test]
  261         -
    #[allow(unused_mut)]
         262  +
    #[::tracing_test::traced_test]
  262    263   
    async fn rest_json_string_payload_response2_response() {
  263    264   
        let expected_output = crate::operation::http_string_payload2::HttpStringPayload2Output::builder()
  264    265   
            .set_payload(::std::option::Option::Some("rawstring".to_owned()))
  265    266   
            .build();
  266    267   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  267    268   
            ::http::response::Builder::new()
  268    269   
                .header("Content-Type", "text/plain")
  269    270   
                .status(200)
  270    271   
                .body(::aws_smithy_types::body::SdkBody::from("rawstring"))
  271    272   
                .unwrap(),
  272    273   
        )
  273    274   
        .unwrap();
  274    275   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  275    276   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  276    277   
  277    278   
        let op = crate::operation::http_string_payload2::HttpStringPayload2::new();
  278    279   
        let config = op.config().expect("the operation has config");
  279    280   
        let de = config
  280    281   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  281    282   
            .expect("the config must have a deserializer");
  282    283   
  283    284   
        let parsed = de.deserialize_streaming(&mut http_response);
  284    285   
        let parsed = parsed.unwrap_or_else(|| {
  285    286   
            let http_response =
  286    287   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  287    288   
            de.deserialize_nonstreaming(&http_response)
  288    289   
        });
  289    290   
        let parsed = parsed
  290    291   
            .expect("should be successful response")
  291    292   
            .downcast::<crate::operation::http_string_payload2::HttpStringPayload2Output>()
  292    293   
            .unwrap();
  293    294   
        ::pretty_assertions::assert_eq!(parsed.payload, expected_output.payload, "Unexpected value for `payload`");
  294    295   
    }
  295    296   
    /// Upper case error modeled lower case
  296    297   
    /// Test ID: ServiceLevelErrorClient
  297    298   
    #[::tokio::test]
  298         -
    #[allow(unused_mut)]
         299  +
    #[::tracing_test::traced_test]
  299    300   
    async fn service_level_error_client_response() {
  300    301   
        let expected_output = crate::types::error::ExtraError::builder().build();
  301    302   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  302    303   
            ::http::response::Builder::new()
  303    304   
                .header("X-Amzn-Errortype", "ExtraError")
  304    305   
                .status(500)
  305    306   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  306    307   
                .unwrap(),
  307    308   
        )
  308    309   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/malformed_content_type_with_body2.rs

@@ -199,199 +263,264 @@
  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 malformed_content_type_with_body2_request_test {
         229  +
mod malformed_content_type_with_body2_test {
         230  +
  230    231   
    /// Upper case error modeled lower case
  231    232   
    /// Test ID: ServiceLevelErrorClient
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn service_level_error_client_response() {
  235    236   
        let expected_output = crate::types::error::ExtraError::builder().build();
  236    237   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  237    238   
            ::http::response::Builder::new()
  238    239   
                .header("X-Amzn-Errortype", "ExtraError")
  239    240   
                .status(500)
  240    241   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  241    242   
                .unwrap(),
  242    243   
        )
  243    244   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/map_with_enum_key_op.rs

@@ -192,192 +332,333 @@
  212    212   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  213    213   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  214    214   
        })?;
  215    215   
        cfg.interceptor_state()
  216    216   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  217    217   
        ::std::result::Result::Ok(())
  218    218   
    }
  219    219   
}
  220    220   
#[allow(unreachable_code, unused_variables)]
  221    221   
#[cfg(test)]
  222         -
mod map_with_enum_key_op_request_test {
         222  +
mod map_with_enum_key_op_test {
         223  +
  223    224   
    /// Test ID: MapWithEnumKeyRequest
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn map_with_enum_key_request_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   
            .map_with_enum_key_op()
  233    234   
            .set_map(::std::option::Option::Some({
  234    235   
                let mut ret = ::std::collections::HashMap::new();
  235    236   
                ret.insert(
  236    237   
                    "enumvalue".parse::<crate::types::StringEnum>().expect("static value validated to member"),
  237    238   
                    "something".to_owned(),
  238    239   
                );
  239    240   
                ret
  240    241   
            }))
  241    242   
            .send()
  242    243   
            .await;
  243    244   
        let _ = dbg!(result);
  244    245   
        let http_request = request_receiver.expect_request();
  245    246   
        let expected_headers = [("Content-Type", "application/json")];
  246    247   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  247    248   
        let body = http_request.body().bytes().expect("body should be strict");
  248    249   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  249    250   
            body,
  250    251   
            "{\"map\":{\"enumvalue\":\"something\"}}",
  251    252   
            ::aws_smithy_protocol_test::MediaType::from("unknown"),
  252    253   
        ));
  253    254   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  254    255   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  255    256   
        ::pretty_assertions::assert_eq!(uri.path(), "/map-with-enum-key", "path was incorrect");
  256    257   
    }
  257    258   
    /// Test ID: MapWithEnumKeyResponse
  258    259   
    #[::tokio::test]
  259         -
    #[allow(unused_mut)]
         260  +
    #[::tracing_test::traced_test]
  260    261   
    async fn map_with_enum_key_response_response() {
  261    262   
        let expected_output = crate::operation::map_with_enum_key_op::MapWithEnumKeyOpOutput::builder()
  262    263   
            .set_map(::std::option::Option::Some({
  263    264   
                let mut ret = ::std::collections::HashMap::new();
  264    265   
                ret.insert(
  265    266   
                    "enumvalue".parse::<crate::types::StringEnum>().expect("static value validated to member"),
  266    267   
                    "something".to_owned(),
  267    268   
                );
  268    269   
                ret
  269    270   
            }))
  270    271   
            .build();
  271    272   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  272    273   
            ::http::response::Builder::new()
  273    274   
                .status(200)
  274    275   
                .body(::aws_smithy_types::body::SdkBody::from("{\"map\":{\"enumvalue\":\"something\"}}"))
  275    276   
                .unwrap(),
  276    277   
        )
  277    278   
        .unwrap();
  278    279   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  279    280   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  280    281   
  281    282   
        let op = crate::operation::map_with_enum_key_op::MapWithEnumKeyOp::new();
  282    283   
        let config = op.config().expect("the operation has config");
  283    284   
        let de = config
  284    285   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  285    286   
            .expect("the config must have a deserializer");
  286    287   
  287    288   
        let parsed = de.deserialize_streaming(&mut http_response);
  288    289   
        let parsed = parsed.unwrap_or_else(|| {
  289    290   
            let http_response =
  290    291   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  291    292   
            de.deserialize_nonstreaming(&http_response)
  292    293   
        });
  293    294   
        let parsed = parsed
  294    295   
            .expect("should be successful response")
  295    296   
            .downcast::<crate::operation::map_with_enum_key_op::MapWithEnumKeyOpOutput>()
  296    297   
            .unwrap();
  297    298   
        ::pretty_assertions::assert_eq!(parsed.map, expected_output.map, "Unexpected value for `map`");
  298    299   
    }
  299    300   
    /// Upper case error modeled lower case
  300    301   
    /// Test ID: ServiceLevelErrorClient
  301    302   
    #[::tokio::test]
  302         -
    #[allow(unused_mut)]
         303  +
    #[::tracing_test::traced_test]
  303    304   
    async fn service_level_error_client_response() {
  304    305   
        let expected_output = crate::types::error::ExtraError::builder().build();
  305    306   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  306    307   
            ::http::response::Builder::new()
  307    308   
                .header("X-Amzn-Errortype", "ExtraError")
  308    309   
                .status(500)
  309    310   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  310    311   
                .unwrap(),
  311    312   
        )
  312    313   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/null_in_non_sparse.rs

@@ -187,187 +295,296 @@
  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 null_in_non_sparse_request_test {
         217  +
mod null_in_non_sparse_test {
         218  +
  218    219   
    /// Test ID: NullInNonSparse
  219    220   
    #[::tokio::test]
  220         -
    #[allow(unused_mut)]
         221  +
    #[::tracing_test::traced_test]
  221    222   
    async fn null_in_non_sparse_response() {
  222    223   
        let expected_output = crate::operation::null_in_non_sparse::NullInNonSparseOutput::builder()
  223    224   
            .set_list(::std::option::Option::Some(vec!["one".to_owned(), "two".to_owned()]))
  224    225   
            .set_map(::std::option::Option::Some({
  225    226   
                let mut ret = ::std::collections::HashMap::new();
  226    227   
                ret.insert("one".to_owned(), "1".to_owned());
  227    228   
                ret
  228    229   
            }))
  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   
                .status(200)
  233    234   
                .body(::aws_smithy_types::body::SdkBody::from(
  234    235   
                    "{\"list\":[null,\"one\",null,\"two\",null],\"map\":{\"zero\":null,\"one\":\"1\"}}",
  235    236   
                ))
  236    237   
                .unwrap(),
  237    238   
        )
  238    239   
        .unwrap();
  239    240   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  240    241   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  241    242   
  242    243   
        let op = crate::operation::null_in_non_sparse::NullInNonSparse::new();
  243    244   
        let config = op.config().expect("the operation has config");
  244    245   
        let de = config
  245    246   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  246    247   
            .expect("the config must have a deserializer");
  247    248   
  248    249   
        let parsed = de.deserialize_streaming(&mut http_response);
  249    250   
        let parsed = parsed.unwrap_or_else(|| {
  250    251   
            let http_response =
  251    252   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  252    253   
            de.deserialize_nonstreaming(&http_response)
  253    254   
        });
  254    255   
        let parsed = parsed
  255    256   
            .expect("should be successful response")
  256    257   
            .downcast::<crate::operation::null_in_non_sparse::NullInNonSparseOutput>()
  257    258   
            .unwrap();
  258    259   
        ::pretty_assertions::assert_eq!(parsed.list, expected_output.list, "Unexpected value for `list`");
  259    260   
        ::pretty_assertions::assert_eq!(parsed.map, expected_output.map, "Unexpected value for `map`");
  260    261   
        ::pretty_assertions::assert_eq!(parsed.union, expected_output.union, "Unexpected value for `union`");
  261    262   
    }
  262    263   
    /// Upper case error modeled lower case
  263    264   
    /// Test ID: ServiceLevelErrorClient
  264    265   
    #[::tokio::test]
  265         -
    #[allow(unused_mut)]
         266  +
    #[::tracing_test::traced_test]
  266    267   
    async fn service_level_error_client_response() {
  267    268   
        let expected_output = crate::types::error::ExtraError::builder().build();
  268    269   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  269    270   
            ::http::response::Builder::new()
  270    271   
                .header("X-Amzn-Errortype", "ExtraError")
  271    272   
                .status(500)
  272    273   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  273    274   
                .unwrap(),
  274    275   
        )
  275    276   
        .unwrap();

tmp-codegen-diff/codegen-client-test/rest_json_extras/rust-client-codegen/src/operation/primitive_int_header.rs

@@ -193,193 +328,329 @@
  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 primitive_int_header_request_test {
         223  +
mod primitive_int_header_test {
         224  +
  224    225   
    /// Test ID: DeserPrimitiveHeader
  225    226   
    #[::tokio::test]
  226         -
    #[allow(unused_mut)]
         227  +
    #[::tracing_test::traced_test]
  227    228   
    async fn deser_primitive_header_response() {
  228    229   
        let expected_output = crate::operation::primitive_int_header::PrimitiveIntHeaderOutput::builder()
  229    230   
            .set_field(::std::option::Option::Some(123))
  230    231   
            .build();
  231    232   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  232    233   
            ::http::response::Builder::new()
  233    234   
                .header("x-field", "123")
  234    235   
                .status(200)
  235    236   
                .body(::aws_smithy_types::body::SdkBody::from(vec![]))
  236    237   
                .unwrap(),
  237    238   
        )
  238    239   
        .unwrap();
  239    240   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  240    241   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  241    242   
  242    243   
        let op = crate::operation::primitive_int_header::PrimitiveIntHeader::new();
  243    244   
        let config = op.config().expect("the operation has config");
  244    245   
        let de = config
  245    246   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  246    247   
            .expect("the config must have a deserializer");
  247    248   
  248    249   
        let parsed = de.deserialize_streaming(&mut http_response);
  249    250   
        let parsed = parsed.unwrap_or_else(|| {
  250    251   
            let http_response =
  251    252   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  252    253   
            de.deserialize_nonstreaming(&http_response)
  253    254   
        });
  254    255   
        let parsed = parsed
  255    256   
            .expect("should be successful response")
  256    257   
            .downcast::<crate::operation::primitive_int_header::PrimitiveIntHeaderOutput>()
  257    258   
            .unwrap();
  258    259   
        ::pretty_assertions::assert_eq!(parsed.field, expected_output.field, "Unexpected value for `field`");
  259    260   
    }
  260    261   
    /// Test ID: DeserPrimitiveHeaderMissing
  261    262   
    #[::tokio::test]
  262         -
    #[allow(unused_mut)]
         263  +
    #[::tracing_test::traced_test]
  263    264   
    async fn deser_primitive_header_missing_response() {
  264    265   
        let expected_output = crate::operation::primitive_int_header::PrimitiveIntHeaderOutput::builder()
  265    266   
            .set_field(::std::option::Option::Some(0))
  266    267   
            .build();
  267    268   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  268    269   
            ::http::response::Builder::new()
  269    270   
                .status(200)
  270    271   
                .body(::aws_smithy_types::body::SdkBody::from(vec![]))
  271    272   
                .unwrap(),
  272    273   
        )
  273    274   
        .unwrap();
  274    275   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  275    276   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  276    277   
  277    278   
        let op = crate::operation::primitive_int_header::PrimitiveIntHeader::new();
  278    279   
        let config = op.config().expect("the operation has config");
  279    280   
        let de = config
  280    281   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  281    282   
            .expect("the config must have a deserializer");
  282    283   
  283    284   
        let parsed = de.deserialize_streaming(&mut http_response);
  284    285   
        let parsed = parsed.unwrap_or_else(|| {
  285    286   
            let http_response =
  286    287   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  287    288   
            de.deserialize_nonstreaming(&http_response)
  288    289   
        });
  289    290   
        let parsed = parsed
  290    291   
            .expect("should be successful response")
  291    292   
            .downcast::<crate::operation::primitive_int_header::PrimitiveIntHeaderOutput>()
  292    293   
            .unwrap();
  293    294   
        ::pretty_assertions::assert_eq!(parsed.field, expected_output.field, "Unexpected value for `field`");
  294    295   
    }
  295    296   
    /// Upper case error modeled lower case
  296    297   
    /// Test ID: ServiceLevelErrorClient
  297    298   
    #[::tokio::test]
  298         -
    #[allow(unused_mut)]
         299  +
    #[::tracing_test::traced_test]
  299    300   
    async fn service_level_error_client_response() {
  300    301   
        let expected_output = crate::types::error::ExtraError::builder().build();
  301    302   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  302    303   
            ::http::response::Builder::new()
  303    304   
                .header("X-Amzn-Errortype", "ExtraError")
  304    305   
                .status(500)
  305    306   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  306    307   
                .unwrap(),
  307    308   
        )
  308    309   
        .unwrap();