From ef6c583c996e9f5efaf1d01840c79a7685c76474 Mon Sep 17 00:00:00 2001 From: Chase <62891993+engechas@users.noreply.github.com> Date: Wed, 20 Dec 2023 17:33:21 -0800 Subject: [PATCH 1/2] Set docData to empty string if actual is null (#1325) Signed-off-by: Chase Engelbrecht --- .../transport/TransportGetFindingsAction.kt | 5 ++-- .../alerting/resthandler/FindingsRestApiIT.kt | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportGetFindingsAction.kt b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportGetFindingsAction.kt index 0f8ff205c..fd60cf60b 100644 --- a/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportGetFindingsAction.kt +++ b/alerting/src/main/kotlin/org/opensearch/alerting/transport/TransportGetFindingsAction.kt @@ -222,8 +222,9 @@ class TransportGetFindingsSearchAction @Inject constructor( val documents: MutableMap = mutableMapOf() response.responses.forEach { val key = "${it.index}|${it.id}" - val docData = if (it.isFailed) "" else it.response.sourceAsString - val findingDocument = FindingDocument(it.index, it.id, !it.isFailed, docData) + val isDocFound = !(it.isFailed || it.response.sourceAsString == null) + val docData = if (isDocFound) it.response.sourceAsString else "" + val findingDocument = FindingDocument(it.index, it.id, isDocFound, docData) documents[key] = findingDocument } diff --git a/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt b/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt index dc61468a8..531084b26 100644 --- a/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt +++ b/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt @@ -31,6 +31,33 @@ class FindingsRestApiIT : AlertingRestTestCase() { assertFalse(response.findings[0].documents[0].found) } + fun `test find Finding where source docData is null`() { + val testIndex = createTestIndex() + val testDoc = """{ + "message" : "This is an error from IAD region", + "test_field" : "us-west-2" + }""" + indexDoc(testIndex, "someId", testDoc) + + val docQuery = DocLevelQuery(query = "test_field:\"us-west-2\"", name = "3", fields = listOf()) + val docLevelInput = DocLevelMonitorInput("description", listOf(testIndex), listOf(docQuery)) + val trigger = randomDocumentLevelTrigger(condition = ALWAYS_RUN) + val trueMonitor = createMonitor(randomDocumentLevelMonitor(inputs = listOf(docLevelInput), triggers = listOf(trigger))) + executeMonitor(trueMonitor.id, mapOf(Pair("dryrun", "true"))) + + createFinding(matchingDocIds = listOf("someId"), index = testIndex) + val responseBeforeDelete = searchFindings() + assertEquals(1, responseBeforeDelete.totalFindings) + assertEquals(1, responseBeforeDelete.findings[0].documents.size) + assertTrue(responseBeforeDelete.findings[0].documents[0].found) + + deleteDoc(testIndex, "someId") + val responseAfterDelete = searchFindings() + assertEquals(1, responseAfterDelete.totalFindings) + assertEquals(1, responseAfterDelete.findings[0].documents.size) + assertFalse(responseAfterDelete.findings[0].documents[0].found) + } + fun `test find Finding where doc is retrieved`() { val testIndex = createTestIndex() val testDoc = """{ From 8bf5b735148458b0fc27c917223353b6085b23fa Mon Sep 17 00:00:00 2001 From: Chase Engelbrecht Date: Tue, 16 Jan 2024 14:11:33 -0800 Subject: [PATCH 2/2] Resolve backport conflicts Signed-off-by: Chase Engelbrecht --- .../org/opensearch/alerting/resthandler/FindingsRestApiIT.kt | 2 +- .../org/opensearch/alerting/resthandler/MonitorRestApiIT.kt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt b/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt index 531084b26..c90c58013 100644 --- a/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt +++ b/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/FindingsRestApiIT.kt @@ -39,7 +39,7 @@ class FindingsRestApiIT : AlertingRestTestCase() { }""" indexDoc(testIndex, "someId", testDoc) - val docQuery = DocLevelQuery(query = "test_field:\"us-west-2\"", name = "3", fields = listOf()) + val docQuery = DocLevelQuery(query = "test_field:\"us-west-2\"", name = "3") val docLevelInput = DocLevelMonitorInput("description", listOf(testIndex), listOf(docQuery)) val trigger = randomDocumentLevelTrigger(condition = ALWAYS_RUN) val trueMonitor = createMonitor(randomDocumentLevelMonitor(inputs = listOf(docLevelInput), triggers = listOf(trigger))) diff --git a/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/MonitorRestApiIT.kt b/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/MonitorRestApiIT.kt index 523715b7f..a7542fe67 100644 --- a/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/MonitorRestApiIT.kt +++ b/alerting/src/test/kotlin/org/opensearch/alerting/resthandler/MonitorRestApiIT.kt @@ -6,6 +6,7 @@ package org.opensearch.alerting.resthandler import org.apache.http.HttpHeaders import org.apache.http.entity.ContentType +import org.apache.http.entity.StringEntity import org.apache.http.message.BasicHeader import org.apache.http.nio.entity.NStringEntity import org.opensearch.alerting.ALERTING_BASE_URI