Client Test

Client Test

rev. 9f5fb9826a6af51ebfb3736d0a778b00ec7b08b3

Files changed:

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/query_lists.rs

@@ -186,186 +366,367 @@
  206    206   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  207    207   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  208    208   
        })?;
  209    209   
        cfg.interceptor_state()
  210    210   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  211    211   
        ::std::result::Result::Ok(())
  212    212   
    }
  213    213   
}
  214    214   
#[allow(unreachable_code, unused_variables)]
  215    215   
#[cfg(test)]
  216         -
mod query_lists_request_test {
         216  +
mod query_lists_test {
         217  +
  217    218   
    /// Serializes query lists. All EC2 lists are flattened.
  218    219   
    /// Test ID: Ec2Lists
  219    220   
    #[::tokio::test]
  220         -
    #[allow(unused_mut)]
         221  +
    #[::tracing_test::traced_test]
  221    222   
    async fn ec2_lists_request() {
  222    223   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  223    224   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  224    225   
  225    226   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  226    227   
        let result = client
  227    228   
            .query_lists()
  228    229   
            .set_list_arg(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned(), "baz".to_owned()]))
  229    230   
            .set_complex_list_arg(::std::option::Option::Some(vec![
  230    231   
                crate::types::GreetingStruct::builder()
  231    232   
                    .set_hi(::std::option::Option::Some("hello".to_owned()))
  232    233   
                    .build(),
  233    234   
                crate::types::GreetingStruct::builder()
  234    235   
                    .set_hi(::std::option::Option::Some("hola".to_owned()))
  235    236   
                    .build(),
  236    237   
            ]))
  237    238   
            .send()
  238    239   
            .await;
  239    240   
        let _ = dbg!(result);
  240    241   
        let http_request = request_receiver.expect_request();
  241    242   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  242    243   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  243    244   
        let body = http_request.body().bytes().expect("body should be strict");
  244    245   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  245    246   
            body,
  246    247   
            "Action=QueryLists&Version=2020-01-08&ListArg.1=foo&ListArg.2=bar&ListArg.3=baz&ComplexListArg.1.Hi=hello&ComplexListArg.2.Hi=hola",
  247    248   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  248    249   
        ));
  249    250   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  250    251   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  251    252   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  252    253   
    }
  253    254   
    /// Does not serialize empty query lists.
  254    255   
    /// Test ID: Ec2EmptyQueryLists
  255    256   
    #[::tokio::test]
  256         -
    #[allow(unused_mut)]
         257  +
    #[::tracing_test::traced_test]
  257    258   
    async fn ec2_empty_query_lists_request() {
  258    259   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  259    260   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  260    261   
  261    262   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  262    263   
        let result = client.query_lists().set_list_arg(::std::option::Option::Some(vec![])).send().await;
  263    264   
        let _ = dbg!(result);
  264    265   
        let http_request = request_receiver.expect_request();
  265    266   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  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   
            "Action=QueryLists&Version=2020-01-08",
  271    272   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  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   
    /// An xmlName trait in the member of a list has no effect on the list serialization.
  278    279   
    /// Test ID: Ec2ListArgWithXmlNameMember
  279    280   
    #[::tokio::test]
  280         -
    #[allow(unused_mut)]
         281  +
    #[::tracing_test::traced_test]
  281    282   
    async fn ec2_list_arg_with_xml_name_member_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   
            .query_lists()
  288    289   
            .set_list_arg_with_xml_name_member(::std::option::Option::Some(vec!["A".to_owned(), "B".to_owned()]))
  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-www-form-urlencoded")];
  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   
            "Action=QueryLists&Version=2020-01-08&ListArgWithXmlNameMember.1=A&ListArgWithXmlNameMember.2=B",
  299    300   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  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   
    /// Changes the name of the list using the xmlName trait
  306    307   
    /// Test ID: Ec2ListMemberWithXmlName
  307    308   
    #[::tokio::test]
  308         -
    #[allow(unused_mut)]
         309  +
    #[::tracing_test::traced_test]
  309    310   
    async fn ec2_list_member_with_xml_name_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   
            .query_lists()
  316    317   
            .set_list_arg_with_xml_name(::std::option::Option::Some(vec!["A".to_owned(), "B".to_owned()]))
  317    318   
            .send()
  318    319   
            .await;
  319    320   
        let _ = dbg!(result);
  320    321   
        let http_request = request_receiver.expect_request();
  321    322   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  322    323   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  323    324   
        let body = http_request.body().bytes().expect("body should be strict");
  324    325   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  325    326   
            body,
  326    327   
            "Action=QueryLists&Version=2020-01-08&Hi.1=A&Hi.2=B",
  327    328   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  328    329   
        ));
  329    330   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  330    331   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  331    332   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  332    333   
    }
  333    334   
    /// Nested structure with a list member
  334    335   
    /// Test ID: Ec2ListNestedStructWithList
  335    336   
    #[::tokio::test]
  336         -
    #[allow(unused_mut)]
         337  +
    #[::tracing_test::traced_test]
  337    338   
    async fn ec2_list_nested_struct_with_list_request() {
  338    339   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  339    340   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  340    341   
  341    342   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  342    343   
        let result = client
  343    344   
            .query_lists()
  344    345   
            .set_nested_with_list(::std::option::Option::Some(
  345    346   
                crate::types::NestedStructWithList::builder()
  346    347   
                    .set_list_arg(::std::option::Option::Some(vec!["A".to_owned(), "B".to_owned()]))

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/query_timestamps.rs

@@ -192,192 +256,257 @@
  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 query_timestamps_request_test {
         222  +
mod query_timestamps_test {
         223  +
  223    224   
    /// Serializes timestamps
  224    225   
    /// Test ID: Ec2TimestampsInput
  225    226   
    #[::tokio::test]
  226         -
    #[allow(unused_mut)]
         227  +
    #[::tracing_test::traced_test]
  227    228   
    async fn ec2_timestamps_input_request() {
  228    229   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  229    230   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  230    231   
  231    232   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  232    233   
        let result = client
  233    234   
            .query_timestamps()
  234    235   
            .set_normal_format(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  235    236   
                1422172800, 0_f64,
  236    237   
            )))

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/recursive_xml_shapes.rs

@@ -190,190 +254,255 @@
  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 recursive_xml_shapes_request_test {
         220  +
mod recursive_xml_shapes_test {
         221  +
  221    222   
    /// Serializes recursive structures
  222    223   
    /// Test ID: Ec2RecursiveShapes
  223    224   
    #[::tokio::test]
  224         -
    #[allow(unused_mut)]
         225  +
    #[::tracing_test::traced_test]
  225    226   
    async fn ec2_recursive_shapes_response() {
  226    227   
        let expected_output = crate::operation::recursive_xml_shapes::RecursiveXmlShapesOutput::builder()
  227    228   
            .set_nested(::std::option::Option::Some(
  228    229   
                crate::types::RecursiveXmlShapesOutputNested1::builder()
  229    230   
                    .set_foo(::std::option::Option::Some("Foo1".to_owned()))
  230    231   
                    .set_nested(::std::option::Option::Some(::std::boxed::Box::new(
  231    232   
                        crate::types::RecursiveXmlShapesOutputNested2::builder()
  232    233   
                            .set_bar(::std::option::Option::Some("Bar1".to_owned()))
  233    234   
                            .set_recursive_member(::std::option::Option::Some(
  234    235   
                                crate::types::RecursiveXmlShapesOutputNested1::builder()

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/simple_input_params.rs

@@ -193,193 +619,620 @@
  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 simple_input_params_request_test {
         223  +
mod simple_input_params_test {
         224  +
  224    225   
    /// Serializes strings
  225    226   
    /// Test ID: Ec2SimpleInputParamsStrings
  226    227   
    #[::tokio::test]
  227         -
    #[allow(unused_mut)]
         228  +
    #[::tracing_test::traced_test]
  228    229   
    async fn ec2_simple_input_params_strings_request() {
  229    230   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  230    231   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  231    232   
  232    233   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  233    234   
        let result = client
  234    235   
            .simple_input_params()
  235    236   
            .set_foo(::std::option::Option::Some("val1".to_owned()))
  236    237   
            .set_bar(::std::option::Option::Some("val2".to_owned()))
  237    238   
            .send()
  238    239   
            .await;
  239    240   
        let _ = dbg!(result);
  240    241   
        let http_request = request_receiver.expect_request();
  241    242   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  242    243   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  243    244   
        let required_headers = &["Content-Length"];
  244    245   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  245    246   
        let body = http_request.body().bytes().expect("body should be strict");
  246    247   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  247    248   
            body,
  248    249   
            "Action=SimpleInputParams&Version=2020-01-08&Foo=val1&Bar=val2",
  249    250   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  250    251   
        ));
  251    252   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  252    253   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  253    254   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  254    255   
    }
  255    256   
    /// Serializes booleans that are true
  256    257   
    /// Test ID: Ec2SimpleInputParamsStringAndBooleanTrue
  257    258   
    #[::tokio::test]
  258         -
    #[allow(unused_mut)]
         259  +
    #[::tracing_test::traced_test]
  259    260   
    async fn ec2_simple_input_params_string_and_boolean_true_request() {
  260    261   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  261    262   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  262    263   
  263    264   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  264    265   
        let result = client
  265    266   
            .simple_input_params()
  266    267   
            .set_foo(::std::option::Option::Some("val1".to_owned()))
  267    268   
            .set_baz(::std::option::Option::Some(true))
  268    269   
            .send()
  269    270   
            .await;
  270    271   
        let _ = dbg!(result);
  271    272   
        let http_request = request_receiver.expect_request();
  272    273   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  273    274   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  274    275   
        let required_headers = &["Content-Length"];
  275    276   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  276    277   
        let body = http_request.body().bytes().expect("body should be strict");
  277    278   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  278    279   
            body,
  279    280   
            "Action=SimpleInputParams&Version=2020-01-08&Foo=val1&Baz=true",
  280    281   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  281    282   
        ));
  282    283   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  283    284   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  284    285   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  285    286   
    }
  286    287   
    /// Serializes booleans that are false
  287    288   
    /// Test ID: Ec2SimpleInputParamsStringsAndBooleanFalse
  288    289   
    #[::tokio::test]
  289         -
    #[allow(unused_mut)]
         290  +
    #[::tracing_test::traced_test]
  290    291   
    async fn ec2_simple_input_params_strings_and_boolean_false_request() {
  291    292   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  292    293   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  293    294   
  294    295   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  295    296   
        let result = client.simple_input_params().set_baz(::std::option::Option::Some(false)).send().await;
  296    297   
        let _ = dbg!(result);
  297    298   
        let http_request = request_receiver.expect_request();
  298    299   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  299    300   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  300    301   
        let required_headers = &["Content-Length"];
  301    302   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  302    303   
        let body = http_request.body().bytes().expect("body should be strict");
  303    304   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  304    305   
            body,
  305    306   
            "Action=SimpleInputParams&Version=2020-01-08&Baz=false",
  306    307   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  307    308   
        ));
  308    309   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  309    310   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  310    311   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  311    312   
    }
  312    313   
    /// Serializes integers
  313    314   
    /// Test ID: Ec2SimpleInputParamsInteger
  314    315   
    #[::tokio::test]
  315         -
    #[allow(unused_mut)]
         316  +
    #[::tracing_test::traced_test]
  316    317   
    async fn ec2_simple_input_params_integer_request() {
  317    318   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  318    319   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  319    320   
  320    321   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  321    322   
        let result = client.simple_input_params().set_bam(::std::option::Option::Some(10)).send().await;
  322    323   
        let _ = dbg!(result);
  323    324   
        let http_request = request_receiver.expect_request();
  324    325   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  325    326   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  326    327   
        let required_headers = &["Content-Length"];
  327    328   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_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   
            "Action=SimpleInputParams&Version=2020-01-08&Bam=10",
  332    333   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  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   
    /// Serializes floats
  339    340   
    /// Test ID: Ec2SimpleInputParamsFloat
  340    341   
    #[::tokio::test]
  341         -
    #[allow(unused_mut)]
         342  +
    #[::tracing_test::traced_test]
  342    343   
    async fn ec2_simple_input_params_float_request() {
  343    344   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  344    345   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  345    346   
  346    347   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  347    348   
        let result = client.simple_input_params().set_boo(::std::option::Option::Some(10.8_f64)).send().await;
  348    349   
        let _ = dbg!(result);
  349    350   
        let http_request = request_receiver.expect_request();
  350    351   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  351    352   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  352    353   
        let required_headers = &["Content-Length"];
  353    354   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  354    355   
        let body = http_request.body().bytes().expect("body should be strict");
  355    356   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  356    357   
            body,
  357    358   
            "Action=SimpleInputParams&Version=2020-01-08&Boo=10.8",
  358    359   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  359    360   
        ));
  360    361   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  361    362   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  362    363   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  363    364   
    }
  364    365   
    /// Blobs are base64 encoded in the query string
  365    366   
    /// Test ID: Ec2SimpleInputParamsBlob
  366    367   
    #[::tokio::test]
  367         -
    #[allow(unused_mut)]
         368  +
    #[::tracing_test::traced_test]
  368    369   
    async fn ec2_simple_input_params_blob_request() {
  369    370   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  370    371   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  371    372   
  372    373   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  373    374   
        let result = client
  374    375   
            .simple_input_params()
  375    376   
            .set_qux(::std::option::Option::Some(::aws_smithy_types::Blob::new("value")))
  376    377   
            .send()
  377    378   
            .await;
  378    379   
        let _ = dbg!(result);
  379    380   
        let http_request = request_receiver.expect_request();
  380    381   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  381    382   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  382    383   
        let required_headers = &["Content-Length"];
  383    384   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  384    385   
        let body = http_request.body().bytes().expect("body should be strict");
  385    386   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  386    387   
            body,
  387    388   
            "Action=SimpleInputParams&Version=2020-01-08&Qux=dmFsdWU%3D",
  388    389   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  389    390   
        ));
  390    391   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  391    392   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  392    393   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  393    394   
    }
  394    395   
    /// Serializes enums in the query string
  395    396   
    /// Test ID: Ec2Enums
  396    397   
    #[::tokio::test]
  397         -
    #[allow(unused_mut)]
         398  +
    #[::tracing_test::traced_test]
  398    399   
    async fn ec2_enums_request() {
  399    400   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  400    401   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  401    402   
  402    403   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  403    404   
        let result = client
  404    405   
            .simple_input_params()
  405    406   
            .set_foo_enum(::std::option::Option::Some(
  406    407   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  407    408   
            ))
  408    409   
            .send()
  409    410   
            .await;
  410    411   
        let _ = dbg!(result);
  411    412   
        let http_request = request_receiver.expect_request();
  412    413   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  413    414   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  414    415   
        let required_headers = &["Content-Length"];
  415    416   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_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   
            "Action=SimpleInputParams&Version=2020-01-08&FooEnum=Foo",
  420    421   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  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   
    /// Serializes query using ec2QueryName trait.
  427    428   
    /// Test ID: Ec2Query
  428    429   
    #[::tokio::test]
  429         -
    #[allow(unused_mut)]
         430  +
    #[::tracing_test::traced_test]
  430    431   
    async fn ec2_query_request() {
  431    432   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  432    433   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  433    434   
  434    435   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  435    436   
        let result = client
  436    437   
            .simple_input_params()
  437    438   
            .set_has_query_name(::std::option::Option::Some("Hi".to_owned()))
  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-www-form-urlencoded")];
  443    444   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  444    445   
        let required_headers = &["Content-Length"];
  445    446   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  446    447   
        let body = http_request.body().bytes().expect("body should be strict");
  447    448   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  448    449   
            body,
  449    450   
            "Action=SimpleInputParams&Version=2020-01-08&HasQueryName=Hi",
  450    451   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  451    452   
        ));
  452    453   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  453    454   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  454    455   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  455    456   
    }
  456    457   
    /// ec2QueryName trait is preferred over xmlName.
  457    458   
    /// Test ID: Ec2QueryIsPreferred
  458    459   
    #[::tokio::test]
  459         -
    #[allow(unused_mut)]
         460  +
    #[::tracing_test::traced_test]
  460    461   
    async fn ec2_query_is_preferred_request() {
  461    462   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  462    463   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  463    464   
  464    465   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  465    466   
        let result = client
  466    467   
            .simple_input_params()
  467    468   
            .set_has_query_and_xml_name(::std::option::Option::Some("Hi".to_owned()))
  468    469   
            .send()
  469    470   
            .await;
  470    471   
        let _ = dbg!(result);
  471    472   
        let http_request = request_receiver.expect_request();
  472    473   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  473    474   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  474    475   
        let required_headers = &["Content-Length"];
  475    476   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  476    477   
        let body = http_request.body().bytes().expect("body should be strict");
  477    478   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  478    479   
            body,
  479    480   
            "Action=SimpleInputParams&Version=2020-01-08&HasQueryAndXmlName=Hi",
  480    481   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  481    482   
        ));
  482    483   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  483    484   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  484    485   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  485    486   
    }
  486    487   
    /// xmlName is used with the ec2 protocol, but the first character is uppercased
  487    488   
    /// Test ID: Ec2XmlNameIsUppercased
  488    489   
    #[::tokio::test]
  489         -
    #[allow(unused_mut)]
         490  +
    #[::tracing_test::traced_test]
  490    491   
    async fn ec2_xml_name_is_uppercased_request() {
  491    492   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  492    493   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  493    494   
  494    495   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  495    496   
        let result = client
  496    497   
            .simple_input_params()
  497    498   
            .set_uses_xml_name(::std::option::Option::Some("Hi".to_owned()))
  498    499   
            .send()
  499    500   
            .await;
  500    501   
        let _ = dbg!(result);
  501    502   
        let http_request = request_receiver.expect_request();
  502    503   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  503    504   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  504    505   
        let required_headers = &["Content-Length"];
  505    506   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  506    507   
        let body = http_request.body().bytes().expect("body should be strict");
  507    508   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  508    509   
            body,
  509    510   
            "Action=SimpleInputParams&Version=2020-01-08&UsesXmlName=Hi",
  510    511   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  511    512   
        ));
  512    513   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  513    514   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  514    515   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  515    516   
    }
  516    517   
    /// Supports handling NaN float values.
  517    518   
    /// Test ID: Ec2QuerySupportsNaNFloatInputs
  518    519   
    #[::tokio::test]
  519         -
    #[allow(unused_mut)]
         520  +
    #[::tracing_test::traced_test]
  520    521   
    async fn ec2_query_supports_na_n_float_inputs_request() {
  521    522   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  522    523   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  523    524   
  524    525   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  525    526   
        let result = client
  526    527   
            .simple_input_params()
  527    528   
            .set_float_value(::std::option::Option::Some(
  528    529   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  529    530   
            ))
  530    531   
            .set_boo(::std::option::Option::Some(
  531    532   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").expect("invalid string for number"),
  532    533   
            ))
  533    534   
            .send()
  534    535   
            .await;
  535    536   
        let _ = dbg!(result);
  536    537   
        let http_request = request_receiver.expect_request();
  537    538   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  538    539   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  539    540   
        let required_headers = &["Content-Length"];
  540    541   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  541    542   
        let body = http_request.body().bytes().expect("body should be strict");
  542    543   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  543    544   
            body,
  544    545   
            "Action=SimpleInputParams&Version=2020-01-08&FloatValue=NaN&Boo=NaN",
  545    546   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  546    547   
        ));
  547    548   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  548    549   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  549    550   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  550    551   
    }
  551    552   
    /// Supports handling Infinity float values.
  552    553   
    /// Test ID: Ec2QuerySupportsInfinityFloatInputs
  553    554   
    #[::tokio::test]
  554         -
    #[allow(unused_mut)]
         555  +
    #[::tracing_test::traced_test]
  555    556   
    async fn ec2_query_supports_infinity_float_inputs_request() {
  556    557   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  557    558   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  558    559   
  559    560   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  560    561   
        let result = client
  561    562   
            .simple_input_params()
  562    563   
            .set_float_value(::std::option::Option::Some(
  563    564   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  564    565   
            ))
  565    566   
            .set_boo(::std::option::Option::Some(
  566    567   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  567    568   
            ))
  568    569   
            .send()
  569    570   
            .await;
  570    571   
        let _ = dbg!(result);
  571    572   
        let http_request = request_receiver.expect_request();
  572    573   
        let expected_headers = [("Content-Type", "application/x-www-form-urlencoded")];
  573    574   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_headers(http_request.headers(), expected_headers));
  574    575   
        let required_headers = &["Content-Length"];
  575    576   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::require_headers(http_request.headers(), required_headers));
  576    577   
        let body = http_request.body().bytes().expect("body should be strict");
  577    578   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(
  578    579   
            body,
  579    580   
            "Action=SimpleInputParams&Version=2020-01-08&FloatValue=Infinity&Boo=Infinity",
  580    581   
            ::aws_smithy_protocol_test::MediaType::from("application/x-www-form-urlencoded"),
  581    582   
        ));
  582    583   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  583    584   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  584    585   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  585    586   
    }
  586    587   
    /// Supports handling -Infinity float values.
  587    588   
    /// Test ID: Ec2QuerySupportsNegativeInfinityFloatInputs
  588    589   
    #[::tokio::test]
  589         -
    #[allow(unused_mut)]
         590  +
    #[::tracing_test::traced_test]
  590    591   
    async fn ec2_query_supports_negative_infinity_float_inputs_request() {
  591    592   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  592    593   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  593    594   
  594    595   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  595    596   
        let result = client
  596    597   
            .simple_input_params()
  597    598   
            .set_float_value(::std::option::Option::Some(
  598    599   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  599    600   
            ))

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/simple_scalar_xml_properties.rs

@@ -196,196 +261,262 @@
  216    216   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  217    217   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  218    218   
        })?;
  219    219   
        cfg.interceptor_state()
  220    220   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  221    221   
        ::std::result::Result::Ok(())
  222    222   
    }
  223    223   
}
  224    224   
#[allow(unreachable_code, unused_variables)]
  225    225   
#[cfg(test)]
  226         -
mod simple_scalar_xml_properties_request_test {
         226  +
mod simple_scalar_xml_properties_test {
  227    227   
    use ::aws_smithy_protocol_test::FloatEquals;
         228  +
  228    229   
    /// Serializes simple scalar properties
  229    230   
    /// Test ID: Ec2SimpleScalarProperties
  230    231   
    #[::tokio::test]
  231         -
    #[allow(unused_mut)]
         232  +
    #[::tracing_test::traced_test]
  232    233   
    async fn ec2_simple_scalar_properties_response() {
  233    234   
        let expected_output = crate::operation::simple_scalar_xml_properties::SimpleScalarXmlPropertiesOutput::builder()
  234    235   
            .set_string_value(::std::option::Option::Some("string".to_owned()))
  235    236   
            .set_empty_string_value(::std::option::Option::Some("".to_owned()))
  236    237   
            .set_true_boolean_value(::std::option::Option::Some(true))
  237    238   
            .set_false_boolean_value(::std::option::Option::Some(false))
  238    239   
            .set_byte_value(::std::option::Option::Some(1))
  239    240   
            .set_short_value(::std::option::Option::Some(2))
  240    241   
            .set_integer_value(::std::option::Option::Some(3))
  241    242   
            .set_long_value(::std::option::Option::Some(4))
@@ -280,281 +340,341 @@
  300    301   
        assert!(
  301    302   
            parsed.double_value.float_equals(&expected_output.double_value),
  302    303   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  303    304   
            expected_output.double_value,
  304    305   
            parsed.double_value
  305    306   
        );
  306    307   
    }
  307    308   
    /// Supports handling NaN float values.
  308    309   
    /// Test ID: Ec2QuerySupportsNaNFloatOutputs
  309    310   
    #[::tokio::test]
  310         -
    #[allow(unused_mut)]
         311  +
    #[::tracing_test::traced_test]
  311    312   
    async fn ec2_query_supports_na_n_float_outputs_response() {
  312    313   
        let expected_output = crate::operation::simple_scalar_xml_properties::SimpleScalarXmlPropertiesOutput::builder()
  313    314   
            .set_float_value(::std::option::Option::Some(
  314    315   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("NaN").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("NaN").expect("invalid string for number"),
  318    319   
            ))
  319    320   
            .build();
  320    321   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
@@ -355,356 +415,416 @@
  375    376   
        assert!(
  376    377   
            parsed.double_value.float_equals(&expected_output.double_value),
  377    378   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  378    379   
            expected_output.double_value,
  379    380   
            parsed.double_value
  380    381   
        );
  381    382   
    }
  382    383   
    /// Supports handling Infinity float values.
  383    384   
    /// Test ID: Ec2QuerySupportsInfinityFloatOutputs
  384    385   
    #[::tokio::test]
  385         -
    #[allow(unused_mut)]
         386  +
    #[::tracing_test::traced_test]
  386    387   
    async fn ec2_query_supports_infinity_float_outputs_response() {
  387    388   
        let expected_output = crate::operation::simple_scalar_xml_properties::SimpleScalarXmlPropertiesOutput::builder()
  388    389   
            .set_float_value(::std::option::Option::Some(
  389    390   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  390    391   
            ))
  391    392   
            .set_double_value(::std::option::Option::Some(
  392    393   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("Infinity").expect("invalid string for number"),
  393    394   
            ))
  394    395   
            .build();
  395    396   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
@@ -430,431 +490,491 @@
  450    451   
        assert!(
  451    452   
            parsed.double_value.float_equals(&expected_output.double_value),
  452    453   
            "Unexpected value for `double_value` {:?} vs. {:?}",
  453    454   
            expected_output.double_value,
  454    455   
            parsed.double_value
  455    456   
        );
  456    457   
    }
  457    458   
    /// Supports handling -Infinity float values.
  458    459   
    /// Test ID: Ec2QuerySupportsNegativeInfinityFloatOutputs
  459    460   
    #[::tokio::test]
  460         -
    #[allow(unused_mut)]
         461  +
    #[::tracing_test::traced_test]
  461    462   
    async fn ec2_query_supports_negative_infinity_float_outputs_response() {
  462    463   
        let expected_output = crate::operation::simple_scalar_xml_properties::SimpleScalarXmlPropertiesOutput::builder()
  463    464   
            .set_float_value(::std::option::Option::Some(
  464    465   
                <f32 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  465    466   
            ))
  466    467   
            .set_double_value(::std::option::Option::Some(
  467    468   
                <f64 as ::aws_smithy_types::primitive::Parse>::parse_smithy_primitive("-Infinity").expect("invalid string for number"),
  468    469   
            ))
  469    470   
            .build();
  470    471   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_blobs.rs

@@ -178,178 +242,243 @@
  198    198   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  199    199   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  200    200   
        })?;
  201    201   
        cfg.interceptor_state()
  202    202   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  203    203   
        ::std::result::Result::Ok(())
  204    204   
    }
  205    205   
}
  206    206   
#[allow(unreachable_code, unused_variables)]
  207    207   
#[cfg(test)]
  208         -
mod xml_blobs_request_test {
         208  +
mod xml_blobs_test {
         209  +
  209    210   
    /// Blobs are base64 encoded
  210    211   
    /// Test ID: Ec2XmlBlobs
  211    212   
    #[::tokio::test]
  212         -
    #[allow(unused_mut)]
         213  +
    #[::tracing_test::traced_test]
  213    214   
    async fn ec2_xml_blobs_response() {
  214    215   
        let expected_output = crate::operation::xml_blobs::XmlBlobsOutput::builder()
  215    216   
            .set_data(::std::option::Option::Some(::aws_smithy_types::Blob::new("value")))
  216    217   
            .build();
  217    218   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  218    219   
        .header("Content-Type", "text/xml;charset=UTF-8")
  219    220   
        .status(200)
  220    221   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlBlobsResponse xmlns=\"https://example.com/\">\n    <data>dmFsdWU=</data>\n    <RequestId>requestid</RequestId>\n</XmlBlobsResponse>\n"))
  221    222   
                    .unwrap()
  222    223   
                    ).unwrap();

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_empty_blobs.rs

@@ -189,189 +288,289 @@
  209    209   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  210    210   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  211    211   
        })?;
  212    212   
        cfg.interceptor_state()
  213    213   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  214    214   
        ::std::result::Result::Ok(())
  215    215   
    }
  216    216   
}
  217    217   
#[allow(unreachable_code, unused_variables)]
  218    218   
#[cfg(test)]
  219         -
mod xml_empty_blobs_request_test {
         219  +
mod xml_empty_blobs_test {
         220  +
  220    221   
    /// Empty blobs are deserialized as empty string
  221    222   
    /// Test ID: Ec2XmlEmptyBlobs
  222    223   
    #[::tokio::test]
  223         -
    #[allow(unused_mut)]
         224  +
    #[::tracing_test::traced_test]
  224    225   
    async fn ec2_xml_empty_blobs_response() {
  225    226   
        let expected_output = crate::operation::xml_empty_blobs::XmlEmptyBlobsOutput::builder()
  226    227   
            .set_data(::std::option::Option::Some(::aws_smithy_types::Blob::new("")))
  227    228   
            .build();
  228    229   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  229    230   
        .header("Content-Type", "text/xml;charset=UTF-8")
  230    231   
        .status(200)
  231    232   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlEmptyBlobsResponse xmlns=\"https://example.com/\">\n    <data></data>\n    <RequestId>requestid</RequestId>\n</XmlEmptyBlobsResponse>\n"))
  232    233   
                    .unwrap()
  233    234   
                    ).unwrap();
  234    235   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  235    236   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  236    237   
  237    238   
        let op = crate::operation::xml_empty_blobs::XmlEmptyBlobs::new();
  238    239   
        let config = op.config().expect("the operation has config");
  239    240   
        let de = config
  240    241   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  241    242   
            .expect("the config must have a deserializer");
  242    243   
  243    244   
        let parsed = de.deserialize_streaming(&mut http_response);
  244    245   
        let parsed = parsed.unwrap_or_else(|| {
  245    246   
            let http_response =
  246    247   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  247    248   
            de.deserialize_nonstreaming(&http_response)
  248    249   
        });
  249    250   
        let parsed = parsed
  250    251   
            .expect("should be successful response")
  251    252   
            .downcast::<crate::operation::xml_empty_blobs::XmlEmptyBlobsOutput>()
  252    253   
            .unwrap();
  253    254   
        ::pretty_assertions::assert_eq!(parsed.data, expected_output.data, "Unexpected value for `data`");
  254    255   
    }
  255    256   
    /// Empty self closed blobs are deserialized as empty string
  256    257   
    /// Test ID: Ec2XmlEmptySelfClosedBlobs
  257    258   
    #[::tokio::test]
  258         -
    #[allow(unused_mut)]
         259  +
    #[::tracing_test::traced_test]
  259    260   
    async fn ec2_xml_empty_self_closed_blobs_response() {
  260    261   
        let expected_output = crate::operation::xml_empty_blobs::XmlEmptyBlobsOutput::builder()
  261    262   
            .set_data(::std::option::Option::Some(::aws_smithy_types::Blob::new("")))
  262    263   
            .build();
  263    264   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  264    265   
        .header("Content-Type", "text/xml;charset=UTF-8")
  265    266   
        .status(200)
  266    267   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlEmptyBlobsResponse xmlns=\"https://example.com/\">\n    <data/>\n    <RequestId>requestid</RequestId>\n</XmlEmptyBlobsResponse>\n"))
  267    268   
                    .unwrap()
  268    269   
                    ).unwrap();

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_empty_lists.rs

@@ -189,189 +253,254 @@
  209    209   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  210    210   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  211    211   
        })?;
  212    212   
        cfg.interceptor_state()
  213    213   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  214    214   
        ::std::result::Result::Ok(())
  215    215   
    }
  216    216   
}
  217    217   
#[allow(unreachable_code, unused_variables)]
  218    218   
#[cfg(test)]
  219         -
mod xml_empty_lists_request_test {
         219  +
mod xml_empty_lists_test {
         220  +
  220    221   
    /// Deserializes empty XML lists
  221    222   
    /// Test ID: Ec2XmlEmptyLists
  222    223   
    #[::tokio::test]
  223         -
    #[allow(unused_mut)]
         224  +
    #[::tracing_test::traced_test]
  224    225   
    async fn ec2_xml_empty_lists_response() {
  225    226   
        let expected_output = crate::operation::xml_empty_lists::XmlEmptyListsOutput::builder()
  226    227   
            .set_string_list(::std::option::Option::Some(vec![]))
  227    228   
            .set_string_set(::std::option::Option::Some(vec![]))
  228    229   
            .build();
  229    230   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  230    231   
            ::http::response::Builder::new()
  231    232   
                .header("Content-Type", "text/xml")
  232    233   
                .status(200)
  233    234   
                .body(::aws_smithy_types::body::SdkBody::from(

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_enums.rs

@@ -178,178 +242,243 @@
  198    198   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  199    199   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  200    200   
        })?;
  201    201   
        cfg.interceptor_state()
  202    202   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  203    203   
        ::std::result::Result::Ok(())
  204    204   
    }
  205    205   
}
  206    206   
#[allow(unreachable_code, unused_variables)]
  207    207   
#[cfg(test)]
  208         -
mod xml_enums_request_test {
         208  +
mod xml_enums_test {
         209  +
  209    210   
    /// Serializes simple scalar properties
  210    211   
    /// Test ID: Ec2XmlEnums
  211    212   
    #[::tokio::test]
  212         -
    #[allow(unused_mut)]
         213  +
    #[::tracing_test::traced_test]
  213    214   
    async fn ec2_xml_enums_response() {
  214    215   
        let expected_output = crate::operation::xml_enums::XmlEnumsOutput::builder()
  215    216   
            .set_foo_enum1(::std::option::Option::Some(
  216    217   
                "Foo".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  217    218   
            ))
  218    219   
            .set_foo_enum2(::std::option::Option::Some(
  219    220   
                "0".parse::<crate::types::FooEnum>().expect("static value validated to member"),
  220    221   
            ))
  221    222   
            .set_foo_enum3(::std::option::Option::Some(
  222    223   
                "1".parse::<crate::types::FooEnum>().expect("static value validated to member"),

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_int_enums.rs

@@ -189,189 +253,254 @@
  209    209   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  210    210   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  211    211   
        })?;
  212    212   
        cfg.interceptor_state()
  213    213   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  214    214   
        ::std::result::Result::Ok(())
  215    215   
    }
  216    216   
}
  217    217   
#[allow(unreachable_code, unused_variables)]
  218    218   
#[cfg(test)]
  219         -
mod xml_int_enums_request_test {
         219  +
mod xml_int_enums_test {
         220  +
  220    221   
    /// Serializes simple scalar properties
  221    222   
    /// Test ID: Ec2XmlIntEnums
  222    223   
    #[::tokio::test]
  223         -
    #[allow(unused_mut)]
         224  +
    #[::tracing_test::traced_test]
  224    225   
    async fn ec2_xml_int_enums_response() {
  225    226   
        let expected_output = crate::operation::xml_int_enums::XmlIntEnumsOutput::builder()
  226    227   
            .set_int_enum1(::std::option::Option::Some(1))
  227    228   
            .set_int_enum2(::std::option::Option::Some(2))
  228    229   
            .set_int_enum3(::std::option::Option::Some(3))
  229    230   
            .set_int_enum_list(::std::option::Option::Some(vec![1, 2]))
  230    231   
            .set_int_enum_set(::std::option::Option::Some(vec![1, 2]))
  231    232   
            .set_int_enum_map(::std::option::Option::Some({
  232    233   
                let mut ret = ::std::collections::HashMap::new();
  233    234   
                ret.insert("a".to_owned(), 1);

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_lists.rs

@@ -178,178 +242,243 @@
  198    198   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  199    199   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  200    200   
        })?;
  201    201   
        cfg.interceptor_state()
  202    202   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  203    203   
        ::std::result::Result::Ok(())
  204    204   
    }
  205    205   
}
  206    206   
#[allow(unreachable_code, unused_variables)]
  207    207   
#[cfg(test)]
  208         -
mod xml_lists_request_test {
         208  +
mod xml_lists_test {
         209  +
  209    210   
    /// Tests for XML list serialization
  210    211   
    /// Test ID: Ec2XmlLists
  211    212   
    #[::tokio::test]
  212         -
    #[allow(unused_mut)]
         213  +
    #[::tracing_test::traced_test]
  213    214   
    async fn ec2_xml_lists_response() {
  214    215   
        let expected_output = crate::operation::xml_lists::XmlListsOutput::builder()
  215    216   
            .set_string_list(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  216    217   
            .set_string_set(::std::option::Option::Some(vec!["foo".to_owned(), "bar".to_owned()]))
  217    218   
            .set_integer_list(::std::option::Option::Some(vec![1, 2]))
  218    219   
            .set_boolean_list(::std::option::Option::Some(vec![true, false]))
  219    220   
            .set_timestamp_list(::std::option::Option::Some(vec![
  220    221   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  221    222   
                ::aws_smithy_types::DateTime::from_fractional_secs(1398796238, 0_f64),
  222    223   
            ]))

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_namespaces.rs

@@ -189,189 +253,254 @@
  209    209   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  210    210   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  211    211   
        })?;
  212    212   
        cfg.interceptor_state()
  213    213   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  214    214   
        ::std::result::Result::Ok(())
  215    215   
    }
  216    216   
}
  217    217   
#[allow(unreachable_code, unused_variables)]
  218    218   
#[cfg(test)]
  219         -
mod xml_namespaces_request_test {
         219  +
mod xml_namespaces_test {
         220  +
  220    221   
    /// Serializes XML namespaces
  221    222   
    /// Test ID: Ec2XmlNamespaces
  222    223   
    #[::tokio::test]
  223         -
    #[allow(unused_mut)]
         224  +
    #[::tracing_test::traced_test]
  224    225   
    async fn ec2_xml_namespaces_response() {
  225    226   
        let expected_output = crate::operation::xml_namespaces::XmlNamespacesOutput::builder()
  226    227   
            .set_nested(::std::option::Option::Some(
  227    228   
                crate::types::XmlNamespaceNested::builder()
  228    229   
                    .set_foo(::std::option::Option::Some("Foo".to_owned()))
  229    230   
                    .set_values(::std::option::Option::Some(vec!["Bar".to_owned(), "Baz".to_owned()]))
  230    231   
                    .build(),
  231    232   
            ))
  232    233   
            .build();
  233    234   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()

tmp-codegen-diff/codegen-client-test/ec2_query/rust-client-codegen/src/operation/xml_timestamps.rs

@@ -189,189 +607,608 @@
  209    209   
        let params = crate::config::endpoint::Params::builder().build().map_err(|err| {
  210    210   
            ::aws_smithy_runtime_api::client::interceptors::error::ContextAttachedError::new("endpoint params could not be built", err)
  211    211   
        })?;
  212    212   
        cfg.interceptor_state()
  213    213   
            .store_put(::aws_smithy_runtime_api::client::endpoint::EndpointResolverParams::new(params));
  214    214   
        ::std::result::Result::Ok(())
  215    215   
    }
  216    216   
}
  217    217   
#[allow(unreachable_code, unused_variables)]
  218    218   
#[cfg(test)]
  219         -
mod xml_timestamps_request_test {
         219  +
mod xml_timestamps_test {
         220  +
  220    221   
    /// Tests how normal timestamps are serialized
  221    222   
    /// Test ID: Ec2XmlTimestamps
  222    223   
    #[::tokio::test]
  223         -
    #[allow(unused_mut)]
         224  +
    #[::tracing_test::traced_test]
  224    225   
    async fn ec2_xml_timestamps_response() {
  225    226   
        let expected_output = crate::operation::xml_timestamps::XmlTimestampsOutput::builder()
  226    227   
            .set_normal(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  227    228   
                1398796238, 0_f64,
  228    229   
            )))
  229    230   
            .build();
  230    231   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  231    232   
        .header("Content-Type", "text/xml;charset=UTF-8")
  232    233   
        .status(200)
  233    234   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlTimestampsResponse xmlns=\"https://example.com/\">\n    <normal>2014-04-29T18:30:38Z</normal>\n    <RequestId>requestid</RequestId>\n</XmlTimestampsResponse>\n"))
  234    235   
                    .unwrap()
  235    236   
                    ).unwrap();
  236    237   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  237    238   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  238    239   
  239    240   
        let op = crate::operation::xml_timestamps::XmlTimestamps::new();
  240    241   
        let config = op.config().expect("the operation has config");
  241    242   
        let de = config
  242    243   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  243    244   
            .expect("the config must have a deserializer");
  244    245   
  245    246   
        let parsed = de.deserialize_streaming(&mut http_response);
  246    247   
        let parsed = parsed.unwrap_or_else(|| {
  247    248   
            let http_response =
  248    249   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  249    250   
            de.deserialize_nonstreaming(&http_response)
  250    251   
        });
  251    252   
        let parsed = parsed
  252    253   
            .expect("should be successful response")
  253    254   
            .downcast::<crate::operation::xml_timestamps::XmlTimestampsOutput>()
  254    255   
            .unwrap();
  255    256   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  256    257   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  257    258   
        ::pretty_assertions::assert_eq!(
  258    259   
            parsed.date_time_on_target,
  259    260   
            expected_output.date_time_on_target,
  260    261   
            "Unexpected value for `date_time_on_target`"
  261    262   
        );
  262    263   
        ::pretty_assertions::assert_eq!(
  263    264   
            parsed.epoch_seconds,
  264    265   
            expected_output.epoch_seconds,
  265    266   
            "Unexpected value for `epoch_seconds`"
  266    267   
        );
  267    268   
        ::pretty_assertions::assert_eq!(
  268    269   
            parsed.epoch_seconds_on_target,
  269    270   
            expected_output.epoch_seconds_on_target,
  270    271   
            "Unexpected value for `epoch_seconds_on_target`"
  271    272   
        );
  272    273   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  273    274   
        ::pretty_assertions::assert_eq!(
  274    275   
            parsed.http_date_on_target,
  275    276   
            expected_output.http_date_on_target,
  276    277   
            "Unexpected value for `http_date_on_target`"
  277    278   
        );
  278    279   
    }
  279    280   
    /// Ensures that the timestampFormat of date-time works like normal timestamps
  280    281   
    /// Test ID: Ec2XmlTimestampsWithDateTimeFormat
  281    282   
    #[::tokio::test]
  282         -
    #[allow(unused_mut)]
         283  +
    #[::tracing_test::traced_test]
  283    284   
    async fn ec2_xml_timestamps_with_date_time_format_response() {
  284    285   
        let expected_output = crate::operation::xml_timestamps::XmlTimestampsOutput::builder()
  285    286   
            .set_date_time(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  286    287   
                1398796238, 0_f64,
  287    288   
            )))
  288    289   
            .build();
  289    290   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  290    291   
        .header("Content-Type", "text/xml;charset=UTF-8")
  291    292   
        .status(200)
  292    293   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlTimestampsResponse xmlns=\"https://example.com/\">\n    <dateTime>2014-04-29T18:30:38Z</dateTime>\n    <RequestId>requestid</RequestId>\n</XmlTimestampsResponse>\n"))
  293    294   
                    .unwrap()
  294    295   
                    ).unwrap();
  295    296   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  296    297   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  297    298   
  298    299   
        let op = crate::operation::xml_timestamps::XmlTimestamps::new();
  299    300   
        let config = op.config().expect("the operation has config");
  300    301   
        let de = config
  301    302   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  302    303   
            .expect("the config must have a deserializer");
  303    304   
  304    305   
        let parsed = de.deserialize_streaming(&mut http_response);
  305    306   
        let parsed = parsed.unwrap_or_else(|| {
  306    307   
            let http_response =
  307    308   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  308    309   
            de.deserialize_nonstreaming(&http_response)
  309    310   
        });
  310    311   
        let parsed = parsed
  311    312   
            .expect("should be successful response")
  312    313   
            .downcast::<crate::operation::xml_timestamps::XmlTimestampsOutput>()
  313    314   
            .unwrap();
  314    315   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  315    316   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  316    317   
        ::pretty_assertions::assert_eq!(
  317    318   
            parsed.date_time_on_target,
  318    319   
            expected_output.date_time_on_target,
  319    320   
            "Unexpected value for `date_time_on_target`"
  320    321   
        );
  321    322   
        ::pretty_assertions::assert_eq!(
  322    323   
            parsed.epoch_seconds,
  323    324   
            expected_output.epoch_seconds,
  324    325   
            "Unexpected value for `epoch_seconds`"
  325    326   
        );
  326    327   
        ::pretty_assertions::assert_eq!(
  327    328   
            parsed.epoch_seconds_on_target,
  328    329   
            expected_output.epoch_seconds_on_target,
  329    330   
            "Unexpected value for `epoch_seconds_on_target`"
  330    331   
        );
  331    332   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  332    333   
        ::pretty_assertions::assert_eq!(
  333    334   
            parsed.http_date_on_target,
  334    335   
            expected_output.http_date_on_target,
  335    336   
            "Unexpected value for `http_date_on_target`"
  336    337   
        );
  337    338   
    }
  338    339   
    /// Ensures that the timestampFormat of date-time on the target shape works like normal timestamps
  339    340   
    /// Test ID: Ec2XmlTimestampsWithDateTimeOnTargetFormat
  340    341   
    #[::tokio::test]
  341         -
    #[allow(unused_mut)]
         342  +
    #[::tracing_test::traced_test]
  342    343   
    async fn ec2_xml_timestamps_with_date_time_on_target_format_response() {
  343    344   
        let expected_output = crate::operation::xml_timestamps::XmlTimestampsOutput::builder()
  344    345   
            .set_date_time_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  345    346   
                1398796238, 0_f64,
  346    347   
            )))
  347    348   
            .build();
  348    349   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  349    350   
        .header("Content-Type", "text/xml;charset=UTF-8")
  350    351   
        .status(200)
  351    352   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlTimestampsResponse xmlns=\"https://example.com/\">\n    <dateTimeOnTarget>2014-04-29T18:30:38Z</dateTimeOnTarget>\n    <RequestId>requestid</RequestId>\n</XmlTimestampsResponse>\n"))
  352    353   
                    .unwrap()
  353    354   
                    ).unwrap();
  354    355   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  355    356   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  356    357   
  357    358   
        let op = crate::operation::xml_timestamps::XmlTimestamps::new();
  358    359   
        let config = op.config().expect("the operation has config");
  359    360   
        let de = config
  360    361   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  361    362   
            .expect("the config must have a deserializer");
  362    363   
  363    364   
        let parsed = de.deserialize_streaming(&mut http_response);
  364    365   
        let parsed = parsed.unwrap_or_else(|| {
  365    366   
            let http_response =
  366    367   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  367    368   
            de.deserialize_nonstreaming(&http_response)
  368    369   
        });
  369    370   
        let parsed = parsed
  370    371   
            .expect("should be successful response")
  371    372   
            .downcast::<crate::operation::xml_timestamps::XmlTimestampsOutput>()
  372    373   
            .unwrap();
  373    374   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  374    375   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  375    376   
        ::pretty_assertions::assert_eq!(
  376    377   
            parsed.date_time_on_target,
  377    378   
            expected_output.date_time_on_target,
  378    379   
            "Unexpected value for `date_time_on_target`"
  379    380   
        );
  380    381   
        ::pretty_assertions::assert_eq!(
  381    382   
            parsed.epoch_seconds,
  382    383   
            expected_output.epoch_seconds,
  383    384   
            "Unexpected value for `epoch_seconds`"
  384    385   
        );
  385    386   
        ::pretty_assertions::assert_eq!(
  386    387   
            parsed.epoch_seconds_on_target,
  387    388   
            expected_output.epoch_seconds_on_target,
  388    389   
            "Unexpected value for `epoch_seconds_on_target`"
  389    390   
        );
  390    391   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  391    392   
        ::pretty_assertions::assert_eq!(
  392    393   
            parsed.http_date_on_target,
  393    394   
            expected_output.http_date_on_target,
  394    395   
            "Unexpected value for `http_date_on_target`"
  395    396   
        );
  396    397   
    }
  397    398   
    /// Ensures that the timestampFormat of epoch-seconds works
  398    399   
    /// Test ID: Ec2XmlTimestampsWithEpochSecondsFormat
  399    400   
    #[::tokio::test]
  400         -
    #[allow(unused_mut)]
         401  +
    #[::tracing_test::traced_test]
  401    402   
    async fn ec2_xml_timestamps_with_epoch_seconds_format_response() {
  402    403   
        let expected_output = crate::operation::xml_timestamps::XmlTimestampsOutput::builder()
  403    404   
            .set_epoch_seconds(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  404    405   
                1398796238, 0_f64,
  405    406   
            )))
  406    407   
            .build();
  407    408   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  408    409   
        .header("Content-Type", "text/xml;charset=UTF-8")
  409    410   
        .status(200)
  410    411   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlTimestampsResponse xmlns=\"https://example.com/\">\n    <epochSeconds>1398796238</epochSeconds>\n    <RequestId>requestid</RequestId>\n</XmlTimestampsResponse>\n"))
  411    412   
                    .unwrap()
  412    413   
                    ).unwrap();
  413    414   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  414    415   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  415    416   
  416    417   
        let op = crate::operation::xml_timestamps::XmlTimestamps::new();
  417    418   
        let config = op.config().expect("the operation has config");
  418    419   
        let de = config
  419    420   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  420    421   
            .expect("the config must have a deserializer");
  421    422   
  422    423   
        let parsed = de.deserialize_streaming(&mut http_response);
  423    424   
        let parsed = parsed.unwrap_or_else(|| {
  424    425   
            let http_response =
  425    426   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  426    427   
            de.deserialize_nonstreaming(&http_response)
  427    428   
        });
  428    429   
        let parsed = parsed
  429    430   
            .expect("should be successful response")
  430    431   
            .downcast::<crate::operation::xml_timestamps::XmlTimestampsOutput>()
  431    432   
            .unwrap();
  432    433   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  433    434   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  434    435   
        ::pretty_assertions::assert_eq!(
  435    436   
            parsed.date_time_on_target,
  436    437   
            expected_output.date_time_on_target,
  437    438   
            "Unexpected value for `date_time_on_target`"
  438    439   
        );
  439    440   
        ::pretty_assertions::assert_eq!(
  440    441   
            parsed.epoch_seconds,
  441    442   
            expected_output.epoch_seconds,
  442    443   
            "Unexpected value for `epoch_seconds`"
  443    444   
        );
  444    445   
        ::pretty_assertions::assert_eq!(
  445    446   
            parsed.epoch_seconds_on_target,
  446    447   
            expected_output.epoch_seconds_on_target,
  447    448   
            "Unexpected value for `epoch_seconds_on_target`"
  448    449   
        );
  449    450   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  450    451   
        ::pretty_assertions::assert_eq!(
  451    452   
            parsed.http_date_on_target,
  452    453   
            expected_output.http_date_on_target,
  453    454   
            "Unexpected value for `http_date_on_target`"
  454    455   
        );
  455    456   
    }
  456    457   
    /// Ensures that the timestampFormat of epoch-seconds on the target shape works
  457    458   
    /// Test ID: Ec2XmlTimestampsWithEpochSecondsOnTargetFormat
  458    459   
    #[::tokio::test]
  459         -
    #[allow(unused_mut)]
         460  +
    #[::tracing_test::traced_test]
  460    461   
    async fn ec2_xml_timestamps_with_epoch_seconds_on_target_format_response() {
  461    462   
        let expected_output = crate::operation::xml_timestamps::XmlTimestampsOutput::builder()
  462    463   
            .set_epoch_seconds_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  463    464   
                1398796238, 0_f64,
  464    465   
            )))
  465    466   
            .build();
  466    467   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  467    468   
        .header("Content-Type", "text/xml;charset=UTF-8")
  468    469   
        .status(200)
  469    470   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlTimestampsResponse xmlns=\"https://example.com/\">\n    <epochSecondsOnTarget>1398796238</epochSecondsOnTarget>\n    <RequestId>requestid</RequestId>\n</XmlTimestampsResponse>\n"))
  470    471   
                    .unwrap()
  471    472   
                    ).unwrap();
  472    473   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  473    474   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  474    475   
  475    476   
        let op = crate::operation::xml_timestamps::XmlTimestamps::new();
  476    477   
        let config = op.config().expect("the operation has config");
  477    478   
        let de = config
  478    479   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  479    480   
            .expect("the config must have a deserializer");
  480    481   
  481    482   
        let parsed = de.deserialize_streaming(&mut http_response);
  482    483   
        let parsed = parsed.unwrap_or_else(|| {
  483    484   
            let http_response =
  484    485   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  485    486   
            de.deserialize_nonstreaming(&http_response)
  486    487   
        });
  487    488   
        let parsed = parsed
  488    489   
            .expect("should be successful response")
  489    490   
            .downcast::<crate::operation::xml_timestamps::XmlTimestampsOutput>()
  490    491   
            .unwrap();
  491    492   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  492    493   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  493    494   
        ::pretty_assertions::assert_eq!(
  494    495   
            parsed.date_time_on_target,
  495    496   
            expected_output.date_time_on_target,
  496    497   
            "Unexpected value for `date_time_on_target`"
  497    498   
        );
  498    499   
        ::pretty_assertions::assert_eq!(
  499    500   
            parsed.epoch_seconds,
  500    501   
            expected_output.epoch_seconds,
  501    502   
            "Unexpected value for `epoch_seconds`"
  502    503   
        );
  503    504   
        ::pretty_assertions::assert_eq!(
  504    505   
            parsed.epoch_seconds_on_target,
  505    506   
            expected_output.epoch_seconds_on_target,
  506    507   
            "Unexpected value for `epoch_seconds_on_target`"
  507    508   
        );
  508    509   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  509    510   
        ::pretty_assertions::assert_eq!(
  510    511   
            parsed.http_date_on_target,
  511    512   
            expected_output.http_date_on_target,
  512    513   
            "Unexpected value for `http_date_on_target`"
  513    514   
        );
  514    515   
    }
  515    516   
    /// Ensures that the timestampFormat of http-date works
  516    517   
    /// Test ID: Ec2XmlTimestampsWithHttpDateFormat
  517    518   
    #[::tokio::test]
  518         -
    #[allow(unused_mut)]
         519  +
    #[::tracing_test::traced_test]
  519    520   
    async fn ec2_xml_timestamps_with_http_date_format_response() {
  520    521   
        let expected_output = crate::operation::xml_timestamps::XmlTimestampsOutput::builder()
  521    522   
            .set_http_date(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  522    523   
                1398796238, 0_f64,
  523    524   
            )))
  524    525   
            .build();
  525    526   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  526    527   
        .header("Content-Type", "text/xml;charset=UTF-8")
  527    528   
        .status(200)
  528    529   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlTimestampsResponse xmlns=\"https://example.com/\">\n    <httpDate>Tue, 29 Apr 2014 18:30:38 GMT</httpDate>\n    <RequestId>requestid</RequestId>\n</XmlTimestampsResponse>\n"))
  529    530   
                    .unwrap()
  530    531   
                    ).unwrap();
  531    532   
        use ::aws_smithy_runtime_api::client::runtime_plugin::RuntimePlugin;
  532    533   
        use ::aws_smithy_runtime_api::client::ser_de::DeserializeResponse;
  533    534   
  534    535   
        let op = crate::operation::xml_timestamps::XmlTimestamps::new();
  535    536   
        let config = op.config().expect("the operation has config");
  536    537   
        let de = config
  537    538   
            .load::<::aws_smithy_runtime_api::client::ser_de::SharedResponseDeserializer>()
  538    539   
            .expect("the config must have a deserializer");
  539    540   
  540    541   
        let parsed = de.deserialize_streaming(&mut http_response);
  541    542   
        let parsed = parsed.unwrap_or_else(|| {
  542    543   
            let http_response =
  543    544   
                http_response.map(|body| ::aws_smithy_types::body::SdkBody::from(::bytes::Bytes::copy_from_slice(body.bytes().unwrap())));
  544    545   
            de.deserialize_nonstreaming(&http_response)
  545    546   
        });
  546    547   
        let parsed = parsed
  547    548   
            .expect("should be successful response")
  548    549   
            .downcast::<crate::operation::xml_timestamps::XmlTimestampsOutput>()
  549    550   
            .unwrap();
  550    551   
        ::pretty_assertions::assert_eq!(parsed.normal, expected_output.normal, "Unexpected value for `normal`");
  551    552   
        ::pretty_assertions::assert_eq!(parsed.date_time, expected_output.date_time, "Unexpected value for `date_time`");
  552    553   
        ::pretty_assertions::assert_eq!(
  553    554   
            parsed.date_time_on_target,
  554    555   
            expected_output.date_time_on_target,
  555    556   
            "Unexpected value for `date_time_on_target`"
  556    557   
        );
  557    558   
        ::pretty_assertions::assert_eq!(
  558    559   
            parsed.epoch_seconds,
  559    560   
            expected_output.epoch_seconds,
  560    561   
            "Unexpected value for `epoch_seconds`"
  561    562   
        );
  562    563   
        ::pretty_assertions::assert_eq!(
  563    564   
            parsed.epoch_seconds_on_target,
  564    565   
            expected_output.epoch_seconds_on_target,
  565    566   
            "Unexpected value for `epoch_seconds_on_target`"
  566    567   
        );
  567    568   
        ::pretty_assertions::assert_eq!(parsed.http_date, expected_output.http_date, "Unexpected value for `http_date`");
  568    569   
        ::pretty_assertions::assert_eq!(
  569    570   
            parsed.http_date_on_target,
  570    571   
            expected_output.http_date_on_target,
  571    572   
            "Unexpected value for `http_date_on_target`"
  572    573   
        );
  573    574   
    }
  574    575   
    /// Ensures that the timestampFormat of http-date on the target shape works
  575    576   
    /// Test ID: Ec2XmlTimestampsWithHttpDateOnTargetFormat
  576    577   
    #[::tokio::test]
  577         -
    #[allow(unused_mut)]
         578  +
    #[::tracing_test::traced_test]
  578    579   
    async fn ec2_xml_timestamps_with_http_date_on_target_format_response() {
  579    580   
        let expected_output = crate::operation::xml_timestamps::XmlTimestampsOutput::builder()
  580    581   
            .set_http_date_on_target(::std::option::Option::Some(::aws_smithy_types::DateTime::from_fractional_secs(
  581    582   
                1398796238, 0_f64,
  582    583   
            )))
  583    584   
            .build();
  584    585   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(::http::response::Builder::new()
  585    586   
        .header("Content-Type", "text/xml;charset=UTF-8")
  586    587   
        .status(200)
  587    588   
                    .body(::aws_smithy_types::body::SdkBody::from("<XmlTimestampsResponse xmlns=\"https://example.com/\">\n    <httpDateOnTarget>Tue, 29 Apr 2014 18:30:38 GMT</httpDateOnTarget>\n    <RequestId>requestid</RequestId>\n</XmlTimestampsResponse>\n"))

tmp-codegen-diff/codegen-client-test/json_rpc10/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_rpc10/rust-client-codegen/src/operation/empty_input_and_empty_output.rs

@@ -201,201 +292,293 @@
  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 empty_input_and_empty_output_request_test {
         231  +
mod empty_input_and_empty_output_test {
         232  +
  232    233   
    /// Clients must always send an empty object if input is modeled.
  233    234   
    /// Test ID: AwsJson10EmptyInputAndEmptyOutput
  234    235   
    #[::tokio::test]
  235         -
    #[allow(unused_mut)]
         236  +
    #[::tracing_test::traced_test]
  236    237   
    async fn aws_json10_empty_input_and_empty_output_request() {
  237    238   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  238    239   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  239    240   
  240    241   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  241    242   
        let result = client.empty_input_and_empty_output().send().await;
  242    243   
        let _ = dbg!(result);
  243    244   
        let http_request = request_receiver.expect_request();
  244    245   
        let expected_headers = [
  245    246   
            ("Content-Type", "application/x-amz-json-1.0"),
  246    247   
            ("X-Amz-Target", "JsonRpc10.EmptyInputAndEmptyOutput"),
  247    248   
        ];
  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(::aws_smithy_protocol_test::validate_body(
  251    252   
            body,
  252    253   
            "{}",
  253    254   
            ::aws_smithy_protocol_test::MediaType::from("application/json"),
  254    255   
        ));
  255    256   
        let uri: ::http::Uri = http_request.uri().parse().expect("invalid URI sent");
  256    257   
        ::pretty_assertions::assert_eq!(http_request.method(), "POST", "method was incorrect");
  257    258   
        ::pretty_assertions::assert_eq!(uri.path(), "/", "path was incorrect");
  258    259   
    }
  259    260   
    /// A service will always return a JSON object for operations with modeled output.
  260    261   
    /// Test ID: AwsJson10EmptyInputAndEmptyOutputSendJsonObject
  261    262   
    #[::tokio::test]
  262         -
    #[allow(unused_mut)]
         263  +
    #[::tracing_test::traced_test]
  263    264   
    async fn aws_json10_empty_input_and_empty_output_send_json_object_response() {
  264    265   
        let expected_output = crate::operation::empty_input_and_empty_output::EmptyInputAndEmptyOutputOutput::builder().build();
  265    266   
        let mut http_response = ::aws_smithy_runtime_api::http::Response::try_from(
  266    267   
            ::http::response::Builder::new()
  267    268   
                .header("Content-Type", "application/x-amz-json-1.0")
  268    269   
                .status(200)
  269    270   
                .body(::aws_smithy_types::body::SdkBody::from("{}"))
  270    271   
                .unwrap(),
  271    272   
        )
  272    273   
        .unwrap();

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

@@ -197,197 +262,263 @@
  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 endpoint_operation_request_test {
         227  +
mod endpoint_operation_test {
         228  +
  228    229   
    /// Operations can prepend to the given host if they define the
  229    230   
    /// endpoint trait.
  230    231   
    /// Test ID: AwsJson10EndpointTrait
  231    232   
    #[::tokio::test]
  232         -
    #[allow(unused_mut)]
         233  +
    #[::tracing_test::traced_test]
  233    234   
    async fn aws_json10_endpoint_trait_request() {
  234    235   
        let (http_client, request_receiver) = ::aws_smithy_runtime::client::http::test_util::capture_request(None);
  235    236   
        let config_builder = crate::config::Config::builder().with_test_defaults().endpoint_url("https://example.com");
  236    237   
  237    238   
        let client = crate::Client::from_conf(config_builder.http_client(http_client).build());
  238    239   
        let result = client.endpoint_operation().send().await;
  239    240   
        let _ = dbg!(result);
  240    241   
        let http_request = request_receiver.expect_request();
  241    242   
        let body = http_request.body().bytes().expect("body should be strict");
  242    243   
        ::aws_smithy_protocol_test::assert_ok(::aws_smithy_protocol_test::validate_body(