Client Test

Client Test

rev. ce76c569583a3fdee1e9d39e082a8d5efd7b13b7 (ignoring whitespace)

Files changed:

tmp-codegen-diff/codegen-client-test/naming_test_ops/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/naming_test_ops/rust-client-codegen/src/operation/reserved_words_as_members.rs

@@ -198,198 +261,262 @@
  218    218   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  219    219   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  220    220   
        })?;
  221    221   
        cfg.interceptor_state()
  222    222   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  223    223   
        ::std::result::Result::Ok(())
  224    224   
    }
  225    225   
}
  226    226   
#[allow(unreachable_code, unused_variables)]
  227    227   
#[cfg(test)]
  228         -
mod reserved_words_as_members_request_test {
         228  +
mod reserved_words_as_members_test {
         229  +
  229    230   
    /// Test ID: reserved_words
  230    231   
    #[::tokio::test]
  231         -
    #[allow(unused_mut)]
         232  +
    #[::tracing_test::traced_test]
  232    233   
    async fn reserved_words_request() {
  233    234   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  234    235   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  235    236   
  236    237   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  237    238   
        let result = client
  238    239   
            .reserved_words_as_members()
  239    240   
            .set_as(::std::option::Option::Some(5))
  240    241   
            .set_async(::std::option::Option::Some(true))
  241    242   
            .send()

tmp-codegen-diff/codegen-client-test/naming_test_ops/rust-client-codegen/src/operation/structure_name_punning.rs

@@ -197,197 +260,261 @@
  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 structure_name_punning_request_test {
         227  +
mod structure_name_punning_test {
         228  +
  228    229   
    /// Test ID: structure_punning
  229    230   
    #[::tokio::test]
  230         -
    #[allow(unused_mut)]
         231  +
    #[::tracing_test::traced_test]
  231    232   
    async fn structure_punning_request() {
  232    233   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  233    234   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  234    235   
  235    236   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  236    237   
        let result = client
  237    238   
            .structure_name_punning()
  238    239   
            .set_regular_string(::std::option::Option::Some("hello!".to_owned()))
  239    240   
            .send()
  240    241   
            .await;

tmp-codegen-diff/codegen-client-test/query-compat-test/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/query-compat-test/rust-client-codegen/src/operation/operation.rs

@@ -191,191 +254,255 @@
  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 operation_request_test {
         221  +
mod operation_test {
         222  +
  222    223   
    /// Test ID: BasicQueryCompatTest
  223    224   
    #[::tokio::test]
  224         -
    #[allow(unused_mut)]
         225  +
    #[::tracing_test::traced_test]
  225    226   
    async fn basic_query_compat_test_request() {
  226    227   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  227    228   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  228    229   
  229    230   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  230    231   
        let result = client
  231    232   
            .operation()
  232    233   
            .set_message(::std::option::Option::Some("hello!".to_owned()))
  233    234   
            .send()
  234    235   
            .await;

tmp-codegen-diff/codegen-client-test/rest_json/rust-client-codegen/Cargo.toml

@@ -25,25 +62,65 @@
   45     45   
[dev-dependencies.aws-smithy-runtime]
   46     46   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-runtime"
   47     47   
features = ["client", "test-util"]
   48     48   
[dev-dependencies.aws-smithy-types]
   49     49   
path = "/home/build/workspace/smithy-rs/rust-runtime/aws-smithy-types"
   50     50   
[dev-dependencies.pretty_assertions]
   51     51   
version = "1.3.0"
   52     52   
[dev-dependencies.tokio]
   53     53   
version = "1.23.1"
   54     54   
features = ["macros", "test-util", "rt-multi-thread"]
          55  +
[dev-dependencies.tracing-test]
          56  +
version = "0.2.5"
          57  +
features = ["no-env-filter"]
   55     58   
[features]
   56     59   
test-util = ["aws-smithy-runtime/test-util"]
   57     60   
rt-tokio = ["aws-smithy-async/rt-tokio", "aws-smithy-types/rt-tokio"]
   58     61   
behavior-version-latest = []
   59     62   
rustls = ["aws-smithy-runtime/tls-rustls"]
   60     63   
default = ["rt-tokio", "rustls"]
   61     64   
   62     65   

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

@@ -358,358 +422,423 @@
  378    378   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  379    379   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  380    380   
        })?;
  381    381   
        cfg.interceptor_state()
  382    382   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  383    383   
        ::std::result::Result::Ok(())
  384    384   
    }
  385    385   
}
  386    386   
#[allow(unreachable_code, unused_variables)]
  387    387   
#[cfg(test)]
  388         -
mod all_query_string_types_request_test {
         388  +
mod all_query_string_types_test {
         389  +
  389    390   
    /// Serializes query string parameters with all supported types
  390    391   
    /// Test ID: RestJsonAllQueryStringTypes
  391    392   
    #[::tokio::test]
  392         -
    #[allow(unused_mut)]
         393  +
    #[::tracing_test::traced_test]
  393    394   
    async fn rest_json_all_query_string_types_request() {
  394    395   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  395    396   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  396    397   
  397    398   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  398    399   
        let result = client
  399    400   
            .all_query_string_types()
  400    401   
            .set_query_string(::std::option::Option::Some("Hello there".to_owned()))
  401    402   
            .set_query_string_list(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
  402    403   
            .set_query_string_set(::std::option::Option::Some(vec!["a".to_owned(), "b".to_owned(), "c".to_owned()]))
@@ -486,487 +714,715 @@
  506    507   
        let body = http_request.body().bytes().expect("body should be strict");
  507    508   
        // No body
  508    509   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  509    510   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  510    511   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  511    512   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  512    513   
    }
  513    514   
    /// Handles query string maps
  514    515   
    /// Test ID: RestJsonQueryStringMap
  515    516   
    #[::tokio::test]
  516         -
    #[allow(unused_mut)]
         517  +
    #[::tracing_test::traced_test]
  517    518   
    async fn rest_json_query_string_map_request() {
  518    519   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  519    520   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  520    521   
  521    522   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  522    523   
        let result = client
  523    524   
            .all_query_string_types()
  524    525   
            .set_query_params_map_of_string_list(::std::option::Option::Some({
  525    526   
                let mut ret = ::std::collections::HashMap::new();
  526    527   
                ret.insert("QueryParamsStringKeyA".to_owned(), vec!["Foo".to_owned()]);
  527    528   
                ret.insert("QueryParamsStringKeyB".to_owned(), vec!["Bar".to_owned()]);
  528    529   
                ret
  529    530   
            }))
  530    531   
            .send()
  531    532   
            .await;
  532    533   
        let _ = dbg!(result);
  533    534   
        let http_request = request_receiver.expect_request();
  534    535   
        let expected_query_params = &["QueryParamsStringKeyA=Foo", "QueryParamsStringKeyB=Bar"];
  535    536   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  536    537   
        let body = http_request.body().bytes().expect("body should be strict");
  537    538   
        // No body
  538    539   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  539    540   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  540    541   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  541    542   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  542    543   
    }
  543    544   
    /// Handles escaping all required characters in the query string.
  544    545   
    /// Test ID: RestJsonQueryStringEscaping
  545    546   
    #[::tokio::test]
  546         -
    #[allow(unused_mut)]
         547  +
    #[::tracing_test::traced_test]
  547    548   
    async fn rest_json_query_string_escaping_request() {
  548    549   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  549    550   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  550    551   
  551    552   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  552    553   
        let result = client
  553    554   
            .all_query_string_types()
  554    555   
            .set_query_string(::std::option::Option::Some(" %:/?#[]@!$&'()*+,;=😹".to_owned()))
  555    556   
            .set_query_params_map_of_string_list(::std::option::Option::Some({
  556    557   
                let mut ret = ::std::collections::HashMap::new();
  557    558   
                ret.insert("String".to_owned(), vec![" %:/?#[]@!$&'()*+,;=😹".to_owned()]);
  558    559   
                ret
  559    560   
            }))
  560    561   
            .send()
  561    562   
            .await;
  562    563   
        let _ = dbg!(result);
  563    564   
        let http_request = request_receiver.expect_request();
  564    565   
        let expected_query_params = &["String=%20%25%3A%2F%3F%23%5B%5D%40%21%24%26%27%28%29%2A%2B%2C%3B%3D%F0%9F%98%B9"];
  565    566   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  566    567   
        let body = http_request.body().bytes().expect("body should be strict");
  567    568   
        // No body
  568    569   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  569    570   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  570    571   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  571    572   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  572    573   
    }
  573    574   
    /// Supports handling NaN float query values.
  574    575   
    /// Test ID: RestJsonSupportsNaNFloatQueryValues
  575    576   
    #[::tokio::test]
  576         -
    #[allow(unused_mut)]
         577  +
    #[::tracing_test::traced_test]
  577    578   
    async fn rest_json_supports_na_n_float_query_values_request() {
  578    579   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  579    580   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  580    581   
  581    582   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  582    583   
        let result = client
  583    584   
            .all_query_string_types()
  584    585   
            .set_query_float(::std::option::Option::Some(
  585    586   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  586    587   
            ))
  587    588   
            .set_query_double(::std::option::Option::Some(
  588    589   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  589    590   
            ))
  590    591   
            .set_query_params_map_of_string_list(::std::option::Option::Some({
  591    592   
                let mut ret = ::std::collections::HashMap::new();
  592    593   
                ret.insert("Float".to_owned(), vec!["NaN".to_owned()]);
  593    594   
                ret.insert("Double".to_owned(), vec!["NaN".to_owned()]);
  594    595   
                ret
  595    596   
            }))
  596    597   
            .send()
  597    598   
            .await;
  598    599   
        let _ = dbg!(result);
  599    600   
        let http_request = request_receiver.expect_request();
  600    601   
        let expected_query_params = &["Float=NaN", "Double=NaN"];
  601    602   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  602    603   
        let body = http_request.body().bytes().expect("body should be strict");
  603    604   
        // No body
  604    605   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  605    606   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  606    607   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  607    608   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  608    609   
    }
  609    610   
    /// Supports handling Infinity float query values.
  610    611   
    /// Test ID: RestJsonSupportsInfinityFloatQueryValues
  611    612   
    #[::tokio::test]
  612         -
    #[allow(unused_mut)]
         613  +
    #[::tracing_test::traced_test]
  613    614   
    async fn rest_json_supports_infinity_float_query_values_request() {
  614    615   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  615    616   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  616    617   
  617    618   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  618    619   
        let result = client
  619    620   
            .all_query_string_types()
  620    621   
            .set_query_float(::std::option::Option::Some(
  621    622   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  622    623   
            ))
  623    624   
            .set_query_double(::std::option::Option::Some(
  624    625   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  625    626   
            ))
  626    627   
            .set_query_params_map_of_string_list(::std::option::Option::Some({
  627    628   
                let mut ret = ::std::collections::HashMap::new();
  628    629   
                ret.insert("Float".to_owned(), vec!["Infinity".to_owned()]);
  629    630   
                ret.insert("Double".to_owned(), vec!["Infinity".to_owned()]);
  630    631   
                ret
  631    632   
            }))
  632    633   
            .send()
  633    634   
            .await;
  634    635   
        let _ = dbg!(result);
  635    636   
        let http_request = request_receiver.expect_request();
  636    637   
        let expected_query_params = &["Float=Infinity", "Double=Infinity"];
  637    638   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  638    639   
        let body = http_request.body().bytes().expect("body should be strict");
  639    640   
        // No body
  640    641   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  641    642   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  642    643   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  643    644   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  644    645   
    }
  645    646   
    /// Supports handling -Infinity float query values.
  646    647   
    /// Test ID: RestJsonSupportsNegativeInfinityFloatQueryValues
  647    648   
    #[::tokio::test]
  648         -
    #[allow(unused_mut)]
         649  +
    #[::tracing_test::traced_test]
  649    650   
    async fn rest_json_supports_negative_infinity_float_query_values_request() {
  650    651   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  651    652   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  652    653   
  653    654   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  654    655   
        let result = client
  655    656   
            .all_query_string_types()
  656    657   
            .set_query_float(::std::option::Option::Some(
  657    658   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  658    659   
            ))
  659    660   
            .set_query_double(::std::option::Option::Some(
  660    661   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  661    662   
            ))
  662    663   
            .set_query_params_map_of_string_list(::std::option::Option::Some({
  663    664   
                let mut ret = ::std::collections::HashMap::new();
  664    665   
                ret.insert("Float".to_owned(), vec!["-Infinity".to_owned()]);
  665    666   
                ret.insert("Double".to_owned(), vec!["-Infinity".to_owned()]);
  666    667   
                ret
  667    668   
            }))
  668    669   
            .send()
  669    670   
            .await;
  670    671   
        let _ = dbg!(result);
  671    672   
        let http_request = request_receiver.expect_request();
  672    673   
        let expected_query_params = &["Float=-Infinity", "Double=-Infinity"];
  673    674   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  674    675   
        let body = http_request.body().bytes().expect("body should be strict");
  675    676   
        // No body
  676    677   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  677    678   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  678    679   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  679    680   
        ::pretty_assertions::assert_eq!(uri.path(), "/AllQueryStringTypesInput", "path was incorrect");
  680    681   
    }
  681    682   
    /// Query values of 0 and false are serialized
  682    683   
    /// Test ID: RestJsonZeroAndFalseQueryValues
  683    684   
    #[::tokio::test]
  684         -
    #[allow(unused_mut)]
         685  +
    #[::tracing_test::traced_test]
  685    686   
    async fn rest_json_zero_and_false_query_values_request() {
  686    687   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  687    688   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  688    689   
  689    690   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  690    691   
        let result = client
  691    692   
            .all_query_string_types()
  692    693   
            .set_query_integer(::std::option::Option::Some(0))
  693    694   
            .set_query_boolean(::std::option::Option::Some(false))
  694    695   
            .set_query_params_map_of_string_list(::std::option::Option::Some({

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

@@ -214,214 +305,306 @@
  234    234   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  235    235   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  236    236   
        })?;
  237    237   
        cfg.interceptor_state()
  238    238   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  239    239   
        ::std::result::Result::Ok(())
  240    240   
    }
  241    241   
}
  242    242   
#[allow(unreachable_code, unused_variables)]
  243    243   
#[cfg(test)]
  244         -
mod constant_and_variable_query_string_request_test {
         244  +
mod constant_and_variable_query_string_test {
         245  +
  245    246   
    /// Mixes constant and variable query string parameters
  246    247   
    /// Test ID: RestJsonConstantAndVariableQueryStringMissingOneValue
  247    248   
    #[::tokio::test]
  248         -
    #[allow(unused_mut)]
         249  +
    #[::tracing_test::traced_test]
  249    250   
    async fn rest_json_constant_and_variable_query_string_missing_one_value_request() {
  250    251   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  251    252   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  252    253   
  253    254   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  254    255   
        let result = client
  255    256   
            .constant_and_variable_query_string()
  256    257   
            .set_baz(::std::option::Option::Some("bam".to_owned()))
  257    258   
            .send()
  258    259   
            .await;
  259    260   
        let _ = dbg!(result);
  260    261   
        let http_request = request_receiver.expect_request();
  261    262   
        let expected_query_params = &["foo=bar", "baz=bam"];
  262    263   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_query_string(&http_request, expected_query_params));
  263    264   
        let forbid_params = &["maybeSet"];
  264    265   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::forbid_query_params(&http_request, forbid_params));
  265    266   
        let body = http_request.body().bytes().expect("body should be strict");
  266    267   
        // No body
  267    268   
        ::pretty_assertions::assert_eq!(::std::str::from_utf8(body).unwrap(), "");
  268    269   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  269    270   
        ::pretty_assertions::assert_eq!(http_request.method(), "GET", "method was incorrect");
  270    271   
        ::pretty_assertions::assert_eq!(uri.path(), "/ConstantAndVariableQueryString", "path was incorrect");
  271    272   
    }
  272    273   
    /// Mixes constant and variable query string parameters
  273    274   
    /// Test ID: RestJsonConstantAndVariableQueryStringAllValues
  274    275   
    #[::tokio::test]
  275         -
    #[allow(unused_mut)]
         276  +
    #[::tracing_test::traced_test]
  276    277   
    async fn rest_json_constant_and_variable_query_string_all_values_request() {
  277    278   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  278    279   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  279    280   
  280    281   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  281    282   
        let result = client
  282    283   
            .constant_and_variable_query_string()
  283    284   
            .set_baz(::std::option::Option::Some("bam".to_owned()))
  284    285   
            .set_maybe_set(::std::option::Option::Some("yes".to_owned()))
  285    286   
            .send()

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

@@ -214,214 +278,279 @@
  234    234   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  235    235   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  236    236   
        })?;
  237    237   
        cfg.interceptor_state()
  238    238   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  239    239   
        ::std::result::Result::Ok(())
  240    240   
    }
  241    241   
}
  242    242   
#[allow(unreachable_code, unused_variables)]
  243    243   
#[cfg(test)]
  244         -
mod constant_query_string_request_test {
         244  +
mod constant_query_string_test {
         245  +
  245    246   
    /// Includes constant query string parameters
  246    247   
    /// Test ID: RestJsonConstantQueryString
  247    248   
    #[::tokio::test]
  248         -
    #[allow(unused_mut)]
         249  +
    #[::tracing_test::traced_test]
  249    250   
    async fn rest_json_constant_query_string_request() {
  250    251   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  251    252   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  252    253   
  253    254   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  254    255   
        let result = client
  255    256   
            .constant_query_string()
  256    257   
            .set_hello(::std::option::Option::Some("hi".to_owned()))
  257    258   
            .send()
  258    259   
            .await;

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

@@ -187,187 +291,292 @@
  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 datetime_offsets_request_test {
         217  +
mod datetime_offsets_test {
         218  +
  218    219   
    /// Ensures that clients can correctly parse datetime (timestamps) with offsets
  219    220   
    /// Test ID: RestJsonDateTimeWithNegativeOffset
  220    221   
    #[::tokio::test]
  221         -
    #[allow(unused_mut)]
         222  +
    #[::tracing_test::traced_test]
  222    223   
    async fn rest_json_date_time_with_negative_offset_response() {
  223    224   
        let expected_output = crate::operation::datetime_offsets::DatetimeOffsetsOutput::builder()
  224    225   
            .set_datetime(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  225    226   
                1576540098, 0_f64,
  226    227   
            )))
  227    228   
            .build();
  228    229   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  229    230   
            ::http::response::Builder::new()
  230    231   
                .status(200)
  231    232   
                .body(::aws_smithy_types::body::SdkBody::from(
  232    233   
                    "      {\n          \"datetime\": \"2019-12-16T22:48:18-01:00\"\n      }\n",
  233    234   
                ))
  234    235   
                .unwrap(),
  235    236   
        )
  236    237   
        .unwrap();
  237    238   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  238    239   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  239    240   
  240    241   
        let op = crate::operation::datetime_offsets::DatetimeOffsets::new();
  241    242   
        let config = op.config().expect("the operation has config");
  242    243   
        let de = config
  243    244   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  244    245   
            .expect("the config must have a deserializer");
  245    246   
  246    247   
        let parsed = de.deserialize_streaming(&mut http_response);
  247    248   
        let parsed = parsed.unwrap_or_else(|| {
  248    249   
            let http_response =
  249    250   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  250    251   
            de.deserialize_nonstreaming(&http_response)
  251    252   
        });
  252    253   
        let parsed = parsed
  253    254   
            .expect("should be successful response")
  254    255   
            .downcast::<crate::operation::datetime_offsets::DatetimeOffsetsOutput>()
  255    256   
            .unwrap();
  256    257   
        ::pretty_assertions::assert_eq!(parsed.datetime, expected_output.datetime, "Unexpected value for `datetime`");
  257    258   
    }
  258    259   
    /// Ensures that clients can correctly parse datetime (timestamps) with offsets
  259    260   
    /// Test ID: RestJsonDateTimeWithPositiveOffset
  260    261   
    #[::tokio::test]
  261         -
    #[allow(unused_mut)]
         262  +
    #[::tracing_test::traced_test]
  262    263   
    async fn rest_json_date_time_with_positive_offset_response() {
  263    264   
        let expected_output = crate::operation::datetime_offsets::DatetimeOffsetsOutput::builder()
  264    265   
            .set_datetime(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  265    266   
                1576540098, 0_f64,
  266    267   
            )))
  267    268   
            .build();
  268    269   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  269    270   
            ::http::response::Builder::new()
  270    271   
                .status(200)
  271    272   
                .body(::aws_smithy_types::body::SdkBody::from(

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

@@ -191,191 +633,634 @@
  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 document_type_request_test {
         221  +
mod document_type_test {
         222  +
  222    223   
    /// Serializes document types as part of the JSON request payload with no escaping.
  223    224   
    /// Test ID: DocumentTypeInputWithObject
  224    225   
    #[::tokio::test]
  225         -
    #[allow(unused_mut)]
         226  +
    #[::tracing_test::traced_test]
  226    227   
    async fn document_type_input_with_object_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   
            .document_type()
  233    234   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  234    235   
            .set_document_value(::std::option::Option::Some({
  235    236   
                let json_bytes = br#"{
  236    237   
                        "foo": "bar"
  237    238   
                    }"#;
  238    239   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  239    240   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  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   
            "{\n    \"stringValue\": \"string\",\n    \"documentValue\": {\n        \"foo\": \"bar\"\n    }\n}",
  251    252   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  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(), "PUT", "method was incorrect");
  255    256   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentType", "path was incorrect");
  256    257   
    }
  257    258   
    /// Serializes document types using a string.
  258    259   
    /// Test ID: DocumentInputWithString
  259    260   
    #[::tokio::test]
  260         -
    #[allow(unused_mut)]
         261  +
    #[::tracing_test::traced_test]
  261    262   
    async fn document_input_with_string_request() {
  262    263   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  263    264   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  264    265   
  265    266   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  266    267   
        let result = client
  267    268   
            .document_type()
  268    269   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  269    270   
            .set_document_value(::std::option::Option::Some({
  270    271   
                let json_bytes = br#""hello""#;
  271    272   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  272    273   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  273    274   
            }))
  274    275   
            .send()
  275    276   
            .await;
  276    277   
        let _ = dbg!(result);
  277    278   
        let http_request = request_receiver.expect_request();
  278    279   
        let expected_headers = [("Content-Type", "application/json")];
  279    280   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  280    281   
        let body = http_request.body().bytes().expect("body should be strict");
  281    282   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  282    283   
            body,
  283    284   
            "{\n    \"stringValue\": \"string\",\n    \"documentValue\": \"hello\"\n}",
  284    285   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  285    286   
        ));
  286    287   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  287    288   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  288    289   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentType", "path was incorrect");
  289    290   
    }
  290    291   
    /// Serializes document types using a number.
  291    292   
    /// Test ID: DocumentInputWithNumber
  292    293   
    #[::tokio::test]
  293         -
    #[allow(unused_mut)]
         294  +
    #[::tracing_test::traced_test]
  294    295   
    async fn document_input_with_number_request() {
  295    296   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  296    297   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  297    298   
  298    299   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  299    300   
        let result = client
  300    301   
            .document_type()
  301    302   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  302    303   
            .set_document_value(::std::option::Option::Some({
  303    304   
                let json_bytes = br#"10"#;
  304    305   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  305    306   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  306    307   
            }))
  307    308   
            .send()
  308    309   
            .await;
  309    310   
        let _ = dbg!(result);
  310    311   
        let http_request = request_receiver.expect_request();
  311    312   
        let expected_headers = [("Content-Type", "application/json")];
  312    313   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  313    314   
        let body = http_request.body().bytes().expect("body should be strict");
  314    315   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  315    316   
            body,
  316    317   
            "{\n    \"stringValue\": \"string\",\n    \"documentValue\": 10\n}",
  317    318   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  318    319   
        ));
  319    320   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  320    321   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  321    322   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentType", "path was incorrect");
  322    323   
    }
  323    324   
    /// Serializes document types using a boolean.
  324    325   
    /// Test ID: DocumentInputWithBoolean
  325    326   
    #[::tokio::test]
  326         -
    #[allow(unused_mut)]
         327  +
    #[::tracing_test::traced_test]
  327    328   
    async fn document_input_with_boolean_request() {
  328    329   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  329    330   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  330    331   
  331    332   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  332    333   
        let result = client
  333    334   
            .document_type()
  334    335   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  335    336   
            .set_document_value(::std::option::Option::Some({
  336    337   
                let json_bytes = br#"true"#;
  337    338   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  338    339   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  339    340   
            }))
  340    341   
            .send()
  341    342   
            .await;
  342    343   
        let _ = dbg!(result);
  343    344   
        let http_request = request_receiver.expect_request();
  344    345   
        let expected_headers = [("Content-Type", "application/json")];
  345    346   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  346    347   
        let body = http_request.body().bytes().expect("body should be strict");
  347    348   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  348    349   
            body,
  349    350   
            "{\n    \"stringValue\": \"string\",\n    \"documentValue\": true\n}",
  350    351   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  351    352   
        ));
  352    353   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  353    354   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  354    355   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentType", "path was incorrect");
  355    356   
    }
  356    357   
    /// Serializes document types using a list.
  357    358   
    /// Test ID: DocumentInputWithList
  358    359   
    #[::tokio::test]
  359         -
    #[allow(unused_mut)]
         360  +
    #[::tracing_test::traced_test]
  360    361   
    async fn document_input_with_list_request() {
  361    362   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  362    363   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  363    364   
  364    365   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  365    366   
        let result = client
  366    367   
            .document_type()
  367    368   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  368    369   
            .set_document_value(::std::option::Option::Some({
  369    370   
                let json_bytes = br#"[
  370    371   
                        true,
  371    372   
                        "hi",
  372    373   
                        [
  373    374   
                            1,
  374    375   
                            2
  375    376   
                        ],
  376    377   
                        {
  377    378   
                            "foo": {
  378    379   
                                "baz": [
  379    380   
                                    3,
  380    381   
                                    4
  381    382   
                                ]
  382    383   
                            }
  383    384   
                        }
  384    385   
                    ]"#;
  385    386   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  386    387   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  387    388   
            }))
  388    389   
            .send()
  389    390   
            .await;
  390    391   
        let _ = dbg!(result);
  391    392   
        let http_request = request_receiver.expect_request();
  392    393   
        let expected_headers = [("Content-Type", "application/json")];
  393    394   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  394    395   
        let body = http_request.body().bytes().expect("body should be strict");
  395    396   
        ::aws_smithy_protocol_test::assert_ok(
  396    397   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"stringValue\": \"string\",\n    \"documentValue\": [\n        true,\n        \"hi\",\n        [\n            1,\n            2\n        ],\n        {\n            \"foo\": {\n                \"baz\": [\n                    3,\n                    4\n                ]\n            }\n        }\n    ]\n}", ::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(), "PUT", "method was incorrect");
  400    401   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentType", "path was incorrect");
  401    402   
    }
  402    403   
    /// Serializes documents as part of the JSON response payload with no escaping.
  403    404   
    /// Test ID: DocumentOutput
  404    405   
    #[::tokio::test]
  405         -
    #[allow(unused_mut)]
         406  +
    #[::tracing_test::traced_test]
  406    407   
    async fn document_output_response() {
  407    408   
        let expected_output = crate::operation::document_type::DocumentTypeOutput::builder()
  408    409   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  409    410   
            .set_document_value(::std::option::Option::Some({
  410    411   
                let json_bytes = br#"{
  411    412   
                        "foo": "bar"
  412    413   
                    }"#;
  413    414   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  414    415   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  415    416   
            }))
  416    417   
            .build();
  417    418   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  418    419   
            ::http::response::Builder::new()
  419    420   
                .header("Content-Type", "application/json")
  420    421   
                .status(200)
  421    422   
                .body(::aws_smithy_types::body::SdkBody::from(
  422    423   
                    "{\n    \"stringValue\": \"string\",\n    \"documentValue\": {\n        \"foo\": \"bar\"\n    }\n}",
  423    424   
                ))
  424    425   
                .unwrap(),
  425    426   
        )
  426    427   
        .unwrap();
  427    428   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  428    429   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  429    430   
  430    431   
        let op = crate::operation::document_type::DocumentType::new();
  431    432   
        let config = op.config().expect("the operation has config");
  432    433   
        let de = config
  433    434   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  434    435   
            .expect("the config must have a deserializer");
  435    436   
  436    437   
        let parsed = de.deserialize_streaming(&mut http_response);
  437    438   
        let parsed = parsed.unwrap_or_else(|| {
  438    439   
            let http_response =
  439    440   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  440    441   
            de.deserialize_nonstreaming(&http_response)
  441    442   
        });
  442    443   
        let parsed = parsed
  443    444   
            .expect("should be successful response")
  444    445   
            .downcast::<crate::operation::document_type::DocumentTypeOutput>()
  445    446   
            .unwrap();
  446    447   
        ::pretty_assertions::assert_eq!(parsed.string_value, expected_output.string_value, "Unexpected value for `string_value`");
  447    448   
        ::pretty_assertions::assert_eq!(
  448    449   
            parsed.document_value,
  449    450   
            expected_output.document_value,
  450    451   
            "Unexpected value for `document_value`"
  451    452   
        );
  452    453   
    }
  453    454   
    /// Document types can be JSON scalars too.
  454    455   
    /// Test ID: DocumentOutputString
  455    456   
    #[::tokio::test]
  456         -
    #[allow(unused_mut)]
         457  +
    #[::tracing_test::traced_test]
  457    458   
    async fn document_output_string_response() {
  458    459   
        let expected_output = crate::operation::document_type::DocumentTypeOutput::builder()
  459    460   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  460    461   
            .set_document_value(::std::option::Option::Some({
  461    462   
                let json_bytes = br#""hello""#;
  462    463   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  463    464   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  464    465   
            }))
  465    466   
            .build();
  466    467   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  467    468   
            ::http::response::Builder::new()
  468    469   
                .header("Content-Type", "application/json")
  469    470   
                .status(200)
  470    471   
                .body(::aws_smithy_types::body::SdkBody::from(
  471    472   
                    "{\n    \"stringValue\": \"string\",\n    \"documentValue\": \"hello\"\n}",
  472    473   
                ))
  473    474   
                .unwrap(),
  474    475   
        )
  475    476   
        .unwrap();
  476    477   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  477    478   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  478    479   
  479    480   
        let op = crate::operation::document_type::DocumentType::new();
  480    481   
        let config = op.config().expect("the operation has config");
  481    482   
        let de = config
  482    483   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  483    484   
            .expect("the config must have a deserializer");
  484    485   
  485    486   
        let parsed = de.deserialize_streaming(&mut http_response);
  486    487   
        let parsed = parsed.unwrap_or_else(|| {
  487    488   
            let http_response =
  488    489   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  489    490   
            de.deserialize_nonstreaming(&http_response)
  490    491   
        });
  491    492   
        let parsed = parsed
  492    493   
            .expect("should be successful response")
  493    494   
            .downcast::<crate::operation::document_type::DocumentTypeOutput>()
  494    495   
            .unwrap();
  495    496   
        ::pretty_assertions::assert_eq!(parsed.string_value, expected_output.string_value, "Unexpected value for `string_value`");
  496    497   
        ::pretty_assertions::assert_eq!(
  497    498   
            parsed.document_value,
  498    499   
            expected_output.document_value,
  499    500   
            "Unexpected value for `document_value`"
  500    501   
        );
  501    502   
    }
  502    503   
    /// Document types can be JSON scalars too.
  503    504   
    /// Test ID: DocumentOutputNumber
  504    505   
    #[::tokio::test]
  505         -
    #[allow(unused_mut)]
         506  +
    #[::tracing_test::traced_test]
  506    507   
    async fn document_output_number_response() {
  507    508   
        let expected_output = crate::operation::document_type::DocumentTypeOutput::builder()
  508    509   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  509    510   
            .set_document_value(::std::option::Option::Some({
  510    511   
                let json_bytes = br#"10"#;
  511    512   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  512    513   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  513    514   
            }))
  514    515   
            .build();
  515    516   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  516    517   
            ::http::response::Builder::new()
  517    518   
                .header("Content-Type", "application/json")
  518    519   
                .status(200)
  519    520   
                .body(::aws_smithy_types::body::SdkBody::from(
  520    521   
                    "{\n    \"stringValue\": \"string\",\n    \"documentValue\": 10\n}",
  521    522   
                ))
  522    523   
                .unwrap(),
  523    524   
        )
  524    525   
        .unwrap();
  525    526   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  526    527   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  527    528   
  528    529   
        let op = crate::operation::document_type::DocumentType::new();
  529    530   
        let config = op.config().expect("the operation has config");
  530    531   
        let de = config
  531    532   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  532    533   
            .expect("the config must have a deserializer");
  533    534   
  534    535   
        let parsed = de.deserialize_streaming(&mut http_response);
  535    536   
        let parsed = parsed.unwrap_or_else(|| {
  536    537   
            let http_response =
  537    538   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  538    539   
            de.deserialize_nonstreaming(&http_response)
  539    540   
        });
  540    541   
        let parsed = parsed
  541    542   
            .expect("should be successful response")
  542    543   
            .downcast::<crate::operation::document_type::DocumentTypeOutput>()
  543    544   
            .unwrap();
  544    545   
        ::pretty_assertions::assert_eq!(parsed.string_value, expected_output.string_value, "Unexpected value for `string_value`");
  545    546   
        ::pretty_assertions::assert_eq!(
  546    547   
            parsed.document_value,
  547    548   
            expected_output.document_value,
  548    549   
            "Unexpected value for `document_value`"
  549    550   
        );
  550    551   
    }
  551    552   
    /// Document types can be JSON scalars too.
  552    553   
    /// Test ID: DocumentOutputBoolean
  553    554   
    #[::tokio::test]
  554         -
    #[allow(unused_mut)]
         555  +
    #[::tracing_test::traced_test]
  555    556   
    async fn document_output_boolean_response() {
  556    557   
        let expected_output = crate::operation::document_type::DocumentTypeOutput::builder()
  557    558   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  558    559   
            .set_document_value(::std::option::Option::Some({
  559    560   
                let json_bytes = br#"false"#;
  560    561   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  561    562   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  562    563   
            }))
  563    564   
            .build();
  564    565   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  565    566   
            ::http::response::Builder::new()
  566    567   
                .header("Content-Type", "application/json")
  567    568   
                .status(200)
  568    569   
                .body(::aws_smithy_types::body::SdkBody::from(
  569    570   
                    "{\n    \"stringValue\": \"string\",\n    \"documentValue\": false\n}",
  570    571   
                ))
  571    572   
                .unwrap(),
  572    573   
        )
  573    574   
        .unwrap();
  574    575   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  575    576   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  576    577   
  577    578   
        let op = crate::operation::document_type::DocumentType::new();
  578    579   
        let config = op.config().expect("the operation has config");
  579    580   
        let de = config
  580    581   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  581    582   
            .expect("the config must have a deserializer");
  582    583   
  583    584   
        let parsed = de.deserialize_streaming(&mut http_response);
  584    585   
        let parsed = parsed.unwrap_or_else(|| {
  585    586   
            let http_response =
  586    587   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  587    588   
            de.deserialize_nonstreaming(&http_response)
  588    589   
        });
  589    590   
        let parsed = parsed
  590    591   
            .expect("should be successful response")
  591    592   
            .downcast::<crate::operation::document_type::DocumentTypeOutput>()
  592    593   
            .unwrap();
  593    594   
        ::pretty_assertions::assert_eq!(parsed.string_value, expected_output.string_value, "Unexpected value for `string_value`");
  594    595   
        ::pretty_assertions::assert_eq!(
  595    596   
            parsed.document_value,
  596    597   
            expected_output.document_value,
  597    598   
            "Unexpected value for `document_value`"
  598    599   
        );
  599    600   
    }
  600    601   
    /// Document types can be JSON arrays.
  601    602   
    /// Test ID: DocumentOutputArray
  602    603   
    #[::tokio::test]
  603         -
    #[allow(unused_mut)]
         604  +
    #[::tracing_test::traced_test]
  604    605   
    async fn document_output_array_response() {
  605    606   
        let expected_output = crate::operation::document_type::DocumentTypeOutput::builder()
  606    607   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  607    608   
            .set_document_value(::std::option::Option::Some({
  608    609   
                let json_bytes = br#"[
  609    610   
                        true,
  610    611   
                        false
  611    612   
                    ]"#;
  612    613   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  613    614   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")

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

@@ -199,199 +314,315 @@
  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 document_type_as_map_value_request_test {
         229  +
mod document_type_as_map_value_test {
         230  +
  230    231   
    /// Serializes a map that uses documents as the value.
  231    232   
    /// Test ID: DocumentTypeAsMapValueInput
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn document_type_as_map_value_input_request() {
  235    236   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  236    237   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  237    238   
  238    239   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  239    240   
        let result = client
  240    241   
            .document_type_as_map_value()
  241    242   
            .set_doc_valued_map(::std::option::Option::Some({
  242    243   
                let mut ret = ::std::collections::HashMap::new();
  243    244   
                ret.insert("foo".to_owned(), {
  244    245   
                    let json_bytes = br#"{
  245    246   
                                "f": 1,
  246    247   
                                "o": 2
  247    248   
                            }"#;
  248    249   
                    let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  249    250   
                    ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  250    251   
                });
  251    252   
                ret.insert("bar".to_owned(), {
  252    253   
                    let json_bytes = br#"[
  253    254   
                                "b",
  254    255   
                                "a",
  255    256   
                                "r"
  256    257   
                            ]"#;
  257    258   
                    let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  258    259   
                    ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  259    260   
                });
  260    261   
                ret.insert("baz".to_owned(), {
  261    262   
                    let json_bytes = br#""BAZ""#;
  262    263   
                    let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  263    264   
                    ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  264    265   
                });
  265    266   
                ret
  266    267   
            }))
  267    268   
            .send()
  268    269   
            .await;
  269    270   
        let _ = dbg!(result);
  270    271   
        let http_request = request_receiver.expect_request();
  271    272   
        let expected_headers = [("Content-Type", "application/json")];
  272    273   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  273    274   
        let body = http_request.body().bytes().expect("body should be strict");
  274    275   
        ::aws_smithy_protocol_test::assert_ok(
  275    276   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"docValuedMap\": {\n        \"foo\": { \"f\": 1, \"o\": 2 },\n        \"bar\": [ \"b\", \"a\", \"r\" ],\n        \"baz\": \"BAZ\"\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  276    277   
        );
  277    278   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  278    279   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  279    280   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentTypeAsMapValue", "path was incorrect");
  280    281   
    }
  281    282   
    /// Serializes a map that uses documents as the value.
  282    283   
    /// Test ID: DocumentTypeAsMapValueOutput
  283    284   
    #[::tokio::test]
  284         -
    #[allow(unused_mut)]
         285  +
    #[::tracing_test::traced_test]
  285    286   
    async fn document_type_as_map_value_output_response() {
  286    287   
        let expected_output = crate::operation::document_type_as_map_value::DocumentTypeAsMapValueOutput::builder()
  287    288   
            .set_doc_valued_map(::std::option::Option::Some({
  288    289   
                let mut ret = ::std::collections::HashMap::new();
  289    290   
                ret.insert("foo".to_owned(), {
  290    291   
                    let json_bytes = br#"{
  291    292   
                                "f": 1,
  292    293   
                                "o": 2
  293    294   
                            }"#;
  294    295   
                    let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();

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

@@ -199,199 +376,377 @@
  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 document_type_as_payload_request_test {
         229  +
mod document_type_as_payload_test {
         230  +
  230    231   
    /// Serializes a document as the target of the httpPayload trait.
  231    232   
    /// Test ID: DocumentTypeAsPayloadInput
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn document_type_as_payload_input_request() {
  235    236   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  236    237   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  237    238   
  238    239   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  239    240   
        let result = client
  240    241   
            .document_type_as_payload()
  241    242   
            .set_document_value(::std::option::Option::Some({
  242    243   
                let json_bytes = br#"{
  243    244   
                        "foo": "bar"
  244    245   
                    }"#;
  245    246   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  246    247   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  247    248   
            }))
  248    249   
            .send()
  249    250   
            .await;
  250    251   
        let _ = dbg!(result);
  251    252   
        let http_request = request_receiver.expect_request();
  252    253   
        let expected_headers = [("Content-Type", "application/json")];
  253    254   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  254    255   
        let body = http_request.body().bytes().expect("body should be strict");
  255    256   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  256    257   
            body,
  257    258   
            "{\n    \"foo\": \"bar\"\n}",
  258    259   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  259    260   
        ));
  260    261   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  261    262   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  262    263   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentTypeAsPayload", "path was incorrect");
  263    264   
    }
  264    265   
    /// Serializes a document as the target of the httpPayload trait using a string.
  265    266   
    /// Test ID: DocumentTypeAsPayloadInputString
  266    267   
    #[::tokio::test]
  267         -
    #[allow(unused_mut)]
         268  +
    #[::tracing_test::traced_test]
  268    269   
    async fn document_type_as_payload_input_string_request() {
  269    270   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  270    271   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  271    272   
  272    273   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  273    274   
        let result = client
  274    275   
            .document_type_as_payload()
  275    276   
            .set_document_value(::std::option::Option::Some({
  276    277   
                let json_bytes = br#""hello""#;
  277    278   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  278    279   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  279    280   
            }))
  280    281   
            .send()
  281    282   
            .await;
  282    283   
        let _ = dbg!(result);
  283    284   
        let http_request = request_receiver.expect_request();
  284    285   
        let expected_headers = [("Content-Type", "application/json")];
  285    286   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  286    287   
        let body = http_request.body().bytes().expect("body should be strict");
  287    288   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  288    289   
            body,
  289    290   
            "\"hello\"",
  290    291   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  291    292   
        ));
  292    293   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  293    294   
        ::pretty_assertions::assert_eq!(http_request.method(), "PUT", "method was incorrect");
  294    295   
        ::pretty_assertions::assert_eq!(uri.path(), "/DocumentTypeAsPayload", "path was incorrect");
  295    296   
    }
  296    297   
    /// Serializes a document as the target of the httpPayload trait.
  297    298   
    /// Test ID: DocumentTypeAsPayloadOutput
  298    299   
    #[::tokio::test]
  299         -
    #[allow(unused_mut)]
         300  +
    #[::tracing_test::traced_test]
  300    301   
    async fn document_type_as_payload_output_response() {
  301    302   
        let expected_output = crate::operation::document_type_as_payload::DocumentTypeAsPayloadOutput::builder()
  302    303   
            .set_document_value(::std::option::Option::Some({
  303    304   
                let json_bytes = br#"{
  304    305   
                        "foo": "bar"
  305    306   
                    }"#;
  306    307   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  307    308   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  308    309   
            }))
  309    310   
            .build();
  310    311   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  311    312   
            ::http::response::Builder::new()
  312    313   
                .header("Content-Type", "application/json")
  313    314   
                .status(200)
  314    315   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"foo\": \"bar\"\n}"))
  315    316   
                .unwrap(),
  316    317   
        )
  317    318   
        .unwrap();
  318    319   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  319    320   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  320    321   
  321    322   
        let op = crate::operation::document_type_as_payload::DocumentTypeAsPayload::new();
  322    323   
        let config = op.config().expect("the operation has config");
  323    324   
        let de = config
  324    325   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  325    326   
            .expect("the config must have a deserializer");
  326    327   
  327    328   
        let parsed = de.deserialize_streaming(&mut http_response);
  328    329   
        let parsed = parsed.unwrap_or_else(|| {
  329    330   
            let http_response =
  330    331   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  331    332   
            de.deserialize_nonstreaming(&http_response)
  332    333   
        });
  333    334   
        let parsed = parsed
  334    335   
            .expect("should be successful response")
  335    336   
            .downcast::<crate::operation::document_type_as_payload::DocumentTypeAsPayloadOutput>()
  336    337   
            .unwrap();
  337    338   
        ::pretty_assertions::assert_eq!(
  338    339   
            parsed.document_value,
  339    340   
            expected_output.document_value,
  340    341   
            "Unexpected value for `document_value`"
  341    342   
        );
  342    343   
    }
  343    344   
    /// Serializes a document as a payload string.
  344    345   
    /// Test ID: DocumentTypeAsPayloadOutputString
  345    346   
    #[::tokio::test]
  346         -
    #[allow(unused_mut)]
         347  +
    #[::tracing_test::traced_test]
  347    348   
    async fn document_type_as_payload_output_string_response() {
  348    349   
        let expected_output = crate::operation::document_type_as_payload::DocumentTypeAsPayloadOutput::builder()
  349    350   
            .set_document_value(::std::option::Option::Some({
  350    351   
                let json_bytes = br#""hello""#;
  351    352   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  352    353   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  353    354   
            }))
  354    355   
            .build();
  355    356   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  356    357   
            ::http::response::Builder::new()

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

@@ -193,193 +315,316 @@
  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 empty_input_and_empty_output_request_test {
         223  +
mod empty_input_and_empty_output_test {
         224  +
  224    225   
    /// Clients should not serialize a JSON payload when no parameters
  225    226   
    /// are given that are sent in the body. A service will tolerate
  226    227   
    /// clients that omit a payload or that send a JSON object.
  227    228   
    /// Test ID: RestJsonEmptyInputAndEmptyOutput
  228    229   
    #[::tokio::test]
  229         -
    #[allow(unused_mut)]
         230  +
    #[::tracing_test::traced_test]
  230    231   
    async fn rest_json_empty_input_and_empty_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.empty_input_and_empty_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(), "/EmptyInputAndEmptyOutput", "path was incorrect");
  244    245   
    }
  245    246   
    /// As of January 2021, server implementations are expected to
  246    247   
    /// respond with a JSON object regardless of if the output
  247    248   
    /// parameters are empty.
  248    249   
    /// Test ID: RestJsonEmptyInputAndEmptyOutput
  249    250   
    #[::tokio::test]
  250         -
    #[allow(unused_mut)]
         251  +
    #[::tracing_test::traced_test]
  251    252   
    async fn rest_json_empty_input_and_empty_output_response() {
  252    253   
        let expected_output = crate::operation::empty_input_and_empty_output::EmptyInputAndEmptyOutputOutput::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("Content-Type", "application/json")
  256    257   
                .status(200)
  257    258   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  258    259   
                .unwrap(),
  259    260   
        )
  260    261   
        .unwrap();
  261    262   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  262    263   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  263    264   
  264    265   
        let op = crate::operation::empty_input_and_empty_output::EmptyInputAndEmptyOutput::new();
  265    266   
        let config = op.config().expect("the operation has config");
  266    267   
        let de = config
  267    268   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  268    269   
            .expect("the config must have a deserializer");
  269    270   
  270    271   
        let parsed = de.deserialize_streaming(&mut http_response);
  271    272   
        let parsed = parsed.unwrap_or_else(|| {
  272    273   
            let http_response =
  273    274   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  274    275   
            de.deserialize_nonstreaming(&http_response)
  275    276   
        });
  276    277   
        let parsed = parsed
  277    278   
            .expect("should be successful response")
  278    279   
            .downcast::<crate::operation::empty_input_and_empty_output::EmptyInputAndEmptyOutputOutput>()
  279    280   
            .unwrap();
  280    281   
    }
  281    282   
    /// This test ensures that clients can gracefully handle
  282    283   
    /// situations where a service omits a JSON payload entirely.
  283    284   
    /// Test ID: RestJsonEmptyInputAndEmptyOutputJsonObjectOutput
  284    285   
    #[::tokio::test]
  285         -
    #[allow(unused_mut)]
         286  +
    #[::tracing_test::traced_test]
  286    287   
    async fn rest_json_empty_input_and_empty_output_json_object_output_response() {
  287    288   
        let expected_output = crate::operation::empty_input_and_empty_output::EmptyInputAndEmptyOutputOutput::builder().build();
  288    289   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  289    290   
            ::http::response::Builder::new()
  290    291   
                .status(200)
  291    292   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  292    293   
                .unwrap(),
  293    294   
        )
  294    295   
        .unwrap();
  295    296   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;

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

@@ -198,198 +263,264 @@
  218    218   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  219    219   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  220    220   
        })?;
  221    221   
        cfg.interceptor_state()
  222    222   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  223    223   
        ::std::result::Result::Ok(())
  224    224   
    }
  225    225   
}
  226    226   
#[allow(unreachable_code, unused_variables)]
  227    227   
#[cfg(test)]
  228         -
mod endpoint_operation_request_test {
         228  +
mod endpoint_operation_test {
         229  +
  229    230   
    /// Operations can prepend to the given host if they define the
  230    231   
    /// endpoint trait.
  231    232   
    /// Test ID: RestJsonEndpointTrait
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn rest_json_endpoint_trait_request() {
  235    236   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  236    237   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  237    238   
  238    239   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  239    240   
        let result = client.endpoint_operation().send().await;
  240    241   
        let _ = dbg!(result);
  241    242   
        let http_request = request_receiver.expect_request();
  242    243   
        let body = http_request.body().bytes().expect("body should be strict");
  243    244   
        // No body

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

@@ -216,216 +282,283 @@
  236    236   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  237    237   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  238    238   
        })?;
  239    239   
        cfg.interceptor_state()
  240    240   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  241    241   
        ::std::result::Result::Ok(())
  242    242   
    }
  243    243   
}
  244    244   
#[allow(unreachable_code, unused_variables)]
  245    245   
#[cfg(test)]
  246         -
mod endpoint_with_host_label_operation_request_test {
         246  +
mod endpoint_with_host_label_operation_test {
         247  +
  247    248   
    /// Operations can prepend to the given host if they define the
  248    249   
    /// endpoint trait, and can use the host label trait to define
  249    250   
    /// further customization based on user input.
  250    251   
    /// Test ID: RestJsonEndpointTraitWithHostLabel
  251    252   
    #[::tokio::test]
  252         -
    #[allow(unused_mut)]
         253  +
    #[::tracing_test::traced_test]
  253    254   
    async fn rest_json_endpoint_trait_with_host_label_request() {
  254    255   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  255    256   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  256    257   
  257    258   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  258    259   
        let result = client
  259    260   
            .endpoint_with_host_label_operation()
  260    261   
            .set_label(::std::option::Option::Some("bar".to_owned()))
  261    262   
            .send()
  262    263   
            .await;