@@ -7,15 +7,19 @@ package org.opensearch.alerting
7
7
8
8
import org.junit.Assert
9
9
import org.opensearch.action.admin.indices.create.CreateIndexRequest
10
+ import org.opensearch.action.search.SearchRequest
10
11
import org.opensearch.alerting.action.GetAlertsAction
11
12
import org.opensearch.alerting.action.GetAlertsRequest
12
13
import org.opensearch.alerting.core.ScheduledJobIndices
13
14
import org.opensearch.alerting.core.model.DocLevelMonitorInput
14
15
import org.opensearch.alerting.core.model.DocLevelQuery
16
+ import org.opensearch.alerting.core.model.ScheduledJob.Companion.DOC_LEVEL_QUERIES_INDEX
15
17
import org.opensearch.alerting.core.model.ScheduledJob.Companion.SCHEDULED_JOBS_INDEX
16
18
import org.opensearch.alerting.model.Table
17
19
import org.opensearch.alerting.transport.AlertingSingleNodeTestCase
18
20
import org.opensearch.common.settings.Settings
21
+ import org.opensearch.index.query.QueryBuilders
22
+ import org.opensearch.search.builder.SearchSourceBuilder
19
23
import java.time.ZonedDateTime
20
24
import java.time.format.DateTimeFormatter
21
25
import java.time.temporal.ChronoUnit.MILLIS
@@ -62,6 +66,36 @@ class MonitorDataSourcesIT : AlertingSingleNodeTestCase() {
62
66
Assert .assertTrue(getAlertsResponse.alerts.size == 0 )
63
67
}
64
68
69
+ fun `test delete monitor deletes all queries and metadata too` () {
70
+ val docQuery = DocLevelQuery (query = " test_field:\" us-west-2\" " , name = " 3" )
71
+ val docLevelInput = DocLevelMonitorInput (" description" , listOf (index), listOf (docQuery))
72
+ val trigger = randomDocumentLevelTrigger(condition = ALWAYS_RUN )
73
+ var monitor = randomDocumentLevelMonitor(
74
+ inputs = listOf (docLevelInput),
75
+ triggers = listOf (trigger)
76
+ )
77
+ val monitorResponse = createMonitor(monitor)
78
+ val testTime = DateTimeFormatter .ISO_OFFSET_DATE_TIME .format(ZonedDateTime .now().truncatedTo(MILLIS ))
79
+ val testDoc = """ {
80
+ "message" : "This is an error from IAD region",
81
+ "test_strict_date_time" : "$testTime ",
82
+ "test_field" : "us-west-2"
83
+ }"""
84
+ assertFalse(monitorResponse?.id.isNullOrEmpty())
85
+ monitor = monitorResponse!! .monitor
86
+ indexDoc(index, " 1" , testDoc)
87
+ val monitorId = monitorResponse.id
88
+ val executeMonitorResponse = executeMonitor(monitor, monitorId, false )
89
+ Assert .assertEquals(executeMonitorResponse!! .monitorRunResult.monitorName, monitor.name)
90
+ Assert .assertEquals(executeMonitorResponse.monitorRunResult.triggerResults.size, 1 )
91
+ searchAlerts(monitorId)
92
+ // Verify queries exist
93
+ var searchResponse = client().search(
94
+ SearchRequest (DOC_LEVEL_QUERIES_INDEX ).source(SearchSourceBuilder ().query(QueryBuilders .matchAllQuery()))
95
+ ).get()
96
+ assertNotEquals(0 , searchResponse.hits.hits.size)
97
+ }
98
+
65
99
fun `test execute pre-existing monitor and update` () {
66
100
val request = CreateIndexRequest (SCHEDULED_JOBS_INDEX ).mapping(ScheduledJobIndices .scheduledJobMappings())
67
101
.settings(Settings .builder().put(" index.hidden" , true ).build())
0 commit comments