Unverified Commit b9458df2 authored by Zelda Hessler's avatar Zelda Hessler Committed by GitHub
Browse files

add tracking for checksum algorithm and retry mode business metrics (#3944)

Adds business metric tracking for checksum algorithms and retry modes.
This PR includes tests.


----

_By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice._
parent 9b2236a2
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -138,7 +138,7 @@ dependencies = [

[[package]]
name = "aws-runtime"
version = "1.5.1"
version = "1.5.2"
dependencies = [
 "arbitrary",
 "aws-credential-types",
@@ -220,7 +220,7 @@ dependencies = [

[[package]]
name = "aws-smithy-async"
version = "1.2.2"
version = "1.2.3"
dependencies = [
 "futures-util",
 "pin-project-lite",
@@ -292,7 +292,7 @@ dependencies = [

[[package]]
name = "aws-smithy-runtime"
version = "1.7.5"
version = "1.7.6"
dependencies = [
 "aws-smithy-async",
 "aws-smithy-http",
@@ -332,7 +332,7 @@ dependencies = [

[[package]]
name = "aws-smithy-types"
version = "1.2.10"
version = "1.2.11"
dependencies = [
 "base64-simd",
 "bytes",
+2 −2
Original line number Diff line number Diff line
@@ -89,7 +89,7 @@ dependencies = [

[[package]]
name = "aws-runtime"
version = "1.5.1"
version = "1.5.0"
dependencies = [
 "aws-credential-types",
 "aws-sigv4",
@@ -195,7 +195,7 @@ dependencies = [

[[package]]
name = "aws-smithy-async"
version = "1.2.2"
version = "1.2.1"
dependencies = [
 "futures-util",
 "pin-project-lite",
+1 −1
Original line number Diff line number Diff line
[package]
name = "aws-runtime"
version = "1.5.1"
version = "1.5.2"
authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>"]
description = "Runtime support code for the AWS SDK. This crate isn't intended to be used directly."
edition = "2021"
+41 −3
Original line number Diff line number Diff line
@@ -127,7 +127,16 @@ iterable_enum!(
    AccountIdModeDisabled,
    AccountIdModeRequired,
    Sigv4aSigning,
    ResolvedAccountId
    ResolvedAccountId,
    FlexibleChecksumsReqCrc32,
    FlexibleChecksumsReqCrc32c,
    FlexibleChecksumsReqCrc64,
    FlexibleChecksumsReqSha1,
    FlexibleChecksumsReqSha256,
    FlexibleChecksumsReqWhenSupported,
    FlexibleChecksumsReqWhenRequired,
    FlexibleChecksumsResWhenSupported,
    FlexibleChecksumsResWhenRequired
);

pub(crate) trait ProvideBusinessMetric {
@@ -142,6 +151,25 @@ impl ProvideBusinessMetric for SmithySdkFeature {
            Paginator => Some(BusinessMetric::Paginator),
            GzipRequestCompression => Some(BusinessMetric::GzipRequestCompression),
            ProtocolRpcV2Cbor => Some(BusinessMetric::ProtocolRpcV2Cbor),
            RetryModeStandard => Some(BusinessMetric::RetryModeStandard),
            RetryModeAdaptive => Some(BusinessMetric::RetryModeAdaptive),
            FlexibleChecksumsReqCrc32 => Some(BusinessMetric::FlexibleChecksumsReqCrc32),
            FlexibleChecksumsReqCrc32c => Some(BusinessMetric::FlexibleChecksumsReqCrc32c),
            FlexibleChecksumsReqCrc64 => Some(BusinessMetric::FlexibleChecksumsReqCrc64),
            FlexibleChecksumsReqSha1 => Some(BusinessMetric::FlexibleChecksumsReqSha1),
            FlexibleChecksumsReqSha256 => Some(BusinessMetric::FlexibleChecksumsReqSha256),
            FlexibleChecksumsReqWhenSupported => {
                Some(BusinessMetric::FlexibleChecksumsReqWhenSupported)
            }
            FlexibleChecksumsReqWhenRequired => {
                Some(BusinessMetric::FlexibleChecksumsReqWhenRequired)
            }
            FlexibleChecksumsResWhenSupported => {
                Some(BusinessMetric::FlexibleChecksumsResWhenSupported)
            }
            FlexibleChecksumsResWhenRequired => {
                Some(BusinessMetric::FlexibleChecksumsResWhenRequired)
            }
            otherwise => {
                // This may occur if a customer upgrades only the `aws-smithy-runtime-api` crate
                // while continuing to use an outdated version of an SDK crate or the `aws-runtime`
@@ -260,7 +288,16 @@ mod tests {
  "ACCOUNT_ID_MODE_DISABLED": "Q",
  "ACCOUNT_ID_MODE_REQUIRED": "R",
  "SIGV4A_SIGNING": "S",
  "RESOLVED_ACCOUNT_ID": "T"
  "RESOLVED_ACCOUNT_ID": "T",
  "FLEXIBLE_CHECKSUMS_REQ_CRC32" : "U",
  "FLEXIBLE_CHECKSUMS_REQ_CRC32C" : "V",
  "FLEXIBLE_CHECKSUMS_REQ_CRC64" : "W",
  "FLEXIBLE_CHECKSUMS_REQ_SHA1" : "X",
  "FLEXIBLE_CHECKSUMS_REQ_SHA256" : "Y",
  "FLEXIBLE_CHECKSUMS_REQ_WHEN_SUPPORTED" : "Z",
  "FLEXIBLE_CHECKSUMS_REQ_WHEN_REQUIRED" : "a",
  "FLEXIBLE_CHECKSUMS_RES_WHEN_SUPPORTED" : "b",
  "FLEXIBLE_CHECKSUMS_RES_WHEN_REQUIRED" : "c"
}
        "#;

@@ -268,8 +305,9 @@ mod tests {
        assert_eq!(expected.len(), FEATURE_ID_TO_METRIC_VALUE.len());

        for (feature_id, metric_value) in &*FEATURE_ID_TO_METRIC_VALUE {
            let expected = expected.get(format!("{feature_id}").as_str());
            assert_eq!(
                expected.get(format!("{feature_id}").as_str()).unwrap(),
                expected.expect(&format!("Expected {feature_id} to have value `{metric_value}` but it was `{expected:?}` instead.")),
                metric_value,
            );
        }
+1 −0
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ internal fun RuntimeConfig.awsInlineableHttpRequestChecksum() =
            CargoDependency.smithyHttp(this),
            CargoDependency.smithyRuntimeApiClient(this),
            CargoDependency.smithyTypes(this),
            CargoDependency.TempFile,
        ),
    )

Loading