Skip to content

Commit 02e43bf

Browse files
author
Pankaj Agrawal
committed
chore: clarify UX for setting default dimension with no dimension via test
1 parent 3144d03 commit 02e43bf

File tree

2 files changed

+70
-1
lines changed

2 files changed

+70
-1
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package software.amazon.lambda.powertools.metrics.handlers;
2+
3+
import com.amazonaws.services.lambda.runtime.Context;
4+
import com.amazonaws.services.lambda.runtime.RequestHandler;
5+
import software.amazon.cloudwatchlogs.emf.logger.MetricsLogger;
6+
import software.amazon.cloudwatchlogs.emf.model.Unit;
7+
import software.amazon.lambda.powertools.metrics.Metrics;
8+
import software.amazon.lambda.powertools.metrics.MetricsUtils;
9+
10+
import static software.amazon.lambda.powertools.metrics.MetricsUtils.metricsLogger;
11+
import static software.amazon.lambda.powertools.metrics.MetricsUtils.withSingleMetric;
12+
13+
public class PowertoolsMetricsEnabledDefaultNoDimensionHandler implements RequestHandler<Object, Object> {
14+
15+
static {
16+
MetricsUtils.defaultDimensions();
17+
}
18+
19+
@Override
20+
@Metrics(namespace = "ExampleApplication", service = "booking")
21+
public Object handleRequest(Object input, Context context) {
22+
MetricsLogger metricsLogger = metricsLogger();
23+
metricsLogger.putMetric("Metric1", 1, Unit.BYTES);
24+
25+
withSingleMetric("Metric2", 1, Unit.COUNT, log -> {});
26+
27+
return null;
28+
}
29+
}

powertools-metrics/src/test/java/software/amazon/lambda/powertools/metrics/internal/LambdaMetricsAspectTest.java

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import software.amazon.lambda.powertools.metrics.ValidationException;
2525
import software.amazon.lambda.powertools.metrics.handlers.PowertoolsMetricsColdStartEnabledHandler;
2626
import software.amazon.lambda.powertools.metrics.handlers.PowertoolsMetricsEnabledDefaultDimensionHandler;
27+
import software.amazon.lambda.powertools.metrics.handlers.PowertoolsMetricsEnabledDefaultNoDimensionHandler;
2728
import software.amazon.lambda.powertools.metrics.handlers.PowertoolsMetricsEnabledHandler;
2829
import software.amazon.lambda.powertools.metrics.handlers.PowertoolsMetricsEnabledStreamHandler;
2930
import software.amazon.lambda.powertools.metrics.handlers.PowertoolsMetricsExceptionWhenNoMetricsHandler;
@@ -153,6 +154,45 @@ public void metricsWithDefaultDimensionSpecified() {
153154
}
154155
}
155156

157+
@Test
158+
public void metricsWithDefaultNoDimensionSpecified() {
159+
try (MockedStatic<SystemWrapper> mocked = mockStatic(SystemWrapper.class);
160+
MockedStatic<software.amazon.lambda.powertools.core.internal.SystemWrapper> internalWrapper = mockStatic(software.amazon.lambda.powertools.core.internal.SystemWrapper.class)) {
161+
162+
mocked.when(() -> SystemWrapper.getenv("AWS_EMF_ENVIRONMENT")).thenReturn("Lambda");
163+
internalWrapper.when(() -> getenv("_X_AMZN_TRACE_ID")).thenReturn("Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1\"");
164+
165+
requestHandler = new PowertoolsMetricsEnabledDefaultNoDimensionHandler();
166+
167+
requestHandler.handleRequest("input", context);
168+
169+
assertThat(out.toString().split("\n"))
170+
.hasSize(2)
171+
.satisfies(s -> {
172+
Map<String, Object> logAsJson = readAsJson(s[0]);
173+
174+
assertThat(logAsJson)
175+
.containsEntry("Metric2", 1.0)
176+
.containsKey("_aws")
177+
.containsEntry("xray_trace_id", "1-5759e988-bd862e3fe1be46a994272793")
178+
.containsEntry("function_request_id", "123ABC");
179+
180+
Map<String, Object> aws = (Map<String, Object>) logAsJson.get("_aws");
181+
182+
assertThat(aws.get("CloudWatchMetrics"))
183+
.asString()
184+
.contains("Namespace=ExampleApplication");
185+
186+
logAsJson = readAsJson(s[1]);
187+
188+
assertThat(logAsJson)
189+
.containsEntry("Metric1", 1.0)
190+
.containsEntry("function_request_id", "123ABC")
191+
.containsKey("_aws");
192+
});
193+
}
194+
}
195+
156196
@Test
157197
public void metricsWithColdStart() {
158198

@@ -263,7 +303,7 @@ public void exceptionWhenNoMetricsEmitted() {
263303
try (MockedStatic<SystemWrapper> mocked = mockStatic(SystemWrapper.class)) {
264304
mocked.when(() -> SystemWrapper.getenv("AWS_EMF_ENVIRONMENT")).thenReturn("Lambda");
265305

266-
MetricsUtils.defaultDimensions((DimensionSet) null);
306+
MetricsUtils.defaultDimensions(null);
267307
requestHandler = new PowertoolsMetricsExceptionWhenNoMetricsHandler();
268308

269309
assertThatExceptionOfType(ValidationException.class)

0 commit comments

Comments
 (0)