|
1 | 1 | /* Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved. */
|
2 | 2 | package com.amazonaws.services.lambda.runtime.tests;
|
3 | 3 |
|
| 4 | +import com.amazonaws.services.lambda.runtime.events.APIGatewayCustomAuthorizerEvent; |
| 5 | +import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent; |
| 6 | +import com.amazonaws.services.lambda.runtime.events.APIGatewayV2CustomAuthorizerEvent; |
| 7 | +import com.amazonaws.services.lambda.runtime.events.APIGatewayV2HTTPEvent; |
| 8 | +import com.amazonaws.services.lambda.runtime.events.ActiveMQEvent; |
| 9 | +import com.amazonaws.services.lambda.runtime.events.ApplicationLoadBalancerRequestEvent; |
| 10 | +import com.amazonaws.services.lambda.runtime.events.CloudFormationCustomResourceEvent; |
| 11 | +import com.amazonaws.services.lambda.runtime.events.CloudFrontEvent; |
| 12 | +import com.amazonaws.services.lambda.runtime.events.CloudWatchCompositeAlarmEvent; |
| 13 | +import com.amazonaws.services.lambda.runtime.events.CloudWatchCompositeAlarmEvent.AlarmData; |
| 14 | +import com.amazonaws.services.lambda.runtime.events.CloudWatchCompositeAlarmEvent.Configuration; |
| 15 | +import com.amazonaws.services.lambda.runtime.events.CloudWatchCompositeAlarmEvent.PreviousState; |
| 16 | +import com.amazonaws.services.lambda.runtime.events.CloudWatchCompositeAlarmEvent.State; |
| 17 | +import com.amazonaws.services.lambda.runtime.events.CloudWatchLogsEvent; |
| 18 | +import com.amazonaws.services.lambda.runtime.events.CloudWatchMetricAlarmEvent; |
| 19 | +import com.amazonaws.services.lambda.runtime.events.CodeCommitEvent; |
| 20 | +import com.amazonaws.services.lambda.runtime.events.CognitoUserPoolPreTokenGenerationEventV2; |
| 21 | +import com.amazonaws.services.lambda.runtime.events.ConfigEvent; |
| 22 | +import com.amazonaws.services.lambda.runtime.events.ConnectEvent; |
| 23 | +import com.amazonaws.services.lambda.runtime.events.DynamodbEvent; |
| 24 | +import com.amazonaws.services.lambda.runtime.events.KafkaEvent; |
| 25 | +import com.amazonaws.services.lambda.runtime.events.KinesisEvent; |
| 26 | +import com.amazonaws.services.lambda.runtime.events.KinesisFirehoseEvent; |
| 27 | +import com.amazonaws.services.lambda.runtime.events.LambdaDestinationEvent; |
| 28 | +import com.amazonaws.services.lambda.runtime.events.LexEvent; |
| 29 | +import com.amazonaws.services.lambda.runtime.events.RabbitMQEvent; |
| 30 | +import com.amazonaws.services.lambda.runtime.events.S3Event; |
| 31 | +import com.amazonaws.services.lambda.runtime.events.SNSEvent; |
| 32 | +import com.amazonaws.services.lambda.runtime.events.SQSEvent; |
| 33 | +import com.amazonaws.services.lambda.runtime.events.ScheduledEvent; |
| 34 | +import com.amazonaws.services.lambda.runtime.events.SecretsManagerRotationEvent; |
4 | 35 | import com.amazonaws.services.lambda.runtime.events.models.dynamodb.AttributeValue;
|
5 | 36 | import com.amazonaws.services.lambda.runtime.events.models.dynamodb.Record;
|
6 | 37 | import com.amazonaws.services.lambda.runtime.events.models.dynamodb.StreamRecord;
|
|
15 | 46 | import static java.time.Instant.ofEpochSecond;
|
16 | 47 | import static org.assertj.core.api.Assertions.*;
|
17 | 48 |
|
18 |
| -import com.amazonaws.services.lambda.runtime.events.*; |
19 |
| - |
20 | 49 | public class EventLoaderTest {
|
21 | 50 |
|
22 | 51 | @Test
|
@@ -376,4 +405,108 @@ public void testLoadCognitoUserPoolPreTokenGenerationEventV2() {
|
376 | 405 | String[] requestScopes = request.getScopes();
|
377 | 406 | assertThat("aws.cognito.signin.user.admin").isEqualTo(requestScopes[0]);
|
378 | 407 | }
|
| 408 | + |
| 409 | + @Test |
| 410 | + public void testCloudWatchCompositeAlarmEvent() { |
| 411 | + CloudWatchCompositeAlarmEvent event = EventLoader.loadCloudWatchCompositeAlarmEvent("cloudwatch_composite_alarm.json"); |
| 412 | + assertThat(event).isNotNull(); |
| 413 | + assertThat(event) |
| 414 | + .returns("aws.cloudwatch", from(CloudWatchCompositeAlarmEvent::getSource)) |
| 415 | + .returns("arn:aws:cloudwatch:us-east-1:111122223333:alarm:SuppressionDemo.Main", from(CloudWatchCompositeAlarmEvent::getAlarmArn)) |
| 416 | + .returns("111122223333", from(CloudWatchCompositeAlarmEvent::getAccountId)) |
| 417 | + .returns("2023-08-04T12:56:46.138+0000", from(CloudWatchCompositeAlarmEvent::getTime)) |
| 418 | + .returns("us-east-1", from(CloudWatchCompositeAlarmEvent::getRegion)); |
| 419 | + |
| 420 | + AlarmData alarmData = event.getAlarmData(); |
| 421 | + assertThat(alarmData).isNotNull(); |
| 422 | + assertThat(alarmData) |
| 423 | + .returns("CompositeDemo.Main", from(AlarmData::getAlarmName)); |
| 424 | + |
| 425 | + State state = alarmData.getState(); |
| 426 | + assertThat(state).isNotNull(); |
| 427 | + assertThat(state) |
| 428 | + .returns("ALARM", from(State::getValue)) |
| 429 | + .returns("arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild transitioned to ALARM at Friday 04 August, 2023 12:54:46 UTC", from(State::getReason)) |
| 430 | + .returns("{\"triggeringAlarms\":[{\"arn\":\"arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild\",\"state\":{\"value\":\"ALARM\",\"timestamp\":\"2023-08-04T12:54:46.138+0000\"}}]}", from(State::getReasonData)) |
| 431 | + .returns("2023-08-04T12:56:46.138+0000", from(State::getTimestamp)); |
| 432 | + |
| 433 | + PreviousState previousState = alarmData.getPreviousState(); |
| 434 | + assertThat(previousState).isNotNull(); |
| 435 | + assertThat(previousState) |
| 436 | + .returns("ALARM", from(PreviousState::getValue)) |
| 437 | + .returns("arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild transitioned to ALARM at Friday 04 August, 2023 12:54:46 UTC", from(PreviousState::getReason)) |
| 438 | + .returns("{\"triggeringAlarms\":[{\"arn\":\"arn:aws:cloudwatch:us-east-1:111122223333:alarm:CompositeDemo.FirstChild\",\"state\":{\"value\":\"ALARM\",\"timestamp\":\"2023-08-04T12:54:46.138+0000\"}}]}", from(PreviousState::getReasonData)) |
| 439 | + .returns("2023-08-04T12:54:46.138+0000", from(PreviousState::getTimestamp)) |
| 440 | + .returns("WaitPeriod", from(PreviousState::getActionsSuppressedBy)) |
| 441 | + .returns("Actions suppressed by WaitPeriod", from(PreviousState::getActionsSuppressedReason)); |
| 442 | + |
| 443 | + Configuration configuration = alarmData.getConfiguration(); |
| 444 | + assertThat(configuration).isNotNull(); |
| 445 | + assertThat(configuration) |
| 446 | + .returns("ALARM(CompositeDemo.FirstChild) OR ALARM(CompositeDemo.SecondChild)", from(Configuration::getAlarmRule)) |
| 447 | + .returns("CompositeDemo.ActionsSuppressor", from(Configuration::getActionsSuppressor)) |
| 448 | + .returns(120, from(Configuration::getActionsSuppressorWaitPeriod)) |
| 449 | + .returns(180, from(Configuration::getActionsSuppressorExtensionPeriod)); |
| 450 | + } |
| 451 | + |
| 452 | + @Test |
| 453 | + public void testCloudWatchMetricAlarmEvent() { |
| 454 | + CloudWatchMetricAlarmEvent event = EventLoader.loadCloudWatchMetricAlarmEvent("cloudwatch_metric_alarm.json"); |
| 455 | + assertThat(event).isNotNull(); |
| 456 | + assertThat(event) |
| 457 | + .returns("aws.cloudwatch", from(CloudWatchMetricAlarmEvent::getSource)) |
| 458 | + .returns("arn:aws:cloudwatch:us-east-1:444455556666:alarm:lambda-demo-metric-alarm", from(CloudWatchMetricAlarmEvent::getAlarmArn)) |
| 459 | + .returns("444455556666", from(CloudWatchMetricAlarmEvent::getAccountId)) |
| 460 | + .returns("2023-08-04T12:36:15.490+0000", from(CloudWatchMetricAlarmEvent::getTime)) |
| 461 | + .returns("us-east-1", from(CloudWatchMetricAlarmEvent::getRegion)); |
| 462 | + |
| 463 | + CloudWatchMetricAlarmEvent.AlarmData alarmData = event.getAlarmData(); |
| 464 | + assertThat(alarmData).isNotNull(); |
| 465 | + assertThat(alarmData) |
| 466 | + .returns("lambda-demo-metric-alarm", from(CloudWatchMetricAlarmEvent.AlarmData::getAlarmName)); |
| 467 | + |
| 468 | + CloudWatchMetricAlarmEvent.State state = alarmData.getState(); |
| 469 | + assertThat(state).isNotNull(); |
| 470 | + assertThat(state) |
| 471 | + .returns("ALARM", from(CloudWatchMetricAlarmEvent.State::getValue)) |
| 472 | + .returns("test", from(CloudWatchMetricAlarmEvent.State::getReason)) |
| 473 | + .returns("2023-08-04T12:36:15.490+0000", from(CloudWatchMetricAlarmEvent.State::getTimestamp)); |
| 474 | + |
| 475 | + CloudWatchMetricAlarmEvent.PreviousState previousState = alarmData.getPreviousState(); |
| 476 | + assertThat(previousState).isNotNull(); |
| 477 | + assertThat(previousState) |
| 478 | + .returns("INSUFFICIENT_DATA", from(CloudWatchMetricAlarmEvent.PreviousState::getValue)) |
| 479 | + .returns("Insufficient Data: 5 datapoints were unknown.", from(CloudWatchMetricAlarmEvent.PreviousState::getReason)) |
| 480 | + .returns("{\"version\":\"1.0\",\"queryDate\":\"2023-08-04T12:31:29.591+0000\",\"statistic\":\"Average\",\"period\":60,\"recentDatapoints\":[],\"threshold\":5.0,\"evaluatedDatapoints\":[{\"timestamp\":\"2023-08-04T12:30:00.000+0000\"},{\"timestamp\":\"2023-08-04T12:29:00.000+0000\"},{\"timestamp\":\"2023-08-04T12:28:00.000+0000\"},{\"timestamp\":\"2023-08-04T12:27:00.000+0000\"},{\"timestamp\":\"2023-08-04T12:26:00.000+0000\"}]}", from(CloudWatchMetricAlarmEvent.PreviousState::getReasonData)) |
| 481 | + .returns("2023-08-04T12:31:29.595+0000", from(CloudWatchMetricAlarmEvent.PreviousState::getTimestamp)); |
| 482 | + |
| 483 | + CloudWatchMetricAlarmEvent.Configuration configuration = alarmData.getConfiguration(); |
| 484 | + assertThat(configuration).isNotNull(); |
| 485 | + assertThat(configuration) |
| 486 | + .returns("Metric Alarm to test Lambda actions", from(CloudWatchMetricAlarmEvent.Configuration::getDescription)); |
| 487 | + |
| 488 | + List<CloudWatchMetricAlarmEvent.Metric> metrics = configuration.getMetrics(); |
| 489 | + assertThat(metrics).hasSize(1); |
| 490 | + CloudWatchMetricAlarmEvent.Metric metric = metrics.get(0); |
| 491 | + assertThat(metric) |
| 492 | + .returns("1234e046-06f0-a3da-9534-EXAMPLEe4c", from(CloudWatchMetricAlarmEvent.Metric::getId)); |
| 493 | + |
| 494 | + CloudWatchMetricAlarmEvent.MetricStat metricStat = metric.getMetricStat(); |
| 495 | + assertThat(metricStat).isNotNull(); |
| 496 | + assertThat(metricStat) |
| 497 | + .returns(60, from(CloudWatchMetricAlarmEvent.MetricStat::getPeriod)) |
| 498 | + .returns("Average", from(CloudWatchMetricAlarmEvent.MetricStat::getStat)) |
| 499 | + .returns("Percent", from(CloudWatchMetricAlarmEvent.MetricStat::getUnit)); |
| 500 | + |
| 501 | + CloudWatchMetricAlarmEvent.MetricDetail metricDetail = metricStat.getMetric(); |
| 502 | + assertThat(metricDetail).isNotNull(); |
| 503 | + assertThat(metricDetail) |
| 504 | + .returns("AWS/Logs", from(CloudWatchMetricAlarmEvent.MetricDetail::getNamespace)) |
| 505 | + .returns("CallCount", from(CloudWatchMetricAlarmEvent.MetricDetail::getName)); |
| 506 | + |
| 507 | + Map<String, String> dimensions = metricDetail.getDimensions(); |
| 508 | + assertThat(dimensions).isNotEmpty().hasSize(1); |
| 509 | + assertThat(dimensions) |
| 510 | + .contains(entry("InstanceId", "i-12345678")); |
| 511 | + } |
379 | 512 | }
|
0 commit comments