99} from "aws-cdk-lib/aws-lambda" ;
1010
1111import { AlarmWithAnnotation , LambdaFunctionMonitoring } from "../../../lib" ;
12+ import { addMonitoringDashboardsToStack } from "../../utils/SnapshotUtil" ;
1213import { TestMonitoringScope } from "../TestMonitoringScope" ;
1314
1415test ( "snapshot test: no alarms" , ( ) => {
@@ -55,7 +56,7 @@ test("snapshot test: all alarms", () => {
5556
5657 let numAlarmsCreated = 0 ;
5758
58- new LambdaFunctionMonitoring ( scope , {
59+ const monitoring = new LambdaFunctionMonitoring ( scope , {
5960 lambdaFunction,
6061 humanReadableName : "Dummy Lambda for testing" ,
6162 alarmFriendlyName : "DummyLambda" ,
@@ -143,6 +144,7 @@ test("snapshot test: all alarms", () => {
143144 } ,
144145 } ) ;
145146
147+ addMonitoringDashboardsToStack ( stack , monitoring ) ;
146148 expect ( numAlarmsCreated ) . toStrictEqual ( 13 ) ;
147149 expect ( Template . fromStack ( stack ) ) . toMatchSnapshot ( ) ;
148150} ) ;
@@ -201,10 +203,11 @@ test("snapshot test: all alarms, alarmPrefix on error dedupeString", () => {
201203
202204 let numAlarmsCreated = 0 ;
203205
204- new LambdaFunctionMonitoring ( scope , {
206+ const monitoring = new LambdaFunctionMonitoring ( scope , {
205207 lambdaFunction,
206208 humanReadableName : "Dummy Lambda for testing" ,
207209 alarmFriendlyName : "DummyLambda" ,
210+ lambdaInsightsEnabled : true ,
208211 addFaultRateAlarm : {
209212 Warning : {
210213 maxErrorRate : 1 ,
@@ -282,14 +285,45 @@ test("snapshot test: all alarms, alarmPrefix on error dedupeString", () => {
282285 maxAgeInMillis : 1_000_000 ,
283286 } ,
284287 } ,
288+ addEnhancedMonitoringMaxCpuTotalTimeAlarm : {
289+ Warning : {
290+ maxDuration : Duration . millis ( 100 ) ,
291+ } ,
292+ } ,
293+ addEnhancedMonitoringP90CpuTotalTimeAlarm : {
294+ Warning : {
295+ maxDuration : Duration . millis ( 100 ) ,
296+ } ,
297+ } ,
298+ addEnhancedMonitoringAvgCpuTotalTimeAlarm : {
299+ Warning : {
300+ maxDuration : Duration . millis ( 100 ) ,
301+ } ,
302+ } ,
303+ addEnhancedMonitoringMaxMemoryUtilizationAlarm : {
304+ Warning : {
305+ maxUsagePercent : 50 ,
306+ } ,
307+ } ,
308+ addEnhancedMonitoringP90MemoryUtilizationAlarm : {
309+ Warning : {
310+ maxUsagePercent : 50 ,
311+ } ,
312+ } ,
313+ addEnhancedMonitoringAvgMemoryUtilizationAlarm : {
314+ Warning : {
315+ maxUsagePercent : 50 ,
316+ } ,
317+ } ,
285318 useCreatedAlarms : {
286319 consume ( alarms : AlarmWithAnnotation [ ] ) {
287320 numAlarmsCreated = alarms . length ;
288321 } ,
289322 } ,
290323 } ) ;
291324
292- expect ( numAlarmsCreated ) . toStrictEqual ( 13 ) ;
325+ addMonitoringDashboardsToStack ( stack , monitoring ) ;
326+ expect ( numAlarmsCreated ) . toStrictEqual ( 19 ) ;
293327 expect ( Template . fromStack ( stack ) ) . toMatchSnapshot ( ) ;
294328} ) ;
295329
@@ -307,10 +341,11 @@ test("snapshot test: all alarms, alarmPrefix on latency dedupeString", () => {
307341
308342 let numAlarmsCreated = 0 ;
309343
310- new LambdaFunctionMonitoring ( scope , {
344+ const monitoring = new LambdaFunctionMonitoring ( scope , {
311345 lambdaFunction,
312346 humanReadableName : "Dummy Lambda for testing" ,
313347 alarmFriendlyName : "DummyLambda" ,
348+ lambdaInsightsEnabled : true ,
314349 addFaultRateAlarm : {
315350 Warning : {
316351 maxErrorRate : 1 ,
@@ -388,13 +423,103 @@ test("snapshot test: all alarms, alarmPrefix on latency dedupeString", () => {
388423 maxAgeInMillis : 1_000_000 ,
389424 } ,
390425 } ,
426+ addEnhancedMonitoringMaxCpuTotalTimeAlarm : {
427+ Warning : {
428+ maxDuration : Duration . millis ( 100 ) ,
429+ } ,
430+ } ,
431+ addEnhancedMonitoringP90CpuTotalTimeAlarm : {
432+ Warning : {
433+ maxDuration : Duration . millis ( 100 ) ,
434+ } ,
435+ } ,
436+ addEnhancedMonitoringAvgCpuTotalTimeAlarm : {
437+ Warning : {
438+ maxDuration : Duration . millis ( 100 ) ,
439+ } ,
440+ } ,
441+ addEnhancedMonitoringMaxMemoryUtilizationAlarm : {
442+ Warning : {
443+ maxUsagePercent : 50 ,
444+ } ,
445+ } ,
446+ addEnhancedMonitoringP90MemoryUtilizationAlarm : {
447+ Warning : {
448+ maxUsagePercent : 50 ,
449+ } ,
450+ } ,
451+ addEnhancedMonitoringAvgMemoryUtilizationAlarm : {
452+ Warning : {
453+ maxUsagePercent : 50 ,
454+ } ,
455+ } ,
391456 useCreatedAlarms : {
392457 consume ( alarms : AlarmWithAnnotation [ ] ) {
393458 numAlarmsCreated = alarms . length ;
394459 } ,
395460 } ,
396461 } ) ;
397462
398- expect ( numAlarmsCreated ) . toStrictEqual ( 13 ) ;
463+ addMonitoringDashboardsToStack ( stack , monitoring ) ;
464+ expect ( numAlarmsCreated ) . toStrictEqual ( 19 ) ;
399465 expect ( Template . fromStack ( stack ) ) . toMatchSnapshot ( ) ;
400466} ) ;
467+
468+ test ( "doesn't create alarms for enhanced Lambda Insights metrics if not enabled" , ( ) => {
469+ const stack = new Stack ( ) ;
470+
471+ const scope = new TestMonitoringScope ( stack , "Scope" ) ;
472+
473+ const lambdaFunction = new Function ( stack , "Function" , {
474+ functionName : "DummyLambda" ,
475+ runtime : Runtime . NODEJS_12_X ,
476+ code : InlineCode . fromInline ( "{}" ) ,
477+ handler : "Dummy::handler" ,
478+ } ) ;
479+
480+ let numAlarmsCreated = 0 ;
481+
482+ new LambdaFunctionMonitoring ( scope , {
483+ lambdaFunction,
484+ humanReadableName : "Dummy Lambda for testing" ,
485+ alarmFriendlyName : "DummyLambda" ,
486+ lambdaInsightsEnabled : false ,
487+ addEnhancedMonitoringMaxCpuTotalTimeAlarm : {
488+ Warning : {
489+ maxDuration : Duration . millis ( 100 ) ,
490+ } ,
491+ } ,
492+ addEnhancedMonitoringP90CpuTotalTimeAlarm : {
493+ Warning : {
494+ maxDuration : Duration . millis ( 100 ) ,
495+ } ,
496+ } ,
497+ addEnhancedMonitoringAvgCpuTotalTimeAlarm : {
498+ Warning : {
499+ maxDuration : Duration . millis ( 100 ) ,
500+ } ,
501+ } ,
502+ addEnhancedMonitoringMaxMemoryUtilizationAlarm : {
503+ Warning : {
504+ maxUsagePercent : 50 ,
505+ } ,
506+ } ,
507+ addEnhancedMonitoringP90MemoryUtilizationAlarm : {
508+ Warning : {
509+ maxUsagePercent : 50 ,
510+ } ,
511+ } ,
512+ addEnhancedMonitoringAvgMemoryUtilizationAlarm : {
513+ Warning : {
514+ maxUsagePercent : 50 ,
515+ } ,
516+ } ,
517+ useCreatedAlarms : {
518+ consume ( alarms : AlarmWithAnnotation [ ] ) {
519+ numAlarmsCreated = alarms . length ;
520+ } ,
521+ } ,
522+ } ) ;
523+
524+ expect ( numAlarmsCreated ) . toStrictEqual ( 0 ) ;
525+ } ) ;
0 commit comments