Skip to content

Commit d00b9ed

Browse files
committed
misc: track business metrics change from set of string to set of business metrics
1 parent 41e0f90 commit d00b9ed

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

aws-runtime/aws-http/common/src/aws/sdk/kotlin/runtime/http/interceptors/BusinessMetricsInterceptor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ public class BusinessMetricsInterceptor : HttpInterceptor {
3535
/**
3636
* Makes sure the metrics do not exceed the maximum size and truncates them if so.
3737
*/
38-
private fun formatMetrics(metrics: MutableSet<String>): String {
38+
private fun formatMetrics(metrics: MutableSet<BusinessMetric>): String {
3939
if (metrics.isEmpty()) return ""
40-
val metricsString = metrics.joinToString(",", "m/")
40+
val metricsString = metrics.joinToString(",", "m/") { it.identifier }
4141
val metricsByteArray = metricsString.encodeToByteArray()
4242

4343
if (metricsByteArray.size <= BUSINESS_METRICS_MAX_LENGTH) return metricsString

aws-runtime/aws-http/common/test/aws/sdk/kotlin/runtime/http/interceptors/BusinessMetricsInterceptorTest.kt

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package aws.sdk.kotlin.runtime.http.interceptors
66

77
import aws.sdk.kotlin.runtime.http.BUSINESS_METRICS_MAX_LENGTH
88
import aws.sdk.kotlin.runtime.http.middleware.USER_AGENT
9+
import aws.smithy.kotlin.runtime.businessmetrics.BusinessMetric
910
import aws.smithy.kotlin.runtime.businessmetrics.SmithyBusinessMetric
1011
import aws.smithy.kotlin.runtime.businessmetrics.emitBusinessMetric
1112
import aws.smithy.kotlin.runtime.client.ProtocolRequestInterceptorContext
@@ -70,7 +71,11 @@ class BusinessMetricsInterceptorTest {
7071
executionContext.attributes[aws.smithy.kotlin.runtime.businessmetrics.BusinessMetrics] = mutableSetOf()
7172

7273
for (i in 0..1024) {
73-
executionContext.attributes[aws.smithy.kotlin.runtime.businessmetrics.BusinessMetrics].add(i.toString())
74+
executionContext.emitBusinessMetric(
75+
object : BusinessMetric {
76+
override val identifier: String = i.toString()
77+
},
78+
)
7479
}
7580

7681
val rawMetrics = executionContext[aws.smithy.kotlin.runtime.businessmetrics.BusinessMetrics]
@@ -91,9 +96,12 @@ class BusinessMetricsInterceptorTest {
9196
@Test
9297
fun malformedBusinessMetrics() = runTest {
9398
val executionContext = ExecutionContext()
99+
val reallyLongMetric = "All work and no play makes Jack a dull boy".repeat(1000)
94100

95-
executionContext.attributes[aws.smithy.kotlin.runtime.businessmetrics.BusinessMetrics] = mutableSetOf(
96-
"A".repeat(BUSINESS_METRICS_MAX_LENGTH),
101+
executionContext.attributes.emitBusinessMetric(
102+
object : BusinessMetric {
103+
override val identifier: String = reallyLongMetric
104+
},
97105
)
98106

99107
val interceptor = BusinessMetricsInterceptor()

0 commit comments

Comments
 (0)