Client Test

Client Test

rev. ce76c569583a3fdee1e9d39e082a8d5efd7b13b7 (ignoring whitespace)

Files changed:

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

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

tmp-codegen-diff/codegen-client-test/json_rpc10/rust-client-codegen/src/operation/greeting_with_errors.rs

@@ -197,197 +708,709 @@
  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 greeting_with_errors_request_test {
         227  +
mod greeting_with_errors_test {
         228  +
  228    229   
    /// Parses simple JSON errors
  229    230   
    /// Test ID: AwsJson10InvalidGreetingError
  230    231   
    #[::tokio::test]
  231         -
    #[allow(unused_mut)]
         232  +
    #[::tracing_test::traced_test]
  232    233   
    async fn aws_json10_invalid_greeting_error_response() {
  233    234   
        let expected_output = crate::types::error::InvalidGreeting::builder()
  234    235   
            .set_message(::std::option::Option::Some("Hi".to_owned()))
  235    236   
            .build();
  236    237   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  237    238   
            ::http::response::Builder::new()
  238    239   
                .header("Content-Type", "application/x-amz-json-1.0")
  239    240   
                .status(400)
  240    241   
                .body(::aws_smithy_types::body::SdkBody::from(
  241    242   
                    "{\n    \"__type\": \"aws.protocoltests.json10#InvalidGreeting\",\n    \"Message\": \"Hi\"\n}",
  242    243   
                ))
  243    244   
                .unwrap(),
  244    245   
        )
  245    246   
        .unwrap();
  246    247   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  247    248   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  248    249   
  249    250   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  250    251   
        let config = op.config().expect("the operation has config");
  251    252   
        let de = config
  252    253   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  253    254   
            .expect("the config must have a deserializer");
  254    255   
  255    256   
        let parsed = de.deserialize_streaming(&mut http_response);
  256    257   
        let parsed = parsed.unwrap_or_else(|| {
  257    258   
            let http_response =
  258    259   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  259    260   
            de.deserialize_nonstreaming(&http_response)
  260    261   
        });
  261    262   
        let parsed = parsed.expect_err("should be error response");
  262    263   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  263    264   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  264    265   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::InvalidGreeting(parsed) = parsed {
  265    266   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  266    267   
        } else {
  267    268   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  268    269   
        }
  269    270   
    }
  270    271   
    /// Parses a complex error with no message member
  271    272   
    /// Test ID: AwsJson10ComplexError
  272    273   
    #[::tokio::test]
  273         -
    #[allow(unused_mut)]
         274  +
    #[::tracing_test::traced_test]
  274    275   
    async fn aws_json10_complex_error_response() {
  275    276   
        let expected_output = crate::types::error::ComplexError::builder()
  276    277   
            .set_top_level(::std::option::Option::Some("Top level".to_owned()))
  277    278   
            .set_nested(::std::option::Option::Some(
  278    279   
                crate::types::ComplexNestedErrorData::builder()
  279    280   
                    .set_foo(::std::option::Option::Some("bar".to_owned()))
  280    281   
                    .build(),
  281    282   
            ))
  282    283   
            .build();
  283    284   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  284    285   
        .header("Content-Type", "application/x-amz-json-1.0")
  285    286   
        .status(400)
  286    287   
                    .body(::aws_smithy_types::body::SdkBody::from("{\n    \"__type\": \"aws.protocoltests.json10#ComplexError\",\n    \"TopLevel\": \"Top level\",\n    \"Nested\": {\n        \"Foo\": \"bar\"\n    }\n}"))
  287    288   
                    .unwrap()
  288    289   
                    ).unwrap();
  289    290   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  290    291   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  291    292   
  292    293   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  293    294   
        let config = op.config().expect("the operation has config");
  294    295   
        let de = config
  295    296   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  296    297   
            .expect("the config must have a deserializer");
  297    298   
  298    299   
        let parsed = de.deserialize_streaming(&mut http_response);
  299    300   
        let parsed = parsed.unwrap_or_else(|| {
  300    301   
            let http_response =
  301    302   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  302    303   
            de.deserialize_nonstreaming(&http_response)
  303    304   
        });
  304    305   
        let parsed = parsed.expect_err("should be error response");
  305    306   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  306    307   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  307    308   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::ComplexError(parsed) = parsed {
  308    309   
            ::pretty_assertions::assert_eq!(parsed.top_level, expected_output.top_level, "Unexpected value for `top_level`");
  309    310   
            ::pretty_assertions::assert_eq!(parsed.nested, expected_output.nested, "Unexpected value for `nested`");
  310    311   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  311    312   
        } else {
  312    313   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  313    314   
        }
  314    315   
    }
  315    316   
    /// Parses a complex error with an empty body
  316    317   
    /// Test ID: AwsJson10EmptyComplexError
  317    318   
    #[::tokio::test]
  318         -
    #[allow(unused_mut)]
         319  +
    #[::tracing_test::traced_test]
  319    320   
    async fn aws_json10_empty_complex_error_response() {
  320    321   
        let expected_output = crate::types::error::ComplexError::builder().build();
  321    322   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  322    323   
            ::http::response::Builder::new()
  323    324   
                .header("Content-Type", "application/x-amz-json-1.0")
  324    325   
                .status(400)
  325    326   
                .body(::aws_smithy_types::body::SdkBody::from(
  326    327   
                    "{\n    \"__type\": \"aws.protocoltests.json10#ComplexError\"\n}",
  327    328   
                ))
  328    329   
                .unwrap(),
  329    330   
        )
  330    331   
        .unwrap();
  331    332   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  332    333   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  333    334   
  334    335   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  335    336   
        let config = op.config().expect("the operation has config");
  336    337   
        let de = config
  337    338   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  338    339   
            .expect("the config must have a deserializer");
  339    340   
  340    341   
        let parsed = de.deserialize_streaming(&mut http_response);
  341    342   
        let parsed = parsed.unwrap_or_else(|| {
  342    343   
            let http_response =
  343    344   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  344    345   
            de.deserialize_nonstreaming(&http_response)
  345    346   
        });
  346    347   
        let parsed = parsed.expect_err("should be error response");
  347    348   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  348    349   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  349    350   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::ComplexError(parsed) = parsed {
  350    351   
            ::pretty_assertions::assert_eq!(parsed.top_level, expected_output.top_level, "Unexpected value for `top_level`");
  351    352   
            ::pretty_assertions::assert_eq!(parsed.nested, expected_output.nested, "Unexpected value for `nested`");
  352    353   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  353    354   
        } else {
  354    355   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  355    356   
        }
  356    357   
    }
  357    358   
    /// Serializes the X-Amzn-ErrorType header. For an example service, see Amazon EKS.
  358    359   
    /// Test ID: AwsJson10FooErrorUsingXAmznErrorType
  359    360   
    #[::tokio::test]
  360         -
    #[allow(unused_mut)]
         361  +
    #[::tracing_test::traced_test]
  361    362   
    async fn aws_json10_foo_error_using_x_amzn_error_type_response() {
  362    363   
        let expected_output = crate::types::error::FooError::builder().build();
  363    364   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  364    365   
            ::http::response::Builder::new()
  365    366   
                .header("X-Amzn-Errortype", "FooError")
  366    367   
                .status(500)
  367    368   
                .body(::aws_smithy_types::body::SdkBody::from(vec![]))
  368    369   
                .unwrap(),
  369    370   
        )
  370    371   
        .unwrap();
  371    372   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  372    373   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  373    374   
  374    375   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  375    376   
        let config = op.config().expect("the operation has config");
  376    377   
        let de = config
  377    378   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  378    379   
            .expect("the config must have a deserializer");
  379    380   
  380    381   
        let parsed = de.deserialize_streaming(&mut http_response);
  381    382   
        let parsed = parsed.unwrap_or_else(|| {
  382    383   
            let http_response =
  383    384   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  384    385   
            de.deserialize_nonstreaming(&http_response)
  385    386   
        });
  386    387   
        let parsed = parsed.expect_err("should be error response");
  387    388   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  388    389   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  389    390   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  390    391   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  391    392   
        } else {
  392    393   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  393    394   
        }
  394    395   
    }
  395    396   
    /// Some X-Amzn-Errortype headers contain URLs. Clients need to split the URL on ':' and take only the first half of the string. For example, 'ValidationException:http://internal.amazon.com/coral/com.amazon.coral.validate/'
  396    397   
    /// is to be interpreted as 'ValidationException'.
  397    398   
    ///
  398    399   
    /// For an example service see Amazon Polly.
  399    400   
    /// Test ID: AwsJson10FooErrorUsingXAmznErrorTypeWithUri
  400    401   
    #[::tokio::test]
  401         -
    #[allow(unused_mut)]
         402  +
    #[::tracing_test::traced_test]
  402    403   
    async fn aws_json10_foo_error_using_x_amzn_error_type_with_uri_response() {
  403    404   
        let expected_output = crate::types::error::FooError::builder().build();
  404    405   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  405    406   
            ::http::response::Builder::new()
  406    407   
                .header("X-Amzn-Errortype", "FooError:http://internal.amazon.com/coral/com.amazon.coral.validate/")
  407    408   
                .status(500)
  408    409   
                .body(::aws_smithy_types::body::SdkBody::from(vec![]))
  409    410   
                .unwrap(),
  410    411   
        )
  411    412   
        .unwrap();
  412    413   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  413    414   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  414    415   
  415    416   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  416    417   
        let config = op.config().expect("the operation has config");
  417    418   
        let de = config
  418    419   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  419    420   
            .expect("the config must have a deserializer");
  420    421   
  421    422   
        let parsed = de.deserialize_streaming(&mut http_response);
  422    423   
        let parsed = parsed.unwrap_or_else(|| {
  423    424   
            let http_response =
  424    425   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  425    426   
            de.deserialize_nonstreaming(&http_response)
  426    427   
        });
  427    428   
        let parsed = parsed.expect_err("should be error response");
  428    429   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  429    430   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  430    431   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  431    432   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  432    433   
        } else {
  433    434   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  434    435   
        }
  435    436   
    }
  436    437   
    /// X-Amzn-Errortype might contain a URL and a namespace. Client should extract only the shape name. This is a pathalogical case that might not actually happen in any deployed AWS service.
  437    438   
    /// Test ID: AwsJson10FooErrorUsingXAmznErrorTypeWithUriAndNamespace
  438    439   
    #[::tokio::test]
  439         -
    #[allow(unused_mut)]
         440  +
    #[::tracing_test::traced_test]
  440    441   
    async fn aws_json10_foo_error_using_x_amzn_error_type_with_uri_and_namespace_response() {
  441    442   
        let expected_output = crate::types::error::FooError::builder().build();
  442    443   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  443    444   
            ::http::response::Builder::new()
  444    445   
                .header(
  445    446   
                    "X-Amzn-Errortype",
  446    447   
                    "aws.protocoltests.json10#FooError:http://internal.amazon.com/coral/com.amazon.coral.validate/",
  447    448   
                )
  448    449   
                .status(500)
  449    450   
                .body(::aws_smithy_types::body::SdkBody::from(vec![]))
  450    451   
                .unwrap(),
  451    452   
        )
  452    453   
        .unwrap();
  453    454   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  454    455   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  455    456   
  456    457   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  457    458   
        let config = op.config().expect("the operation has config");
  458    459   
        let de = config
  459    460   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  460    461   
            .expect("the config must have a deserializer");
  461    462   
  462    463   
        let parsed = de.deserialize_streaming(&mut http_response);
  463    464   
        let parsed = parsed.unwrap_or_else(|| {
  464    465   
            let http_response =
  465    466   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  466    467   
            de.deserialize_nonstreaming(&http_response)
  467    468   
        });
  468    469   
        let parsed = parsed.expect_err("should be error response");
  469    470   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  470    471   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  471    472   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  472    473   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  473    474   
        } else {
  474    475   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  475    476   
        }
  476    477   
    }
  477    478   
    /// This example uses the 'code' property in the output rather than X-Amzn-Errortype. Some services do this though it's preferable to send the X-Amzn-Errortype. Client implementations must first check for the X-Amzn-Errortype and then check for a top-level 'code' property.
  478    479   
    ///
  479    480   
    /// For example service see Amazon S3 Glacier.
  480    481   
    /// Test ID: AwsJson10FooErrorUsingCode
  481    482   
    #[::tokio::test]
  482         -
    #[allow(unused_mut)]
         483  +
    #[::tracing_test::traced_test]
  483    484   
    async fn aws_json10_foo_error_using_code_response() {
  484    485   
        let expected_output = crate::types::error::FooError::builder().build();
  485    486   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  486    487   
            ::http::response::Builder::new()
  487    488   
                .header("Content-Type", "application/x-amz-json-1.0")
  488    489   
                .status(500)
  489    490   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"code\": \"FooError\"\n}"))
  490    491   
                .unwrap(),
  491    492   
        )
  492    493   
        .unwrap();
  493    494   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  494    495   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  495    496   
  496    497   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  497    498   
        let config = op.config().expect("the operation has config");
  498    499   
        let de = config
  499    500   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  500    501   
            .expect("the config must have a deserializer");
  501    502   
  502    503   
        let parsed = de.deserialize_streaming(&mut http_response);
  503    504   
        let parsed = parsed.unwrap_or_else(|| {
  504    505   
            let http_response =
  505    506   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  506    507   
            de.deserialize_nonstreaming(&http_response)
  507    508   
        });
  508    509   
        let parsed = parsed.expect_err("should be error response");
  509    510   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  510    511   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  511    512   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  512    513   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  513    514   
        } else {
  514    515   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  515    516   
        }
  516    517   
    }
  517    518   
    /// Some services serialize errors using code, and it might contain a namespace. Clients should just take the last part of the string after '#'.
  518    519   
    /// Test ID: AwsJson10FooErrorUsingCodeAndNamespace
  519    520   
    #[::tokio::test]
  520         -
    #[allow(unused_mut)]
         521  +
    #[::tracing_test::traced_test]
  521    522   
    async fn aws_json10_foo_error_using_code_and_namespace_response() {
  522    523   
        let expected_output = crate::types::error::FooError::builder().build();
  523    524   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  524    525   
            ::http::response::Builder::new()
  525    526   
                .header("Content-Type", "application/x-amz-json-1.0")
  526    527   
                .status(500)
  527    528   
                .body(::aws_smithy_types::body::SdkBody::from(
  528    529   
                    "{\n    \"code\": \"aws.protocoltests.json10#FooError\"\n}",
  529    530   
                ))
  530    531   
                .unwrap(),
  531    532   
        )
  532    533   
        .unwrap();
  533    534   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  534    535   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  535    536   
  536    537   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  537    538   
        let config = op.config().expect("the operation has config");
  538    539   
        let de = config
  539    540   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  540    541   
            .expect("the config must have a deserializer");
  541    542   
  542    543   
        let parsed = de.deserialize_streaming(&mut http_response);
  543    544   
        let parsed = parsed.unwrap_or_else(|| {
  544    545   
            let http_response =
  545    546   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  546    547   
            de.deserialize_nonstreaming(&http_response)
  547    548   
        });
  548    549   
        let parsed = parsed.expect_err("should be error response");
  549    550   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  550    551   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  551    552   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  552    553   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  553    554   
        } else {
  554    555   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  555    556   
        }
  556    557   
    }
  557    558   
    /// Some services serialize errors using code, and it might contain a namespace. It also might contain a URI. Clients should just take the last part of the string after '#' and before ":". This is a pathalogical case that might not occur in any deployed AWS service.
  558    559   
    /// Test ID: AwsJson10FooErrorUsingCodeUriAndNamespace
  559    560   
    #[::tokio::test]
  560         -
    #[allow(unused_mut)]
         561  +
    #[::tracing_test::traced_test]
  561    562   
    async fn aws_json10_foo_error_using_code_uri_and_namespace_response() {
  562    563   
        let expected_output = crate::types::error::FooError::builder().build();
  563    564   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  564    565   
            ::http::response::Builder::new()
  565    566   
                .header("Content-Type", "application/x-amz-json-1.0")
  566    567   
                .status(500)
  567    568   
                .body(::aws_smithy_types::body::SdkBody::from(
  568    569   
                    "{\n    \"code\": \"aws.protocoltests.json10#FooError:http://internal.amazon.com/coral/com.amazon.coral.validate/\"\n}",
  569    570   
                ))
  570    571   
                .unwrap(),
  571    572   
        )
  572    573   
        .unwrap();
  573    574   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  574    575   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  575    576   
  576    577   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  577    578   
        let config = op.config().expect("the operation has config");
  578    579   
        let de = config
  579    580   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  580    581   
            .expect("the config must have a deserializer");
  581    582   
  582    583   
        let parsed = de.deserialize_streaming(&mut http_response);
  583    584   
        let parsed = parsed.unwrap_or_else(|| {
  584    585   
            let http_response =
  585    586   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  586    587   
            de.deserialize_nonstreaming(&http_response)
  587    588   
        });
  588    589   
        let parsed = parsed.expect_err("should be error response");
  589    590   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  590    591   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  591    592   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  592    593   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  593    594   
        } else {
  594    595   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  595    596   
        }
  596    597   
    }
  597    598   
    /// Some services serialize errors using __type.
  598    599   
    /// Test ID: AwsJson10FooErrorWithDunderType
  599    600   
    #[::tokio::test]
  600         -
    #[allow(unused_mut)]
         601  +
    #[::tracing_test::traced_test]
  601    602   
    async fn aws_json10_foo_error_with_dunder_type_response() {
  602    603   
        let expected_output = crate::types::error::FooError::builder().build();
  603    604   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  604    605   
            ::http::response::Builder::new()
  605    606   
                .header("Content-Type", "application/x-amz-json-1.0")
  606    607   
                .status(500)
  607    608   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"__type\": \"FooError\"\n}"))
  608    609   
                .unwrap(),
  609    610   
        )
  610    611   
        .unwrap();
  611    612   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  612    613   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  613    614   
  614    615   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  615    616   
        let config = op.config().expect("the operation has config");
  616    617   
        let de = config
  617    618   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  618    619   
            .expect("the config must have a deserializer");
  619    620   
  620    621   
        let parsed = de.deserialize_streaming(&mut http_response);
  621    622   
        let parsed = parsed.unwrap_or_else(|| {
  622    623   
            let http_response =
  623    624   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  624    625   
            de.deserialize_nonstreaming(&http_response)
  625    626   
        });
  626    627   
        let parsed = parsed.expect_err("should be error response");
  627    628   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  628    629   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  629    630   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  630    631   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  631    632   
        } else {
  632    633   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  633    634   
        }
  634    635   
    }
  635    636   
    /// Some services serialize errors using __type, and it might contain a namespace. Clients should just take the last part of the string after '#'.
  636    637   
    /// Test ID: AwsJson10FooErrorWithDunderTypeAndNamespace
  637    638   
    #[::tokio::test]
  638         -
    #[allow(unused_mut)]
         639  +
    #[::tracing_test::traced_test]
  639    640   
    async fn aws_json10_foo_error_with_dunder_type_and_namespace_response() {
  640    641   
        let expected_output = crate::types::error::FooError::builder().build();
  641    642   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  642    643   
            ::http::response::Builder::new()
  643    644   
                .header("Content-Type", "application/x-amz-json-1.0")
  644    645   
                .status(500)
  645    646   
                .body(::aws_smithy_types::body::SdkBody::from(
  646    647   
                    "{\n    \"__type\": \"aws.protocoltests.json10#FooError\"\n}",
  647    648   
                ))
  648    649   
                .unwrap(),
  649    650   
        )
  650    651   
        .unwrap();
  651    652   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  652    653   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  653    654   
  654    655   
        let op = crate::operation::greeting_with_errors::GreetingWithErrors::new();
  655    656   
        let config = op.config().expect("the operation has config");
  656    657   
        let de = config
  657    658   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  658    659   
            .expect("the config must have a deserializer");
  659    660   
  660    661   
        let parsed = de.deserialize_streaming(&mut http_response);
  661    662   
        let parsed = parsed.unwrap_or_else(|| {
  662    663   
            let http_response =
  663    664   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  664    665   
            de.deserialize_nonstreaming(&http_response)
  665    666   
        });
  666    667   
        let parsed = parsed.expect_err("should be error response");
  667    668   
        let parsed: &crate::operation::greeting_with_errors::GreetingWithErrorsError =
  668    669   
            parsed.as_operation_error().expect("operation error").downcast_ref().unwrap();
  669    670   
        if let crate::operation::greeting_with_errors::GreetingWithErrorsError::FooError(parsed) = parsed {
  670    671   
            ::pretty_assertions::assert_eq!(parsed.message, expected_output.message, "Unexpected value for `message`");
  671    672   
        } else {
  672    673   
            panic!("wrong variant: Got: {:?}. Expected: {:?}", parsed, expected_output);
  673    674   
        }
  674    675   
    }
  675    676   
    /// Some services serialize errors using __type, and it might contain a namespace. It also might contain a URI. Clients should just take the last part of the string after '#' and before ":". This is a pathalogical case that might not occur in any deployed AWS service.
  676    677   
    /// Test ID: AwsJson10FooErrorWithDunderTypeUriAndNamespace
  677    678   
    #[::tokio::test]
  678         -
    #[allow(unused_mut)]
         679  +
    #[::tracing_test::traced_test]
  679    680   
    async fn aws_json10_foo_error_with_dunder_type_uri_and_namespace_response() {
  680    681   
        let expected_output = crate::types::error::FooError::builder().build();
  681    682   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  682    683   
            ::http::response::Builder::new()
  683    684   
                .header("Content-Type", "application/x-amz-json-1.0")
  684    685   
                .status(500)
  685    686   
                .body(::aws_smithy_types::body::SdkBody::from(
  686    687   
                    "{\n    \"__type\": \"aws.protocoltests.json10#FooError:http://internal.amazon.com/coral/com.amazon.coral.validate/\"\n}",
  687    688   
                ))
  688    689   
                .unwrap(),

tmp-codegen-diff/codegen-client-test/json_rpc10/rust-client-codegen/src/operation/host_with_path_operation.rs

@@ -195,195 +259,260 @@
  215    215   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  216    216   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  217    217   
        })?;
  218    218   
        cfg.interceptor_state()
  219    219   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  220    220   
        ::std::result::Result::Ok(())
  221    221   
    }
  222    222   
}
  223    223   
#[allow(unreachable_code, unused_variables)]
  224    224   
#[cfg(test)]
  225         -
mod host_with_path_operation_request_test {
         225  +
mod host_with_path_operation_test {
         226  +
  226    227   
    /// Custom endpoints supplied by users can have paths
  227    228   
    /// Test ID: AwsJson10HostWithPath
  228    229   
    #[::tokio::test]
  229         -
    #[allow(unused_mut)]
         230  +
    #[::tracing_test::traced_test]
  230    231   
    async fn aws_json10_host_with_path_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()
  233    234   
            .with_test_defaults()
  234    235   
            .endpoint_url("https://example.com/custom");
  235    236   
  236    237   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  237    238   
        let result = client.host_with_path_operation().send().await;
  238    239   
        let _ = dbg!(result);
  239    240   
        let http_request = request_receiver.expect_request();

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

@@ -190,190 +995,996 @@
  210    210   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  211    211   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  212    212   
        })?;
  213    213   
        cfg.interceptor_state()
  214    214   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  215    215   
        ::std::result::Result::Ok(())
  216    216   
    }
  217    217   
}
  218    218   
#[allow(unreachable_code, unused_variables)]
  219    219   
#[cfg(test)]
  220         -
mod json_unions_request_test {
         220  +
mod json_unions_test {
         221  +
  221    222   
    /// Serializes a string union value
  222    223   
    /// Test ID: AwsJson10SerializeStringUnionValue
  223    224   
    #[::tokio::test]
  224         -
    #[allow(unused_mut)]
         225  +
    #[::tracing_test::traced_test]
  225    226   
    async fn aws_json10_serialize_string_union_value_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   
            .json_unions()
  232    233   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StringValue("foo".to_owned())))
  233    234   
            .send()
  234    235   
            .await;
  235    236   
        let _ = dbg!(result);
  236    237   
        let http_request = request_receiver.expect_request();
  237    238   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  238    239   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  239    240   
        let body = http_request.body().bytes().expect("body should be strict");
  240    241   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  241    242   
            body,
  242    243   
            "{\n    \"contents\": {\n        \"stringValue\": \"foo\"\n    }\n}",
  243    244   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  244    245   
        ));
  245    246   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  246    247   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  247    248   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  248    249   
    }
  249    250   
    /// Serializes a boolean union value
  250    251   
    /// Test ID: AwsJson10SerializeBooleanUnionValue
  251    252   
    #[::tokio::test]
  252         -
    #[allow(unused_mut)]
         253  +
    #[::tracing_test::traced_test]
  253    254   
    async fn aws_json10_serialize_boolean_union_value_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   
            .json_unions()
  260    261   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BooleanValue(true)))
  261    262   
            .send()
  262    263   
            .await;
  263    264   
        let _ = dbg!(result);
  264    265   
        let http_request = request_receiver.expect_request();
  265    266   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  266    267   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  267    268   
        let body = http_request.body().bytes().expect("body should be strict");
  268    269   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  269    270   
            body,
  270    271   
            "{\n    \"contents\": {\n        \"booleanValue\": true\n    }\n}",
  271    272   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  272    273   
        ));
  273    274   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  274    275   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  275    276   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  276    277   
    }
  277    278   
    /// Serializes a number union value
  278    279   
    /// Test ID: AwsJson10SerializeNumberUnionValue
  279    280   
    #[::tokio::test]
  280         -
    #[allow(unused_mut)]
         281  +
    #[::tracing_test::traced_test]
  281    282   
    async fn aws_json10_serialize_number_union_value_request() {
  282    283   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  283    284   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  284    285   
  285    286   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  286    287   
        let result = client
  287    288   
            .json_unions()
  288    289   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::NumberValue(1)))
  289    290   
            .send()
  290    291   
            .await;
  291    292   
        let _ = dbg!(result);
  292    293   
        let http_request = request_receiver.expect_request();
  293    294   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  294    295   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  295    296   
        let body = http_request.body().bytes().expect("body should be strict");
  296    297   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  297    298   
            body,
  298    299   
            "{\n    \"contents\": {\n        \"numberValue\": 1\n    }\n}",
  299    300   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  300    301   
        ));
  301    302   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  302    303   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  303    304   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  304    305   
    }
  305    306   
    /// Serializes a blob union value
  306    307   
    /// Test ID: AwsJson10SerializeBlobUnionValue
  307    308   
    #[::tokio::test]
  308         -
    #[allow(unused_mut)]
         309  +
    #[::tracing_test::traced_test]
  309    310   
    async fn aws_json10_serialize_blob_union_value_request() {
  310    311   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  311    312   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  312    313   
  313    314   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  314    315   
        let result = client
  315    316   
            .json_unions()
  316    317   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BlobValue(
  317    318   
                ::aws_smithy_types::Blob::new("foo"),
  318    319   
            )))
  319    320   
            .send()
  320    321   
            .await;
  321    322   
        let _ = dbg!(result);
  322    323   
        let http_request = request_receiver.expect_request();
  323    324   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  324    325   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  325    326   
        let body = http_request.body().bytes().expect("body should be strict");
  326    327   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  327    328   
            body,
  328    329   
            "{\n    \"contents\": {\n        \"blobValue\": \"Zm9v\"\n    }\n}",
  329    330   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  330    331   
        ));
  331    332   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  332    333   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  333    334   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  334    335   
    }
  335    336   
    /// Serializes a timestamp union value
  336    337   
    /// Test ID: AwsJson10SerializeTimestampUnionValue
  337    338   
    #[::tokio::test]
  338         -
    #[allow(unused_mut)]
         339  +
    #[::tracing_test::traced_test]
  339    340   
    async fn aws_json10_serialize_timestamp_union_value_request() {
  340    341   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  341    342   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  342    343   
  343    344   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  344    345   
        let result = client
  345    346   
            .json_unions()
  346    347   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::TimestampValue(
  347    348   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  348    349   
            )))
  349    350   
            .send()
  350    351   
            .await;
  351    352   
        let _ = dbg!(result);
  352    353   
        let http_request = request_receiver.expect_request();
  353    354   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  354    355   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  355    356   
        let body = http_request.body().bytes().expect("body should be strict");
  356    357   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  357    358   
            body,
  358    359   
            "{\n    \"contents\": {\n        \"timestampValue\": 1398796238\n    }\n}",
  359    360   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  360    361   
        ));
  361    362   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  362    363   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  363    364   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  364    365   
    }
  365    366   
    /// Serializes an enum union value
  366    367   
    /// Test ID: AwsJson10SerializeEnumUnionValue
  367    368   
    #[::tokio::test]
  368         -
    #[allow(unused_mut)]
         369  +
    #[::tracing_test::traced_test]
  369    370   
    async fn aws_json10_serialize_enum_union_value_request() {
  370    371   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  371    372   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  372    373   
  373    374   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  374    375   
        let result = client
  375    376   
            .json_unions()
  376    377   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::EnumValue(
  377    378   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  378    379   
            )))
  379    380   
            .send()
  380    381   
            .await;
  381    382   
        let _ = dbg!(result);
  382    383   
        let http_request = request_receiver.expect_request();
  383    384   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  384    385   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  385    386   
        let body = http_request.body().bytes().expect("body should be strict");
  386    387   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  387    388   
            body,
  388    389   
            "{\n    \"contents\": {\n        \"enumValue\": \"Foo\"\n    }\n}",
  389    390   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  390    391   
        ));
  391    392   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  392    393   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  393    394   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  394    395   
    }
  395    396   
    /// Serializes an intEnum union value
  396    397   
    /// Test ID: AwsJson10SerializeIntEnumUnionValue
  397    398   
    #[::tokio::test]
  398         -
    #[allow(unused_mut)]
         399  +
    #[::tracing_test::traced_test]
  399    400   
    async fn aws_json10_serialize_int_enum_union_value_request() {
  400    401   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  401    402   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  402    403   
  403    404   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  404    405   
        let result = client
  405    406   
            .json_unions()
  406    407   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::IntEnumValue(1)))
  407    408   
            .send()
  408    409   
            .await;
  409    410   
        let _ = dbg!(result);
  410    411   
        let http_request = request_receiver.expect_request();
  411    412   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  412    413   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  413    414   
        let body = http_request.body().bytes().expect("body should be strict");
  414    415   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  415    416   
            body,
  416    417   
            "{\n    \"contents\": {\n        \"intEnumValue\": 1\n    }\n}",
  417    418   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  418    419   
        ));
  419    420   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  420    421   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  421    422   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  422    423   
    }
  423    424   
    /// Serializes a list union value
  424    425   
    /// Test ID: AwsJson10SerializeListUnionValue
  425    426   
    #[::tokio::test]
  426         -
    #[allow(unused_mut)]
         427  +
    #[::tracing_test::traced_test]
  427    428   
    async fn aws_json10_serialize_list_union_value_request() {
  428    429   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  429    430   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  430    431   
  431    432   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  432    433   
        let result = client
  433    434   
            .json_unions()
  434    435   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::ListValue(vec![
  435    436   
                "foo".to_owned(),
  436    437   
                "bar".to_owned(),
  437    438   
            ])))
  438    439   
            .send()
  439    440   
            .await;
  440    441   
        let _ = dbg!(result);
  441    442   
        let http_request = request_receiver.expect_request();
  442    443   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  443    444   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  444    445   
        let body = http_request.body().bytes().expect("body should be strict");
  445    446   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  446    447   
            body,
  447    448   
            "{\n    \"contents\": {\n        \"listValue\": [\"foo\", \"bar\"]\n    }\n}",
  448    449   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  449    450   
        ));
  450    451   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  451    452   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  452    453   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  453    454   
    }
  454    455   
    /// Serializes a map union value
  455    456   
    /// Test ID: AwsJson10SerializeMapUnionValue
  456    457   
    #[::tokio::test]
  457         -
    #[allow(unused_mut)]
         458  +
    #[::tracing_test::traced_test]
  458    459   
    async fn aws_json10_serialize_map_union_value_request() {
  459    460   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  460    461   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  461    462   
  462    463   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  463    464   
        let result = client
  464    465   
            .json_unions()
  465    466   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::MapValue({
  466    467   
                let mut ret = ::std::collections::HashMap::new();
  467    468   
                ret.insert("foo".to_owned(), "bar".to_owned());
  468    469   
                ret.insert("spam".to_owned(), "eggs".to_owned());
  469    470   
                ret
  470    471   
            })))
  471    472   
            .send()
  472    473   
            .await;
  473    474   
        let _ = dbg!(result);
  474    475   
        let http_request = request_receiver.expect_request();
  475    476   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  476    477   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  477    478   
        let body = http_request.body().bytes().expect("body should be strict");
  478    479   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  479    480   
            body,
  480    481   
            "{\n    \"contents\": {\n        \"mapValue\": {\n            \"foo\": \"bar\",\n            \"spam\": \"eggs\"\n        }\n    }\n}",
  481    482   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  482    483   
        ));
  483    484   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  484    485   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  485    486   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  486    487   
    }
  487    488   
    /// Serializes a structure union value
  488    489   
    /// Test ID: AwsJson10SerializeStructureUnionValue
  489    490   
    #[::tokio::test]
  490         -
    #[allow(unused_mut)]
         491  +
    #[::tracing_test::traced_test]
  491    492   
    async fn aws_json10_serialize_structure_union_value_request() {
  492    493   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  493    494   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  494    495   
  495    496   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  496    497   
        let result = client
  497    498   
            .json_unions()
  498    499   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StructureValue(
  499    500   
                crate::types::GreetingStruct::builder()
  500    501   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  501    502   
                    .build(),
  502    503   
            )))
  503    504   
            .send()
  504    505   
            .await;
  505    506   
        let _ = dbg!(result);
  506    507   
        let http_request = request_receiver.expect_request();
  507    508   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0"), ("X-Amz-Target", "JsonRpc10.JsonUnions")];
  508    509   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  509    510   
        let body = http_request.body().bytes().expect("body should be strict");
  510    511   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  511    512   
            body,
  512    513   
            "{\n    \"contents\": {\n        \"structureValue\": {\n            \"hi\": \"hello\"\n        }\n    }\n}",
  513    514   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  514    515   
        ));
  515    516   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  516    517   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  517    518   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  518    519   
    }
  519    520   
    /// Deserializes a string union value
  520    521   
    /// Test ID: AwsJson10DeserializeStringUnionValue
  521    522   
    #[::tokio::test]
  522         -
    #[allow(unused_mut)]
         523  +
    #[::tracing_test::traced_test]
  523    524   
    async fn aws_json10_deserialize_string_union_value_response() {
  524    525   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  525    526   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StringValue("foo".to_owned())))
  526    527   
            .build();
  527    528   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  528    529   
            ::http::response::Builder::new()
  529    530   
                .header("Content-Type", "application/x-amz-json-1.0")
  530    531   
                .status(200)
  531    532   
                .body(::aws_smithy_types::body::SdkBody::from(
  532    533   
                    "{\n    \"contents\": {\n        \"stringValue\": \"foo\"\n    }\n}",
  533    534   
                ))
  534    535   
                .unwrap(),
  535    536   
        )
  536    537   
        .unwrap();
  537    538   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  538    539   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  539    540   
  540    541   
        let op = crate::operation::json_unions::JsonUnions::new();
  541    542   
        let config = op.config().expect("the operation has config");
  542    543   
        let de = config
  543    544   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  544    545   
            .expect("the config must have a deserializer");
  545    546   
  546    547   
        let parsed = de.deserialize_streaming(&mut http_response);
  547    548   
        let parsed = parsed.unwrap_or_else(|| {
  548    549   
            let http_response =
  549    550   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  550    551   
            de.deserialize_nonstreaming(&http_response)
  551    552   
        });
  552    553   
        let parsed = parsed
  553    554   
            .expect("should be successful response")
  554    555   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  555    556   
            .unwrap();
  556    557   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  557    558   
    }
  558    559   
    /// Deserializes a boolean union value
  559    560   
    /// Test ID: AwsJson10DeserializeBooleanUnionValue
  560    561   
    #[::tokio::test]
  561         -
    #[allow(unused_mut)]
         562  +
    #[::tracing_test::traced_test]
  562    563   
    async fn aws_json10_deserialize_boolean_union_value_response() {
  563    564   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  564    565   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BooleanValue(true)))
  565    566   
            .build();
  566    567   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  567    568   
            ::http::response::Builder::new()
  568    569   
                .header("Content-Type", "application/x-amz-json-1.0")
  569    570   
                .status(200)
  570    571   
                .body(::aws_smithy_types::body::SdkBody::from(
  571    572   
                    "{\n    \"contents\": {\n        \"booleanValue\": true\n    }\n}",
  572    573   
                ))
  573    574   
                .unwrap(),
  574    575   
        )
  575    576   
        .unwrap();
  576    577   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  577    578   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  578    579   
  579    580   
        let op = crate::operation::json_unions::JsonUnions::new();
  580    581   
        let config = op.config().expect("the operation has config");
  581    582   
        let de = config
  582    583   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  583    584   
            .expect("the config must have a deserializer");
  584    585   
  585    586   
        let parsed = de.deserialize_streaming(&mut http_response);
  586    587   
        let parsed = parsed.unwrap_or_else(|| {
  587    588   
            let http_response =
  588    589   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  589    590   
            de.deserialize_nonstreaming(&http_response)
  590    591   
        });
  591    592   
        let parsed = parsed
  592    593   
            .expect("should be successful response")
  593    594   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  594    595   
            .unwrap();
  595    596   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  596    597   
    }
  597    598   
    /// Deserializes a number union value
  598    599   
    /// Test ID: AwsJson10DeserializeNumberUnionValue
  599    600   
    #[::tokio::test]
  600         -
    #[allow(unused_mut)]
         601  +
    #[::tracing_test::traced_test]
  601    602   
    async fn aws_json10_deserialize_number_union_value_response() {
  602    603   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  603    604   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::NumberValue(1)))
  604    605   
            .build();
  605    606   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  606    607   
            ::http::response::Builder::new()
  607    608   
                .header("Content-Type", "application/x-amz-json-1.0")
  608    609   
                .status(200)
  609    610   
                .body(::aws_smithy_types::body::SdkBody::from(
  610    611   
                    "{\n    \"contents\": {\n        \"numberValue\": 1\n    }\n}",
  611    612   
                ))
  612    613   
                .unwrap(),
  613    614   
        )
  614    615   
        .unwrap();
  615    616   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  616    617   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  617    618   
  618    619   
        let op = crate::operation::json_unions::JsonUnions::new();
  619    620   
        let config = op.config().expect("the operation has config");
  620    621   
        let de = config
  621    622   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  622    623   
            .expect("the config must have a deserializer");
  623    624   
  624    625   
        let parsed = de.deserialize_streaming(&mut http_response);
  625    626   
        let parsed = parsed.unwrap_or_else(|| {
  626    627   
            let http_response =
  627    628   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  628    629   
            de.deserialize_nonstreaming(&http_response)
  629    630   
        });
  630    631   
        let parsed = parsed
  631    632   
            .expect("should be successful response")
  632    633   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  633    634   
            .unwrap();
  634    635   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  635    636   
    }
  636    637   
    /// Deserializes a blob union value
  637    638   
    /// Test ID: AwsJson10DeserializeBlobUnionValue
  638    639   
    #[::tokio::test]
  639         -
    #[allow(unused_mut)]
         640  +
    #[::tracing_test::traced_test]
  640    641   
    async fn aws_json10_deserialize_blob_union_value_response() {
  641    642   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  642    643   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::BlobValue(
  643    644   
                ::aws_smithy_types::Blob::new("foo"),
  644    645   
            )))
  645    646   
            .build();
  646    647   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  647    648   
            ::http::response::Builder::new()
  648    649   
                .header("Content-Type", "application/x-amz-json-1.0")
  649    650   
                .status(200)
  650    651   
                .body(::aws_smithy_types::body::SdkBody::from(
  651    652   
                    "{\n    \"contents\": {\n        \"blobValue\": \"Zm9v\"\n    }\n}",
  652    653   
                ))
  653    654   
                .unwrap(),
  654    655   
        )
  655    656   
        .unwrap();
  656    657   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  657    658   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  658    659   
  659    660   
        let op = crate::operation::json_unions::JsonUnions::new();
  660    661   
        let config = op.config().expect("the operation has config");
  661    662   
        let de = config
  662    663   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  663    664   
            .expect("the config must have a deserializer");
  664    665   
  665    666   
        let parsed = de.deserialize_streaming(&mut http_response);
  666    667   
        let parsed = parsed.unwrap_or_else(|| {
  667    668   
            let http_response =
  668    669   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  669    670   
            de.deserialize_nonstreaming(&http_response)
  670    671   
        });
  671    672   
        let parsed = parsed
  672    673   
            .expect("should be successful response")
  673    674   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  674    675   
            .unwrap();
  675    676   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  676    677   
    }
  677    678   
    /// Deserializes a timestamp union value
  678    679   
    /// Test ID: AwsJson10DeserializeTimestampUnionValue
  679    680   
    #[::tokio::test]
  680         -
    #[allow(unused_mut)]
         681  +
    #[::tracing_test::traced_test]
  681    682   
    async fn aws_json10_deserialize_timestamp_union_value_response() {
  682    683   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  683    684   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::TimestampValue(
  684    685   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  685    686   
            )))
  686    687   
            .build();
  687    688   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  688    689   
            ::http::response::Builder::new()
  689    690   
                .header("Content-Type", "application/x-amz-json-1.0")
  690    691   
                .status(200)
  691    692   
                .body(::aws_smithy_types::body::SdkBody::from(
  692    693   
                    "{\n    \"contents\": {\n        \"timestampValue\": 1398796238\n    }\n}",
  693    694   
                ))
  694    695   
                .unwrap(),
  695    696   
        )
  696    697   
        .unwrap();
  697    698   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  698    699   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  699    700   
  700    701   
        let op = crate::operation::json_unions::JsonUnions::new();
  701    702   
        let config = op.config().expect("the operation has config");
  702    703   
        let de = config
  703    704   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  704    705   
            .expect("the config must have a deserializer");
  705    706   
  706    707   
        let parsed = de.deserialize_streaming(&mut http_response);
  707    708   
        let parsed = parsed.unwrap_or_else(|| {
  708    709   
            let http_response =
  709    710   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  710    711   
            de.deserialize_nonstreaming(&http_response)
  711    712   
        });
  712    713   
        let parsed = parsed
  713    714   
            .expect("should be successful response")
  714    715   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  715    716   
            .unwrap();
  716    717   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  717    718   
    }
  718    719   
    /// Deserializes an enum union value
  719    720   
    /// Test ID: AwsJson10DeserializeEnumUnionValue
  720    721   
    #[::tokio::test]
  721         -
    #[allow(unused_mut)]
         722  +
    #[::tracing_test::traced_test]
  722    723   
    async fn aws_json10_deserialize_enum_union_value_response() {
  723    724   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  724    725   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::EnumValue(
  725    726   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  726    727   
            )))
  727    728   
            .build();
  728    729   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  729    730   
            ::http::response::Builder::new()
  730    731   
                .header("Content-Type", "application/x-amz-json-1.0")
  731    732   
                .status(200)
  732    733   
                .body(::aws_smithy_types::body::SdkBody::from(
  733    734   
                    "{\n    \"contents\": {\n        \"enumValue\": \"Foo\"\n    }\n}",
  734    735   
                ))
  735    736   
                .unwrap(),
  736    737   
        )
  737    738   
        .unwrap();
  738    739   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  739    740   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  740    741   
  741    742   
        let op = crate::operation::json_unions::JsonUnions::new();
  742    743   
        let config = op.config().expect("the operation has config");
  743    744   
        let de = config
  744    745   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  745    746   
            .expect("the config must have a deserializer");
  746    747   
  747    748   
        let parsed = de.deserialize_streaming(&mut http_response);
  748    749   
        let parsed = parsed.unwrap_or_else(|| {
  749    750   
            let http_response =
  750    751   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  751    752   
            de.deserialize_nonstreaming(&http_response)
  752    753   
        });
  753    754   
        let parsed = parsed
  754    755   
            .expect("should be successful response")
  755    756   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  756    757   
            .unwrap();
  757    758   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  758    759   
    }
  759    760   
    /// Deserializes an intEnum union value
  760    761   
    /// Test ID: AwsJson10DeserializeIntEnumUnionValue
  761    762   
    #[::tokio::test]
  762         -
    #[allow(unused_mut)]
         763  +
    #[::tracing_test::traced_test]
  763    764   
    async fn aws_json10_deserialize_int_enum_union_value_response() {
  764    765   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  765    766   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::IntEnumValue(1)))
  766    767   
            .build();
  767    768   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  768    769   
            ::http::response::Builder::new()
  769    770   
                .header("Content-Type", "application/x-amz-json-1.0")
  770    771   
                .status(200)
  771    772   
                .body(::aws_smithy_types::body::SdkBody::from(
  772    773   
                    "{\n    \"contents\": {\n        \"intEnumValue\": 1\n    }\n}",
  773    774   
                ))
  774    775   
                .unwrap(),
  775    776   
        )
  776    777   
        .unwrap();
  777    778   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  778    779   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  779    780   
  780    781   
        let op = crate::operation::json_unions::JsonUnions::new();
  781    782   
        let config = op.config().expect("the operation has config");
  782    783   
        let de = config
  783    784   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  784    785   
            .expect("the config must have a deserializer");
  785    786   
  786    787   
        let parsed = de.deserialize_streaming(&mut http_response);
  787    788   
        let parsed = parsed.unwrap_or_else(|| {
  788    789   
            let http_response =
  789    790   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  790    791   
            de.deserialize_nonstreaming(&http_response)
  791    792   
        });
  792    793   
        let parsed = parsed
  793    794   
            .expect("should be successful response")
  794    795   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  795    796   
            .unwrap();
  796    797   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  797    798   
    }
  798    799   
    /// Deserializes a list union value
  799    800   
    /// Test ID: AwsJson10DeserializeListUnionValue
  800    801   
    #[::tokio::test]
  801         -
    #[allow(unused_mut)]
         802  +
    #[::tracing_test::traced_test]
  802    803   
    async fn aws_json10_deserialize_list_union_value_response() {
  803    804   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  804    805   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::ListValue(vec![
  805    806   
                "foo".to_owned(),
  806    807   
                "bar".to_owned(),
  807    808   
            ])))
  808    809   
            .build();
  809    810   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  810    811   
            ::http::response::Builder::new()
  811    812   
                .header("Content-Type", "application/x-amz-json-1.0")
  812    813   
                .status(200)
  813    814   
                .body(::aws_smithy_types::body::SdkBody::from(
  814    815   
                    "{\n    \"contents\": {\n        \"listValue\": [\"foo\", \"bar\"]\n    }\n}",
  815    816   
                ))
  816    817   
                .unwrap(),
  817    818   
        )
  818    819   
        .unwrap();
  819    820   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  820    821   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  821    822   
  822    823   
        let op = crate::operation::json_unions::JsonUnions::new();
  823    824   
        let config = op.config().expect("the operation has config");
  824    825   
        let de = config
  825    826   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  826    827   
            .expect("the config must have a deserializer");
  827    828   
  828    829   
        let parsed = de.deserialize_streaming(&mut http_response);
  829    830   
        let parsed = parsed.unwrap_or_else(|| {
  830    831   
            let http_response =
  831    832   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  832    833   
            de.deserialize_nonstreaming(&http_response)
  833    834   
        });
  834    835   
        let parsed = parsed
  835    836   
            .expect("should be successful response")
  836    837   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  837    838   
            .unwrap();
  838    839   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  839    840   
    }
  840    841   
    /// Deserializes a map union value
  841    842   
    /// Test ID: AwsJson10DeserializeMapUnionValue
  842    843   
    #[::tokio::test]
  843         -
    #[allow(unused_mut)]
         844  +
    #[::tracing_test::traced_test]
  844    845   
    async fn aws_json10_deserialize_map_union_value_response() {
  845    846   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  846    847   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::MapValue({
  847    848   
                let mut ret = ::std::collections::HashMap::new();
  848    849   
                ret.insert("foo".to_owned(), "bar".to_owned());
  849    850   
                ret.insert("spam".to_owned(), "eggs".to_owned());
  850    851   
                ret
  851    852   
            })))
  852    853   
            .build();
  853    854   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  854    855   
        .header("Content-Type", "application/x-amz-json-1.0")
  855    856   
        .status(200)
  856    857   
                    .body(::aws_smithy_types::body::SdkBody::from("{\n    \"contents\": {\n        \"mapValue\": {\n            \"foo\": \"bar\",\n            \"spam\": \"eggs\"\n        }\n    }\n}"))
  857    858   
                    .unwrap()
  858    859   
                    ).unwrap();
  859    860   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  860    861   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  861    862   
  862    863   
        let op = crate::operation::json_unions::JsonUnions::new();
  863    864   
        let config = op.config().expect("the operation has config");
  864    865   
        let de = config
  865    866   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  866    867   
            .expect("the config must have a deserializer");
  867    868   
  868    869   
        let parsed = de.deserialize_streaming(&mut http_response);
  869    870   
        let parsed = parsed.unwrap_or_else(|| {
  870    871   
            let http_response =
  871    872   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  872    873   
            de.deserialize_nonstreaming(&http_response)
  873    874   
        });
  874    875   
        let parsed = parsed
  875    876   
            .expect("should be successful response")
  876    877   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  877    878   
            .unwrap();
  878    879   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  879    880   
    }
  880    881   
    /// Deserializes a structure union value
  881    882   
    /// Test ID: AwsJson10DeserializeStructureUnionValue
  882    883   
    #[::tokio::test]
  883         -
    #[allow(unused_mut)]
         884  +
    #[::tracing_test::traced_test]
  884    885   
    async fn aws_json10_deserialize_structure_union_value_response() {
  885    886   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  886    887   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StructureValue(
  887    888   
                crate::types::GreetingStruct::builder()
  888    889   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  889    890   
                    .build(),
  890    891   
            )))
  891    892   
            .build();
  892    893   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  893    894   
            ::http::response::Builder::new()
  894    895   
                .header("Content-Type", "application/x-amz-json-1.0")
  895    896   
                .status(200)
  896    897   
                .body(::aws_smithy_types::body::SdkBody::from(
  897    898   
                    "{\n    \"contents\": {\n        \"structureValue\": {\n            \"hi\": \"hello\"\n        }\n    }\n}",
  898    899   
                ))
  899    900   
                .unwrap(),
  900    901   
        )
  901    902   
        .unwrap();
  902    903   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  903    904   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  904    905   
  905    906   
        let op = crate::operation::json_unions::JsonUnions::new();
  906    907   
        let config = op.config().expect("the operation has config");
  907    908   
        let de = config
  908    909   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  909    910   
            .expect("the config must have a deserializer");
  910    911   
  911    912   
        let parsed = de.deserialize_streaming(&mut http_response);
  912    913   
        let parsed = parsed.unwrap_or_else(|| {
  913    914   
            let http_response =
  914    915   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  915    916   
            de.deserialize_nonstreaming(&http_response)
  916    917   
        });
  917    918   
        let parsed = parsed
  918    919   
            .expect("should be successful response")
  919    920   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  920    921   
            .unwrap();
  921    922   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  922    923   
    }
  923    924   
    /// Ignores an unrecognized __type property
  924    925   
    /// Test ID: AwsJson10DeserializeIgnoreType
  925    926   
    #[::tokio::test]
  926         -
    #[allow(unused_mut)]
         927  +
    #[::tracing_test::traced_test]
  927    928   
    async fn aws_json10_deserialize_ignore_type_response() {
  928    929   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  929    930   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StructureValue(
  930    931   
                crate::types::GreetingStruct::builder()
  931    932   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  932    933   
                    .build(),
  933    934   
            )))
  934    935   
            .build();
  935    936   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  936    937   
        .header("Content-Type", "application/x-amz-json-1.0")
  937    938   
        .status(200)
  938    939   
                    .body(::aws_smithy_types::body::SdkBody::from("{\n    \"contents\": {\n        \"__type\": \"aws.protocoltests.json10#MyUnion\",\n        \"structureValue\": {\n            \"hi\": \"hello\"\n        }\n    }\n}"))
  939    940   
                    .unwrap()
  940    941   
                    ).unwrap();
  941    942   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  942    943   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  943    944   
  944    945   
        let op = crate::operation::json_unions::JsonUnions::new();
  945    946   
        let config = op.config().expect("the operation has config");
  946    947   
        let de = config
  947    948   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  948    949   
            .expect("the config must have a deserializer");
  949    950   
  950    951   
        let parsed = de.deserialize_streaming(&mut http_response);
  951    952   
        let parsed = parsed.unwrap_or_else(|| {
  952    953   
            let http_response =
  953    954   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  954    955   
            de.deserialize_nonstreaming(&http_response)
  955    956   
        });
  956    957   
        let parsed = parsed
  957    958   
            .expect("should be successful response")
  958    959   
            .downcast::<crate::operation::json_unions::JsonUnionsOutput>()
  959    960   
            .unwrap();
  960    961   
        ::pretty_assertions::assert_eq!(parsed.contents, expected_output.contents, "Unexpected value for `contents`");
  961    962   
    }
  962    963   
    /// Allows for `: null` to be set for all unset fields
  963    964   
    /// Test ID: AwsJson10DeserializeAllowNulls
  964    965   
    #[::tokio::test]
  965         -
    #[allow(unused_mut)]
         966  +
    #[::tracing_test::traced_test]
  966    967   
    async fn aws_json10_deserialize_allow_nulls_response() {
  967    968   
        let expected_output = crate::operation::json_unions::JsonUnionsOutput::builder()
  968    969   
            .set_contents(::std::option::Option::Some(crate::types::MyUnion::StructureValue(
  969    970   
                crate::types::GreetingStruct::builder()
  970    971   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  971    972   
                    .build(),
  972    973   
            )))
  973    974   
            .build();
  974    975   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  975    976   
        .header("Content-Type", "application/x-amz-json-1.0")

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

@@ -195,195 +369,370 @@
  215    215   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  216    216   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  217    217   
        })?;
  218    218   
        cfg.interceptor_state()
  219    219   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  220    220   
        ::std::result::Result::Ok(())
  221    221   
    }
  222    222   
}
  223    223   
#[allow(unreachable_code, unused_variables)]
  224    224   
#[cfg(test)]
  225         -
mod no_input_and_no_output_request_test {
         225  +
mod no_input_and_no_output_test {
         226  +
  226    227   
    /// Clients must always send an empty JSON object payload for
  227    228   
    /// operations with no input (that is, `{}`). While AWS service
  228    229   
    /// implementations support requests with no payload or requests
  229    230   
    /// that send `{}`, always sending `{}` from the client is
  230    231   
    /// preferred for forward compatibility in case input is ever
  231    232   
    /// added to an operation.
  232    233   
    /// Test ID: AwsJson10MustAlwaysSendEmptyJsonPayload
  233    234   
    #[::tokio::test]
  234         -
    #[allow(unused_mut)]
         235  +
    #[::tracing_test::traced_test]
  235    236   
    async fn aws_json10_must_always_send_empty_json_payload_request() {
  236    237   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  237    238   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  238    239   
  239    240   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  240    241   
        let result = client.no_input_and_no_output().send().await;
  241    242   
        let _ = dbg!(result);
  242    243   
        let http_request = request_receiver.expect_request();
  243    244   
        let expected_headers = [
  244    245   
            ("Content-Type", "application/x-amz-json-1.0"),
  245    246   
            ("X-Amz-Target", "JsonRpc10.NoInputAndNoOutput"),
  246    247   
        ];
  247    248   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  248    249   
        let body = http_request.body().bytes().expect("body should be strict");
  249    250   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  250    251   
            body,
  251    252   
            "{}",
  252    253   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  253    254   
        ));
  254    255   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  255    256   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  256    257   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  257    258   
    }
  258    259   
    /// When no output is defined, the service is expected to return
  259    260   
    /// an empty payload, however, client must ignore a JSON payload
  260    261   
    /// if one is returned. This ensures that if output is added later,
  261    262   
    /// then it will not break the client.
  262    263   
    /// Test ID: AwsJson10HandlesEmptyOutputShape
  263    264   
    #[::tokio::test]
  264         -
    #[allow(unused_mut)]
         265  +
    #[::tracing_test::traced_test]
  265    266   
    async fn aws_json10_handles_empty_output_shape_response() {
  266    267   
        let expected_output = crate::operation::no_input_and_no_output::NoInputAndNoOutputOutput::builder().build();
  267    268   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  268    269   
            ::http::response::Builder::new()
  269    270   
                .header("Content-Type", "application/x-amz-json-1.0")
  270    271   
                .status(200)
  271    272   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  272    273   
                .unwrap(),
  273    274   
        )
  274    275   
        .unwrap();
  275    276   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  276    277   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  277    278   
  278    279   
        let op = crate::operation::no_input_and_no_output::NoInputAndNoOutput::new();
  279    280   
        let config = op.config().expect("the operation has config");
  280    281   
        let de = config
  281    282   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  282    283   
            .expect("the config must have a deserializer");
  283    284   
  284    285   
        let parsed = de.deserialize_streaming(&mut http_response);
  285    286   
        let parsed = parsed.unwrap_or_else(|| {
  286    287   
            let http_response =
  287    288   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  288    289   
            de.deserialize_nonstreaming(&http_response)
  289    290   
        });
  290    291   
        let parsed = parsed
  291    292   
            .expect("should be successful response")
  292    293   
            .downcast::<crate::operation::no_input_and_no_output::NoInputAndNoOutputOutput>()
  293    294   
            .unwrap();
  294    295   
    }
  295    296   
    /// This client-only test builds on handles_empty_output_shape,
  296    297   
    /// by including unexpected fields in the JSON. A client
  297    298   
    /// needs to ignore JSON output that is empty or that contains
  298    299   
    /// JSON object data.
  299    300   
    /// Test ID: AwsJson10HandlesUnexpectedJsonOutput
  300    301   
    #[::tokio::test]
  301         -
    #[allow(unused_mut)]
         302  +
    #[::tracing_test::traced_test]
  302    303   
    async fn aws_json10_handles_unexpected_json_output_response() {
  303    304   
        let expected_output = crate::operation::no_input_and_no_output::NoInputAndNoOutputOutput::builder().build();
  304    305   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  305    306   
            ::http::response::Builder::new()
  306    307   
                .header("Content-Type", "application/x-amz-json-1.0")
  307    308   
                .status(200)
  308    309   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"foo\": true\n}"))
  309    310   
                .unwrap(),
  310    311   
        )
  311    312   
        .unwrap();
  312    313   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  313    314   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  314    315   
  315    316   
        let op = crate::operation::no_input_and_no_output::NoInputAndNoOutput::new();
  316    317   
        let config = op.config().expect("the operation has config");
  317    318   
        let de = config
  318    319   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  319    320   
            .expect("the config must have a deserializer");
  320    321   
  321    322   
        let parsed = de.deserialize_streaming(&mut http_response);
  322    323   
        let parsed = parsed.unwrap_or_else(|| {
  323    324   
            let http_response =
  324    325   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  325    326   
            de.deserialize_nonstreaming(&http_response)
  326    327   
        });
  327    328   
        let parsed = parsed
  328    329   
            .expect("should be successful response")
  329    330   
            .downcast::<crate::operation::no_input_and_no_output::NoInputAndNoOutputOutput>()
  330    331   
            .unwrap();
  331    332   
    }
  332    333   
    /// When no output is defined, the service is expected to return
  333    334   
    /// an empty payload. Despite the lack of a payload, the service
  334    335   
    /// is expected to always send a Content-Type header. Clients must
  335    336   
    /// handle cases where a service returns a JSON object and where
  336    337   
    /// a service returns no JSON at all.
  337    338   
    /// Test ID: AwsJson10ServiceRespondsWithNoPayload
  338    339   
    #[::tokio::test]
  339         -
    #[allow(unused_mut)]
         340  +
    #[::tracing_test::traced_test]
  340    341   
    async fn aws_json10_service_responds_with_no_payload_response() {
  341    342   
        let expected_output = crate::operation::no_input_and_no_output::NoInputAndNoOutputOutput::builder().build();
  342    343   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  343    344   
            ::http::response::Builder::new()
  344    345   
                .header("Content-Type", "application/x-amz-json-1.0")
  345    346   
                .status(200)
  346    347   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  347    348   
                .unwrap(),
  348    349   
        )
  349    350   
        .unwrap();

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

@@ -192,192 +283,284 @@
  212    212   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  213    213   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  214    214   
        })?;
  215    215   
        cfg.interceptor_state()
  216    216   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  217    217   
        ::std::result::Result::Ok(())
  218    218   
    }
  219    219   
}
  220    220   
#[allow(unreachable_code, unused_variables)]
  221    221   
#[cfg(test)]
  222         -
mod no_input_and_output_request_test {
         222  +
mod no_input_and_output_test {
         223  +
  223    224   
    /// A client should always send and empty JSON object payload.
  224    225   
    /// Test ID: AwsJson10NoInputAndOutput
  225    226   
    #[::tokio::test]
  226         -
    #[allow(unused_mut)]
         227  +
    #[::tracing_test::traced_test]
  227    228   
    async fn aws_json10_no_input_and_output_request() {
  228    229   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  229    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  230    231   
  231    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  232    233   
        let result = client.no_input_and_output().send().await;
  233    234   
        let _ = dbg!(result);
  234    235   
        let http_request = request_receiver.expect_request();
  235    236   
        let expected_headers = [
  236    237   
            ("Content-Type", "application/x-amz-json-1.0"),
  237    238   
            ("X-Amz-Target", "JsonRpc10.NoInputAndOutput"),
  238    239   
        ];
  239    240   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  240    241   
        let body = http_request.body().bytes().expect("body should be strict");
  241    242   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  242    243   
            body,
  243    244   
            "{}",
  244    245   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  245    246   
        ));
  246    247   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  247    248   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  248    249   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  249    250   
    }
  250    251   
    /// Empty output always serializes an empty object payload.
  251    252   
    /// Test ID: AwsJson10NoInputAndOutput
  252    253   
    #[::tokio::test]
  253         -
    #[allow(unused_mut)]
         254  +
    #[::tracing_test::traced_test]
  254    255   
    async fn aws_json10_no_input_and_output_response() {
  255    256   
        let expected_output = crate::operation::no_input_and_output::NoInputAndOutputOutput::builder().build();
  256    257   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  257    258   
            ::http::response::Builder::new()
  258    259   
                .header("Content-Type", "application/x-amz-json-1.0")
  259    260   
                .status(200)
  260    261   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  261    262   
                .unwrap(),
  262    263   
        )
  263    264   
        .unwrap();

tmp-codegen-diff/codegen-client-test/json_rpc10/rust-client-codegen/src/operation/operation_with_defaults.rs

@@ -198,198 +315,316 @@
  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 operation_with_defaults_request_test {
         228  +
mod operation_with_defaults_test {
  229    229   
    use ::aws_smithy_protocol_test::FloatEquals;
         230  +
  230    231   
    /// Client populates default values in input.
  231    232   
    /// Test ID: AwsJson10ClientPopulatesDefaultValuesInInput
  232    233   
    #[::tokio::test]
         234  +
    #[::tracing_test::traced_test]
  233    235   
    #[should_panic]
  234         -
    #[allow(unused_mut)]
  235    236   
    async fn aws_json10_client_populates_default_values_in_input_request() {
  236    237   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  237    238   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  238    239   
  239    240   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  240    241   
        let result = client
  241    242   
            .operation_with_defaults()
  242    243   
            .set_defaults(::std::option::Option::Some(crate::types::Defaults::builder().build()))
  243    244   
            .send()
  244    245   
            .await;
  245    246   
        let _ = dbg!(result);
  246    247   
        let http_request = request_receiver.expect_request();
  247    248   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0")];
  248    249   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  249    250   
        let body = http_request.body().bytes().expect("body should be strict");
  250    251   
        ::aws_smithy_protocol_test::assert_ok(
  251    252   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"defaults\": {\n        \"defaultString\": \"hi\",\n        \"defaultBoolean\": true,\n        \"defaultList\": [],\n        \"defaultDocumentMap\": {},\n        \"defaultDocumentString\": \"hi\",\n        \"defaultDocumentBoolean\": true,\n        \"defaultDocumentList\": [],\n        \"defaultTimestamp\": 0,\n        \"defaultBlob\": \"YWJj\",\n        \"defaultByte\": 1,\n        \"defaultShort\": 1,\n        \"defaultInteger\": 10,\n        \"defaultLong\": 100,\n        \"defaultFloat\": 1.0,\n        \"defaultDouble\": 1.0,\n        \"defaultMap\": {},\n        \"defaultEnum\": \"FOO\",\n        \"defaultIntEnum\": 1,\n        \"emptyString\": \"\",\n        \"falseBoolean\": false,\n        \"emptyBlob\": \"\",\n        \"zeroByte\": 0,\n        \"zeroShort\": 0,\n        \"zeroInteger\": 0,\n        \"zeroLong\": 0,\n        \"zeroFloat\": 0.0,\n        \"zeroDouble\": 0.0\n    }\n}", ::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(), "POST", "method was incorrect");
  255    256   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  256    257   
    }
  257    258   
    /// Client skips top level default values in input.
  258    259   
    /// Test ID: AwsJson10ClientSkipsTopLevelDefaultValuesInInput
  259    260   
    #[::tokio::test]
  260         -
    #[allow(unused_mut)]
         261  +
    #[::tracing_test::traced_test]
  261    262   
    async fn aws_json10_client_skips_top_level_default_values_in_input_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.operation_with_defaults().send().await;
  267    268   
        let _ = dbg!(result);
  268    269   
        let http_request = request_receiver.expect_request();
  269    270   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0")];
  270    271   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  271    272   
        let body = http_request.body().bytes().expect("body should be strict");
  272    273   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  273    274   
            body,
  274    275   
            "{\n}",
  275    276   
            ::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(), "POST", "method was incorrect");
  279    280   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  280    281   
    }
  281    282   
    /// Client uses explicitly provided member values over defaults
  282    283   
    /// Test ID: AwsJson10ClientUsesExplicitlyProvidedMemberValuesOverDefaults
  283    284   
    #[::tokio::test]
         285  +
    #[::tracing_test::traced_test]
  284    286   
    #[should_panic]
  285         -
    #[allow(unused_mut)]
  286    287   
    async fn aws_json10_client_uses_explicitly_provided_member_values_over_defaults_request() {
  287    288   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  288    289   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  289    290   
  290    291   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  291    292   
        let result = client
  292    293   
            .operation_with_defaults()
  293    294   
            .set_defaults(::std::option::Option::Some(
  294    295   
                crate::types::Defaults::builder()
  295    296   
                    .set_default_string(::std::option::Option::Some("bye".to_owned()))
@@ -342,343 +459,460 @@
  362    363   
        ::aws_smithy_protocol_test::assert_ok(
  363    364   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"defaults\": {\n        \"defaultString\": \"bye\",\n        \"defaultBoolean\": true,\n        \"defaultList\": [\"a\"],\n        \"defaultDocumentMap\": {\"name\": \"Jack\"},\n        \"defaultDocumentString\": \"bye\",\n        \"defaultDocumentBoolean\": true,\n        \"defaultDocumentList\": [\"b\"],\n        \"defaultNullDocument\": \"notNull\",\n        \"defaultTimestamp\": 1,\n        \"defaultBlob\": \"aGk=\",\n        \"defaultByte\": 2,\n        \"defaultShort\": 2,\n        \"defaultInteger\": 20,\n        \"defaultLong\": 200,\n        \"defaultFloat\": 2.0,\n        \"defaultDouble\": 2.0,\n        \"defaultMap\": {\"name\": \"Jack\"},\n        \"defaultEnum\": \"BAR\",\n        \"defaultIntEnum\": 2,\n        \"emptyString\": \"foo\",\n        \"falseBoolean\": true,\n        \"emptyBlob\": \"aGk=\",\n        \"zeroByte\": 1,\n        \"zeroShort\": 1,\n        \"zeroInteger\": 1,\n        \"zeroLong\": 1,\n        \"zeroFloat\": 1.0,\n        \"zeroDouble\": 1.0\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  364    365   
        );
  365    366   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  366    367   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  367    368   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  368    369   
    }
  369    370   
    /// Any time a value is provided for a member in the top level of input, it is used, regardless of if its the default.
  370    371   
    /// Test ID: AwsJson10ClientUsesExplicitlyProvidedValuesInTopLevel
  371    372   
    #[::tokio::test]
  372         -
    #[allow(unused_mut)]
         373  +
    #[::tracing_test::traced_test]
  373    374   
    async fn aws_json10_client_uses_explicitly_provided_values_in_top_level_request() {
  374    375   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  375    376   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  376    377   
  377    378   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  378    379   
        let result = client
  379    380   
            .operation_with_defaults()
  380    381   
            .set_top_level_default(::std::option::Option::Some("hi".to_owned()))
  381    382   
            .set_other_top_level_default(::std::option::Option::Some(0))
  382    383   
            .send()
  383    384   
            .await;
  384    385   
        let _ = dbg!(result);
  385    386   
        let http_request = request_receiver.expect_request();
  386    387   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0")];
  387    388   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  388    389   
        let body = http_request.body().bytes().expect("body should be strict");
  389    390   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  390    391   
            body,
  391    392   
            "{\n    \"topLevelDefault\": \"hi\",\n    \"otherTopLevelDefault\": 0\n}",
  392    393   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  393    394   
        ));
  394    395   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  395    396   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  396    397   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  397    398   
    }
  398    399   
    /// Typically, non top-level members would have defaults filled in, but if they have the clientOptional trait, the defaults should be ignored.
  399    400   
    /// Test ID: AwsJson10ClientIgnoresNonTopLevelDefaultsOnMembersWithClientOptional
  400    401   
    #[::tokio::test]
  401         -
    #[allow(unused_mut)]
         402  +
    #[::tracing_test::traced_test]
  402    403   
    async fn aws_json10_client_ignores_non_top_level_defaults_on_members_with_client_optional_request() {
  403    404   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  404    405   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  405    406   
  406    407   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  407    408   
        let result = client
  408    409   
            .operation_with_defaults()
  409    410   
            .set_client_optional_defaults(::std::option::Option::Some(crate::types::ClientOptionalDefaults::builder().build()))
  410    411   
            .send()
  411    412   
            .await;
  412    413   
        let _ = dbg!(result);
  413    414   
        let http_request = request_receiver.expect_request();
  414    415   
        let expected_headers = [("Content-Type", "application/x-amz-json-1.0")];
  415    416   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  416    417   
        let body = http_request.body().bytes().expect("body should be strict");
  417    418   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  418    419   
            body,
  419    420   
            "{\n    \"clientOptionalDefaults\": {}\n}",
  420    421   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  421    422   
        ));
  422    423   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  423    424   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  424    425   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  425    426   
    }
  426    427   
    /// Client populates default values when missing in response.
  427    428   
    /// Test ID: AwsJson10ClientPopulatesDefaultsValuesWhenMissingInResponse
  428    429   
    #[::tokio::test]
  429         -
    #[allow(unused_mut)]
         430  +
    #[::tracing_test::traced_test]
  430    431   
    async fn aws_json10_client_populates_defaults_values_when_missing_in_response_response() {
  431    432   
        let expected_output = crate::operation::operation_with_defaults::OperationWithDefaultsOutput::builder()
  432    433   
            .set_default_string(::std::option::Option::Some("hi".to_owned()))
  433    434   
            .set_default_boolean(::std::option::Option::Some(true))
  434    435   
            .set_default_list(::std::option::Option::Some(vec![]))
  435    436   
            .set_default_document_map(::std::option::Option::Some({
  436    437   
                let json_bytes = br#"{}"#;
  437    438   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();
  438    439   
                ::aws_smithy_json::deserialize::token::expect_document(&mut tokens).expect("well formed json")
  439    440   
            }))
@@ -575,576 +635,636 @@
  595    596   
        assert!(
  596    597   
            parsed.zero_double.float_equals(&expected_output.zero_double),
  597    598   
            "Unexpected value for `zero_double` {:?} vs. {:?}",
  598    599   
            expected_output.zero_double,
  599    600   
            parsed.zero_double
  600    601   
        );
  601    602   
    }
  602    603   
    /// Client ignores default values if member values are present in the response.
  603    604   
    /// Test ID: AwsJson10ClientIgnoresDefaultValuesIfMemberValuesArePresentInResponse
  604    605   
    #[::tokio::test]
  605         -
    #[allow(unused_mut)]
         606  +
    #[::tracing_test::traced_test]
  606    607   
    async fn aws_json10_client_ignores_default_values_if_member_values_are_present_in_response_response() {
  607    608   
        let expected_output = crate::operation::operation_with_defaults::OperationWithDefaultsOutput::builder()
  608    609   
            .set_default_string(::std::option::Option::Some("bye".to_owned()))
  609    610   
            .set_default_boolean(::std::option::Option::Some(false))
  610    611   
            .set_default_list(::std::option::Option::Some(vec!["a".to_owned()]))
  611    612   
            .set_default_document_map(::std::option::Option::Some({
  612    613   
                let json_bytes = br#"{
  613    614   
                        "name": "Jack"
  614    615   
                    }"#;
  615    616   
                let mut tokens = ::aws_smithy_json::deserialize::json_token_iter(json_bytes).peekable();

tmp-codegen-diff/codegen-client-test/json_rpc10/rust-client-codegen/src/operation/operation_with_nested_structure.rs

@@ -204,204 +268,269 @@
  224    224   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  225    225   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  226    226   
        })?;
  227    227   
        cfg.interceptor_state()
  228    228   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  229    229   
        ::std::result::Result::Ok(())
  230    230   
    }
  231    231   
}
  232    232   
#[allow(unreachable_code, unused_variables)]
  233    233   
#[cfg(test)]
  234         -
mod operation_with_nested_structure_request_test {
         234  +
mod operation_with_nested_structure_test {
         235  +
  235    236   
    /// Client populates nested default values when missing.
  236    237   
    /// Test ID: AwsJson10ClientPopulatesNestedDefaultValuesWhenMissing
  237    238   
    #[::tokio::test]
  238         -
    #[allow(unused_mut)]
         239  +
    #[::tracing_test::traced_test]
  239    240   
    async fn aws_json10_client_populates_nested_default_values_when_missing_request() {
  240    241   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  241    242   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  242    243   
  243    244   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  244    245   
        let result = client
  245    246   
            .operation_with_nested_structure()
  246    247   
            .set_top_level(::std::option::Option::Some(
  247    248   
                crate::types::TopLevel::builder()
  248    249   
                    .set_dialog(::std::option::Option::Some(
@@ -281,282 +341,342 @@
  301    302   
        ::aws_smithy_protocol_test::assert_ok(
  302    303   
        ::aws_smithy_protocol_test::validate_body(body, "{\n    \"topLevel\": {\n        \"dialog\": {\n            \"language\": \"en\",\n            \"greeting\": \"hi\"\n        },\n        \"dialogList\": [\n            {\n                \"greeting\": \"hi\"\n            },\n            {\n                \"greeting\": \"hi\",\n                \"farewell\": {\n                    \"phrase\": \"bye\"\n                }\n            },\n            {\n                \"language\": \"it\",\n                \"greeting\": \"ciao\",\n                \"farewell\": {\n                    \"phrase\": \"arrivederci\"\n                }\n            }\n        ],\n        \"dialogMap\": {\n            \"emptyDialog\": {\n                \"greeting\": \"hi\"\n            },\n            \"partialEmptyDialog\": {\n                \"language\": \"en\",\n                \"greeting\": \"hi\",\n                \"farewell\": {\n                    \"phrase\": \"bye\"\n                }\n            },\n            \"nonEmptyDialog\": {\n                \"greeting\": \"konnichiwa\",\n                \"farewell\": {\n                    \"phrase\": \"sayonara\"\n                }\n            }\n        }\n    }\n}", ::aws_smithy_protocol_test::MediaType::from("application/json"))
  303    304   
        );
  304    305   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  305    306   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  306    307   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  307    308   
    }
  308    309   
    /// Client populates nested default values when missing in response body.
  309    310   
    /// Test ID: AwsJson10ClientPopulatesNestedDefaultsWhenMissingInResponseBody
  310    311   
    #[::tokio::test]
  311         -
    #[allow(unused_mut)]
         312  +
    #[::tracing_test::traced_test]
  312    313   
    async fn aws_json10_client_populates_nested_defaults_when_missing_in_response_body_response() {
  313    314   
        let expected_output = crate::operation::operation_with_nested_structure::OperationWithNestedStructureOutput::builder()
  314    315   
            .set_dialog(::std::option::Option::Some(
  315    316   
                crate::types::Dialog::builder()
  316    317   
                    .set_language(::std::option::Option::Some("en".to_owned()))
  317    318   
                    .set_greeting(::std::option::Option::Some("hi".to_owned()))
  318    319   
                    .build(),
  319    320   
            ))
  320    321   
            .set_dialog_list(::std::option::Option::Some(vec![
  321    322   
                crate::types::Dialog::builder()

tmp-codegen-diff/codegen-client-test/json_rpc10/rust-client-codegen/src/operation/operation_with_required_members.rs

@@ -201,201 +266,267 @@
  221    221   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  222    222   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  223    223   
        })?;
  224    224   
        cfg.interceptor_state()
  225    225   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  226    226   
        ::std::result::Result::Ok(())
  227    227   
    }
  228    228   
}
  229    229   
#[allow(unreachable_code, unused_variables)]
  230    230   
#[cfg(test)]
  231         -
mod operation_with_required_members_request_test {
         231  +
mod operation_with_required_members_test {
  232    232   
    use ::aws_smithy_protocol_test::FloatEquals;
         233  +
  233    234   
    /// Client error corrects when server fails to serialize required values.
  234    235   
    /// Test ID: AwsJson10ClientErrorCorrectsWhenServerFailsToSerializeRequiredValues
  235    236   
    #[::tokio::test]
  236         -
    #[allow(unused_mut)]
         237  +
    #[::tracing_test::traced_test]
  237    238   
    async fn aws_json10_client_error_corrects_when_server_fails_to_serialize_required_values_response() {
  238    239   
        let expected_output = crate::operation::operation_with_required_members::OperationWithRequiredMembersOutput::builder()
  239    240   
            .set_required_string(::std::option::Option::Some("".to_owned()))
  240    241   
            .set_required_boolean(::std::option::Option::Some(false))
  241    242   
            .set_required_list(::std::option::Option::Some(vec![]))
  242    243   
            .set_required_timestamp(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(0, 0_f64)))
  243    244   
            .set_required_blob(::std::option::Option::Some(::aws_smithy_types::Blob::new("")))
  244    245   
            .set_required_byte(::std::option::Option::Some(0))
  245    246   
            .set_required_short(::std::option::Option::Some(0))
  246    247   
            .set_required_integer(::std::option::Option::Some(0))

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

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

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

@@ -198,198 +481,482 @@
  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 simple_scalar_properties_request_test {
         228  +
mod simple_scalar_properties_test {
  229    229   
    use ::aws_smithy_protocol_test::FloatEquals;
         230  +
  230    231   
    /// Supports handling NaN float values.
  231    232   
    /// Test ID: AwsJson10SupportsNaNFloatInputs
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn aws_json10_supports_na_n_float_inputs_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   
            .simple_scalar_properties()
  241    242   
            .set_float_value(::std::option::Option::Some(
  242    243   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  243    244   
            ))
  244    245   
            .set_double_value(::std::option::Option::Some(
  245    246   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  246    247   
            ))
  247    248   
            .send()
  248    249   
            .await;
  249    250   
        let _ = dbg!(result);
  250    251   
        let http_request = request_receiver.expect_request();
  251    252   
        let expected_headers = [
  252    253   
            ("Content-Type", "application/x-amz-json-1.0"),
  253    254   
            ("X-Amz-Target", "JsonRpc10.SimpleScalarProperties"),
  254    255   
        ];
  255    256   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  256    257   
        let body = http_request.body().bytes().expect("body should be strict");
  257    258   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  258    259   
            body,
  259    260   
            "{\n    \"floatValue\": \"NaN\",\n    \"doubleValue\": \"NaN\"\n}",
  260    261   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  261    262   
        ));
  262    263   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  263    264   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  264    265   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  265    266   
    }
  266    267   
    /// Supports handling Infinity float values.
  267    268   
    /// Test ID: AwsJson10SupportsInfinityFloatInputs
  268    269   
    #[::tokio::test]
  269         -
    #[allow(unused_mut)]
         270  +
    #[::tracing_test::traced_test]
  270    271   
    async fn aws_json10_supports_infinity_float_inputs_request() {
  271    272   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  272    273   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  273    274   
  274    275   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  275    276   
        let result = client
  276    277   
            .simple_scalar_properties()
  277    278   
            .set_float_value(::std::option::Option::Some(
  278    279   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  279    280   
            ))
  280    281   
            .set_double_value(::std::option::Option::Some(
  281    282   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  282    283   
            ))
  283    284   
            .send()
  284    285   
            .await;
  285    286   
        let _ = dbg!(result);
  286    287   
        let http_request = request_receiver.expect_request();
  287    288   
        let expected_headers = [
  288    289   
            ("Content-Type", "application/x-amz-json-1.0"),
  289    290   
            ("X-Amz-Target", "JsonRpc10.SimpleScalarProperties"),
  290    291   
        ];
  291    292   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  292    293   
        let body = http_request.body().bytes().expect("body should be strict");
  293    294   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  294    295   
            body,
  295    296   
            "{\n    \"floatValue\": \"Infinity\",\n    \"doubleValue\": \"Infinity\"\n}",
  296    297   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  297    298   
        ));
  298    299   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  299    300   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  300    301   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  301    302   
    }
  302    303   
    /// Supports handling -Infinity float values.
  303    304   
    /// Test ID: AwsJson10SupportsNegativeInfinityFloatInputs
  304    305   
    #[::tokio::test]
  305         -
    #[allow(unused_mut)]
         306  +
    #[::tracing_test::traced_test]
  306    307   
    async fn aws_json10_supports_negative_infinity_float_inputs_request() {
  307    308   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  308    309   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  309    310   
  310    311   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  311    312   
        let result = client
  312    313   
            .simple_scalar_properties()
  313    314   
            .set_float_value(::std::option::Option::Some(
  314    315   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  315    316   
            ))
  316    317   
            .set_double_value(::std::option::Option::Some(
  317    318   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  318    319   
            ))
  319    320   
            .send()
  320    321   
            .await;
  321    322   
        let _ = dbg!(result);
  322    323   
        let http_request = request_receiver.expect_request();
  323    324   
        let expected_headers = [
  324    325   
            ("Content-Type", "application/x-amz-json-1.0"),
  325    326   
            ("X-Amz-Target", "JsonRpc10.SimpleScalarProperties"),
  326    327   
        ];
  327    328   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  328    329   
        let body = http_request.body().bytes().expect("body should be strict");
  329    330   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  330    331   
            body,
  331    332   
            "{\n    \"floatValue\": \"-Infinity\",\n    \"doubleValue\": \"-Infinity\"\n}",
  332    333   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  333    334   
        ));
  334    335   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  335    336   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  336    337   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  337    338   
    }
  338    339   
    /// Supports handling NaN float values.
  339    340   
    /// Test ID: AwsJson10SupportsNaNFloatInputs
  340    341   
    #[::tokio::test]
  341         -
    #[allow(unused_mut)]
         342  +
    #[::tracing_test::traced_test]
  342    343   
    async fn aws_json10_supports_na_n_float_inputs_response() {
  343    344   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder()
  344    345   
            .set_float_value(::std::option::Option::Some(
  345    346   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  346    347   
            ))
  347    348   
            .set_double_value(::std::option::Option::Some(
  348    349   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  349    350   
            ))
  350    351   
            .build();
  351    352   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  352    353   
            ::http::response::Builder::new()
  353    354   
                .header("Content-Type", "application/x-amz-json-1.0")
  354    355   
                .status(200)
  355    356   
                .body(::aws_smithy_types::body::SdkBody::from(
  356    357   
                    "{\n    \"floatValue\": \"NaN\",\n    \"doubleValue\": \"NaN\"\n}",
  357    358   
                ))
  358    359   
                .unwrap(),
  359    360   
        )
  360    361   
        .unwrap();
  361    362   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  362    363   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  363    364   
  364    365   
        let op = crate::operation::simple_scalar_properties::SimpleScalarProperties::new();
  365    366   
        let config = op.config().expect("the operation has config");
  366    367   
        let de = config
  367    368   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  368    369   
            .expect("the config must have a deserializer");
  369    370   
  370    371   
        let parsed = de.deserialize_streaming(&mut http_response);
  371    372   
        let parsed = parsed.unwrap_or_else(|| {
  372    373   
            let http_response =
  373    374   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  374    375   
            de.deserialize_nonstreaming(&http_response)
  375    376   
        });
  376    377   
        let parsed = parsed
  377    378   
            .expect("should be successful response")
  378    379   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  379    380   
            .unwrap();
  380    381   
        assert!(
  381    382   
            parsed.float_value.float_equals(&expected_output.float_value),
  382    383   
            "Unexpected value for `float_value` {:?} vs. {:?}",
  383    384   
            expected_output.float_value,
  384    385   
            parsed.float_value
  385    386   
        );
  386    387   
        assert!(
  387    388   
            parsed.double_value.float_equals(&expected_output.double_value),
  388    389   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  389    390   
            expected_output.double_value,
  390    391   
            parsed.double_value
  391    392   
        );
  392    393   
    }
  393    394   
    /// Supports handling Infinity float values.
  394    395   
    /// Test ID: AwsJson10SupportsInfinityFloatInputs
  395    396   
    #[::tokio::test]
  396         -
    #[allow(unused_mut)]
         397  +
    #[::tracing_test::traced_test]
  397    398   
    async fn aws_json10_supports_infinity_float_inputs_response() {
  398    399   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder()
  399    400   
            .set_float_value(::std::option::Option::Some(
  400    401   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  401    402   
            ))
  402    403   
            .set_double_value(::std::option::Option::Some(
  403    404   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  404    405   
            ))
  405    406   
            .build();
  406    407   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  407    408   
            ::http::response::Builder::new()
  408    409   
                .header("Content-Type", "application/x-amz-json-1.0")
  409    410   
                .status(200)
  410    411   
                .body(::aws_smithy_types::body::SdkBody::from(
  411    412   
                    "{\n    \"floatValue\": \"Infinity\",\n    \"doubleValue\": \"Infinity\"\n}",
  412    413   
                ))
  413    414   
                .unwrap(),
  414    415   
        )
  415    416   
        .unwrap();
  416    417   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  417    418   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  418    419   
  419    420   
        let op = crate::operation::simple_scalar_properties::SimpleScalarProperties::new();
  420    421   
        let config = op.config().expect("the operation has config");
  421    422   
        let de = config
  422    423   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  423    424   
            .expect("the config must have a deserializer");
  424    425   
  425    426   
        let parsed = de.deserialize_streaming(&mut http_response);
  426    427   
        let parsed = parsed.unwrap_or_else(|| {
  427    428   
            let http_response =
  428    429   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  429    430   
            de.deserialize_nonstreaming(&http_response)
  430    431   
        });
  431    432   
        let parsed = parsed
  432    433   
            .expect("should be successful response")
  433    434   
            .downcast::<crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput>()
  434    435   
            .unwrap();
  435    436   
        assert!(
  436    437   
            parsed.float_value.float_equals(&expected_output.float_value),
  437    438   
            "Unexpected value for `float_value` {:?} vs. {:?}",
  438    439   
            expected_output.float_value,
  439    440   
            parsed.float_value
  440    441   
        );
  441    442   
        assert!(
  442    443   
            parsed.double_value.float_equals(&expected_output.double_value),
  443    444   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  444    445   
            expected_output.double_value,
  445    446   
            parsed.double_value
  446    447   
        );
  447    448   
    }
  448    449   
    /// Supports handling -Infinity float values.
  449    450   
    /// Test ID: AwsJson10SupportsNegativeInfinityFloatInputs
  450    451   
    #[::tokio::test]
  451         -
    #[allow(unused_mut)]
         452  +
    #[::tracing_test::traced_test]
  452    453   
    async fn aws_json10_supports_negative_infinity_float_inputs_response() {
  453    454   
        let expected_output = crate::operation::simple_scalar_properties::SimpleScalarPropertiesOutput::builder()
  454    455   
            .set_float_value(::std::option::Option::Some(
  455    456   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  456    457   
            ))
  457    458   
            .set_double_value(::std::option::Option::Some(
  458    459   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  459    460   
            ))
  460    461   
            .build();
  461    462   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(

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

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

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

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

tmp-codegen-diff/codegen-client-test/json_rpc11/rust-client-codegen/src/operation/empty_operation.rs

@@ -192,192 +408,409 @@
  212    212   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  213    213   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  214    214   
        })?;
  215    215   
        cfg.interceptor_state()
  216    216   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  217    217   
        ::std::result::Result::Ok(())
  218    218   
    }
  219    219   
}
  220    220   
#[allow(unreachable_code, unused_variables)]
  221    221   
#[cfg(test)]
  222         -
mod empty_operation_request_test {
         222  +
mod empty_operation_test {
         223  +
  223    224   
    /// Sends requests to /
  224    225   
    /// Test ID: sends_requests_to_slash
  225    226   
    #[::tokio::test]
  226         -
    #[allow(unused_mut)]
         227  +
    #[::tracing_test::traced_test]
  227    228   
    async fn sends_requests_to_slash_request() {
  228    229   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  229    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  230    231   
  231    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  232    233   
        let result = client.empty_operation().send().await;
  233    234   
        let _ = dbg!(result);
  234    235   
        let http_request = request_receiver.expect_request();
  235    236   
        let expected_headers = [
  236    237   
            ("Content-Type", "application/x-amz-json-1.1"),
  237    238   
            ("X-Amz-Target", "JsonProtocol.EmptyOperation"),
  238    239   
        ];
  239    240   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  240    241   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  241    242   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  242    243   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  243    244   
    }
  244    245   
    /// Includes X-Amz-Target header and Content-Type
  245    246   
    /// Test ID: includes_x_amz_target_and_content_type
  246    247   
    #[::tokio::test]
  247         -
    #[allow(unused_mut)]
         248  +
    #[::tracing_test::traced_test]
  248    249   
    async fn includes_x_amz_target_and_content_type_request() {
  249    250   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  250    251   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  251    252   
  252    253   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  253    254   
        let result = client.empty_operation().send().await;
  254    255   
        let _ = dbg!(result);
  255    256   
        let http_request = request_receiver.expect_request();
  256    257   
        let expected_headers = [
  257    258   
            ("Content-Type", "application/x-amz-json-1.1"),
  258    259   
            ("X-Amz-Target", "JsonProtocol.EmptyOperation"),
  259    260   
        ];
  260    261   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  261    262   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  262    263   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  263    264   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  264    265   
    }
  265    266   
    /// Clients must always send an empty JSON object payload for
  266    267   
    /// operations with no input (that is, `{}`). While AWS service
  267    268   
    /// implementations support requests with no payload or requests
  268    269   
    /// that send `{}`, always sending `{}` from the client is
  269    270   
    /// preferred for forward compatibility in case input is ever
  270    271   
    /// added to an operation.
  271    272   
    /// Test ID: json_1_1_client_sends_empty_payload_for_no_input_shape
  272    273   
    #[::tokio::test]
  273         -
    #[allow(unused_mut)]
         274  +
    #[::tracing_test::traced_test]
  274    275   
    async fn json_1_1_client_sends_empty_payload_for_no_input_shape_request() {
  275    276   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  276    277   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  277    278   
  278    279   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  279    280   
        let result = client.empty_operation().send().await;
  280    281   
        let _ = dbg!(result);
  281    282   
        let http_request = request_receiver.expect_request();
  282    283   
        let expected_headers = [
  283    284   
            ("Content-Type", "application/x-amz-json-1.1"),
  284    285   
            ("X-Amz-Target", "JsonProtocol.EmptyOperation"),
  285    286   
        ];
  286    287   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  287    288   
        let body = http_request.body().bytes().expect("body should be strict");
  288    289   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  289    290   
            body,
  290    291   
            "{}",
  291    292   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  292    293   
        ));
  293    294   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  294    295   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  295    296   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  296    297   
    }
  297    298   
    /// When no output is defined, the service is expected to return
  298    299   
    /// an empty payload, however, client must ignore a JSON payload
  299    300   
    /// if one is returned. This ensures that if output is added later,
  300    301   
    /// then it will not break the client.
  301    302   
    /// Test ID: handles_empty_output_shape
  302    303   
    #[::tokio::test]
  303         -
    #[allow(unused_mut)]
         304  +
    #[::tracing_test::traced_test]
  304    305   
    async fn handles_empty_output_shape_response() {
  305    306   
        let expected_output = crate::operation::empty_operation::EmptyOperationOutput::builder().build();
  306    307   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  307    308   
            ::http::response::Builder::new()
  308    309   
                .header("Content-Type", "application/x-amz-json-1.1")
  309    310   
                .status(200)
  310    311   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  311    312   
                .unwrap(),
  312    313   
        )
  313    314   
        .unwrap();
  314    315   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  315    316   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  316    317   
  317    318   
        let op = crate::operation::empty_operation::EmptyOperation::new();
  318    319   
        let config = op.config().expect("the operation has config");
  319    320   
        let de = config
  320    321   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  321    322   
            .expect("the config must have a deserializer");
  322    323   
  323    324   
        let parsed = de.deserialize_streaming(&mut http_response);
  324    325   
        let parsed = parsed.unwrap_or_else(|| {
  325    326   
            let http_response =
  326    327   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  327    328   
            de.deserialize_nonstreaming(&http_response)
  328    329   
        });
  329    330   
        let parsed = parsed
  330    331   
            .expect("should be successful response")
  331    332   
            .downcast::<crate::operation::empty_operation::EmptyOperationOutput>()
  332    333   
            .unwrap();
  333    334   
    }
  334    335   
    /// This client-only test builds on handles_empty_output_shape,
  335    336   
    /// by including unexpected fields in the JSON. A client
  336    337   
    /// needs to ignore JSON output that is empty or that contains
  337    338   
    /// JSON object data.
  338    339   
    /// Test ID: handles_unexpected_json_output
  339    340   
    #[::tokio::test]
  340         -
    #[allow(unused_mut)]
         341  +
    #[::tracing_test::traced_test]
  341    342   
    async fn handles_unexpected_json_output_response() {
  342    343   
        let expected_output = crate::operation::empty_operation::EmptyOperationOutput::builder().build();
  343    344   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  344    345   
            ::http::response::Builder::new()
  345    346   
                .header("Content-Type", "application/x-amz-json-1.1")
  346    347   
                .status(200)
  347    348   
                .body(::aws_smithy_types::body::SdkBody::from("{\n    \"foo\": true\n}"))
  348    349   
                .unwrap(),
  349    350   
        )
  350    351   
        .unwrap();
  351    352   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  352    353   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  353    354   
  354    355   
        let op = crate::operation::empty_operation::EmptyOperation::new();
  355    356   
        let config = op.config().expect("the operation has config");
  356    357   
        let de = config
  357    358   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  358    359   
            .expect("the config must have a deserializer");
  359    360   
  360    361   
        let parsed = de.deserialize_streaming(&mut http_response);
  361    362   
        let parsed = parsed.unwrap_or_else(|| {
  362    363   
            let http_response =
  363    364   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  364    365   
            de.deserialize_nonstreaming(&http_response)
  365    366   
        });
  366    367   
        let parsed = parsed
  367    368   
            .expect("should be successful response")
  368    369   
            .downcast::<crate::operation::empty_operation::EmptyOperationOutput>()
  369    370   
            .unwrap();
  370    371   
    }
  371    372   
    /// When no output is defined, the service is expected to return
  372    373   
    /// an empty payload. Despite the lack of a payload, the service
  373    374   
    /// is expected to always send a Content-Type header. Clients must
  374    375   
    /// handle cases where a service returns a JSON object and where
  375    376   
    /// a service returns no JSON at all.
  376    377   
    /// Test ID: json_1_1_service_responds_with_no_payload
  377    378   
    #[::tokio::test]
  378         -
    #[allow(unused_mut)]
         379  +
    #[::tracing_test::traced_test]
  379    380   
    async fn json_1_1_service_responds_with_no_payload_response() {
  380    381   
        let expected_output = crate::operation::empty_operation::EmptyOperationOutput::builder().build();
  381    382   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  382    383   
            ::http::response::Builder::new()
  383    384   
                .header("Content-Type", "application/x-amz-json-1.1")
  384    385   
                .status(200)
  385    386   
                .body(::aws_smithy_types::body::SdkBody::from(""))
  386    387   
                .unwrap(),
  387    388   
        )
  388    389   
        .unwrap();

tmp-codegen-diff/codegen-client-test/json_rpc11/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: AwsJson11EndpointTrait
  232    233   
    #[::tokio::test]
  233         -
    #[allow(unused_mut)]
         234  +
    #[::tracing_test::traced_test]
  234    235   
    async fn aws_json11_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 expected_headers = [
  243    244   
            ("Content-Type", "application/x-amz-json-1.1"),

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

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