@@ -22,6 +22,7 @@ func TestAccMonitoringAlertPolicy(t *testing.T) {
22
22
"log" : testAccMonitoringAlertPolicy_log ,
23
23
"forecast" : testAccMonitoringAlertPolicy_forecast ,
24
24
"promql" : testAccMonitoringAlertPolicy_promql ,
25
+ "sql" : testAccMonitoringAlertPolicy_sql ,
25
26
}
26
27
27
28
for name , tc := range testCases {
@@ -235,6 +236,24 @@ func testAccMonitoringAlertPolicy_promql(t *testing.T) {
235
236
})
236
237
}
237
238
239
+ func testAccMonitoringAlertPolicy_sql (t * testing.T ) {
240
+
241
+ acctest .VcrTest (t , resource.TestCase {
242
+ PreCheck : func () { acctest .AccTestPreCheck (t ) },
243
+ ProtoV5ProviderFactories : acctest .ProtoV5ProviderFactories (t ),
244
+ CheckDestroy : testAccCheckAlertPolicyDestroyProducer (t ),
245
+ Steps : []resource.TestStep {
246
+ {
247
+ Config : testAccMonitoringAlertPolicy_sqlCfg (),
248
+ // SQL alerts require additional GCP resources to be created and billed,
249
+ // so we only run the plan test for now.
250
+ PlanOnly : true ,
251
+ ExpectNonEmptyPlan : true ,
252
+ },
253
+ },
254
+ })
255
+ }
256
+
238
257
func testAccMonitoringAlertPolicy_basicCfg (alertName , conditionName , aligner , filter , severity string ) string {
239
258
return fmt .Sprintf (`
240
259
resource "google_monitoring_alert_policy" "basic" {
@@ -479,3 +498,211 @@ resource "google_monitoring_alert_policy" "promql" {
479
498
}
480
499
` , alertName , conditionName )
481
500
}
501
+
502
+ func testAccMonitoringAlertPolicy_sqlCfg () string {
503
+ return fmt .Sprintf (`
504
+ resource "google_monitoring_alert_policy" "sql_minutes_row_count" {
505
+ display_name = "minutes_row_count"
506
+ combiner = "OR"
507
+ enabled = true
508
+
509
+ conditions {
510
+ display_name = "minutes_row_count"
511
+
512
+ condition_sql {
513
+ query = "SELECT severity, resource FROM project.global._Default._AllLogs WHERE severity IS NOT NULL"
514
+ minutes {
515
+ periodicity = 30
516
+ }
517
+ row_count_test {
518
+ comparison = "COMPARISON_GT"
519
+ threshold = "0"
520
+ }
521
+ }
522
+ }
523
+
524
+ severity = "WARNING"
525
+
526
+ documentation {
527
+ content = "test content"
528
+ mime_type = "text/markdown"
529
+ subject = "test subject"
530
+ links {
531
+ display_name = "link display name"
532
+ url = "http://mydomain.com"
533
+ }
534
+ }
535
+ }
536
+ resource "google_monitoring_alert_policy" "sql_minutes_boolean" {
537
+ display_name = "minutes_boolean"
538
+ combiner = "OR"
539
+ enabled = true
540
+
541
+ conditions {
542
+ display_name = "minutes_boolean"
543
+
544
+ condition_sql {
545
+ query = "SELECT severity, resource FROM project.global._Default._AllLogs WHERE severity IS NOT NULL"
546
+ minutes {
547
+ periodicity = 30
548
+ }
549
+ boolean_test {
550
+ column = "resource"
551
+ }
552
+ }
553
+ }
554
+
555
+ severity = "WARNING"
556
+
557
+ documentation {
558
+ content = "test content"
559
+ mime_type = "text/markdown"
560
+ subject = "test subject"
561
+ links {
562
+ display_name = "link display name"
563
+ url = "http://mydomain.com"
564
+ }
565
+ }
566
+ }
567
+ resource "google_monitoring_alert_policy" "sql_hourly_row_count" {
568
+ display_name = "hourly_row_count"
569
+ combiner = "OR"
570
+ enabled = true
571
+
572
+ conditions {
573
+ display_name = "hourly_row_count"
574
+
575
+ condition_sql {
576
+ query = "SELECT severity, resource FROM project.global._Default._AllLogs WHERE severity IS NOT NULL"
577
+ hourly {
578
+ periodicity = 3
579
+ minute_offset = 10
580
+ }
581
+ row_count_test {
582
+ comparison = "COMPARISON_GT"
583
+ threshold = "0"
584
+ }
585
+ }
586
+ }
587
+
588
+ severity = "WARNING"
589
+
590
+ documentation {
591
+ content = "test content"
592
+ mime_type = "text/markdown"
593
+ subject = "test subject"
594
+ links {
595
+ display_name = "link display name"
596
+ url = "http://mydomain.com"
597
+ }
598
+ }
599
+ }
600
+ resource "google_monitoring_alert_policy" "sql_hourly_boolean" {
601
+ display_name = "hourly_boolean"
602
+ combiner = "OR"
603
+ enabled = true
604
+
605
+ conditions {
606
+ display_name = "hourly_boolean"
607
+
608
+ condition_sql {
609
+ query = "SELECT severity, resource FROM project.global._Default._AllLogs WHERE severity IS NOT NULL"
610
+ hourly {
611
+ periodicity = 3
612
+ minute_offset = 10
613
+ }
614
+ boolean_test {
615
+ column = "resource"
616
+ }
617
+ }
618
+ }
619
+
620
+ severity = "WARNING"
621
+
622
+ documentation {
623
+ content = "test content"
624
+ mime_type = "text/markdown"
625
+ subject = "test subject"
626
+ links {
627
+ display_name = "link display name"
628
+ url = "http://mydomain.com"
629
+ }
630
+ }
631
+ }
632
+ resource "google_monitoring_alert_policy" "sql_daily_row_count" {
633
+ display_name = "daily_row_count"
634
+ combiner = "OR"
635
+ enabled = true
636
+
637
+ conditions {
638
+ display_name = "daily_row_count"
639
+
640
+ condition_sql {
641
+ query = "SELECT severity, resource FROM project.global._Default._AllLogs WHERE severity IS NOT NULL"
642
+ daily {
643
+ periodicity = 3
644
+ execution_time {
645
+ hours = 10
646
+ minutes = 10
647
+ seconds = 10
648
+ nanos = 10
649
+ }
650
+ }
651
+ row_count_test {
652
+ comparison = "COMPARISON_GT"
653
+ threshold = "0"
654
+ }
655
+ }
656
+ }
657
+
658
+ severity = "WARNING"
659
+
660
+ documentation {
661
+ content = "test content"
662
+ mime_type = "text/markdown"
663
+ subject = "test subject"
664
+ links {
665
+ display_name = "link display name"
666
+ url = "http://mydomain.com"
667
+ }
668
+ }
669
+ }
670
+ resource "google_monitoring_alert_policy" "sql_daily_boolean" {
671
+ display_name = "daily_boolean"
672
+ combiner = "OR"
673
+ enabled = true
674
+
675
+ conditions {
676
+ display_name = "daily_boolean"
677
+
678
+ condition_sql {
679
+ query = "SELECT severity, resource FROM project.global._Default._AllLogs WHERE severity IS NOT NULL"
680
+ daily {
681
+ periodicity = 3
682
+ execution_time {
683
+ hours = 10
684
+ minutes = 10
685
+ seconds = 10
686
+ nanos = 10
687
+ }
688
+ }
689
+ boolean_test {
690
+ column = "resource"
691
+ }
692
+ }
693
+ }
694
+
695
+ severity = "WARNING"
696
+
697
+ documentation {
698
+ content = "test content"
699
+ mime_type = "text/markdown"
700
+ subject = "test subject"
701
+ links {
702
+ display_name = "link display name"
703
+ url = "http://mydomain.com"
704
+ }
705
+ }
706
+ }
707
+ ` )
708
+ }
0 commit comments