in services/cloudwatch/src/it/java/software/amazon/awssdk/services/cloudwatch/CloudWatchIntegrationTest.java [174:247]
public void put_get_metricdata_list_metric_withRequestCompression_returns_success() {
RequestCompression requestCompressionTrait = RequestCompression.builder()
.encodings("gzip")
.isStreaming(false)
.build();
CompressionConfiguration compressionConfiguration = CompressionConfiguration.builder()
// uncompressed payload is 404 bytes
.minimumCompressionThresholdInBytes(100)
.build();
CloudWatchClient requestCompressionClient =
CloudWatchClient.builder()
.credentialsProvider(getCredentialsProvider())
.region(Region.US_WEST_2)
.overrideConfiguration(c -> c.putExecutionAttribute(SdkInternalExecutionAttribute.REQUEST_COMPRESSION,
requestCompressionTrait))
.build();
String measureName = this.getClass().getName() + System.currentTimeMillis();
MetricDatum datum = MetricDatum.builder().dimensions(
Dimension.builder().name("InstanceType").value("m1.small").build())
.metricName(measureName).timestamp(Instant.now())
.unit("Count").value(42.0).build();
requestCompressionClient.putMetricData(PutMetricDataRequest.builder()
.namespace("AWS.EC2")
.metricData(datum)
.overrideConfiguration(c -> c.compressionConfiguration(compressionConfiguration))
.build());
GetMetricStatisticsResponse result =
Waiter.run(() -> requestCompressionClient
.getMetricStatistics(r -> r.startTime(Instant.now().minus(Duration.ofDays(7)))
.namespace("AWS.EC2")
.period(60 * 60)
.dimensions(Dimension.builder().name("InstanceType")
.value("m1.small").build())
.metricName(measureName)
.statisticsWithStrings("Average", "Maximum", "Minimum", "Sum")
.endTime(Instant.now())))
.until(r -> r.datapoints().size() == 1)
.orFailAfter(Duration.ofMinutes(2));
assertNotNull(result.label());
assertEquals(measureName, result.label());
assertEquals(1, result.datapoints().size());
for (Datapoint datapoint : result.datapoints()) {
assertEquals(datum.value(), datapoint.average());
assertEquals(datum.value(), datapoint.maximum());
assertEquals(datum.value(), datapoint.minimum());
assertEquals(datum.value(), datapoint.sum());
assertNotNull(datapoint.timestamp());
assertEquals(datum.unit(), datapoint.unit());
}
ListMetricsResponse listResult = requestCompressionClient.listMetrics(ListMetricsRequest.builder().build());
boolean seenDimensions = false;
assertTrue(listResult.metrics().size() > 0);
for (Metric metric : listResult.metrics()) {
assertNotNull(metric.metricName());
assertNotNull(metric.namespace());
for (Dimension dimension : metric.dimensions()) {
seenDimensions = true;
assertNotNull(dimension.name());
assertNotNull(dimension.value());
}
}
assertTrue(seenDimensions);
}