Skip to content

Commit 60f2bb3

Browse files
authored
update test case to verify custom triggers work with remote doc-level monitors (#1566)
Signed-off-by: Subhobrata Dey <[email protected]>
1 parent 47effcb commit 60f2bb3

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed

sample-remote-monitor-plugin/src/main/java/org/opensearch/alerting/SampleRemoteMonitorRestHandler.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,10 @@ public void onFailure(Exception e) {
229229
null,
230230
0,
231231
List.of(remoteDocLevelMonitorInput),
232-
List.of(),
232+
List.of(new RemoteMonitorTrigger("id", "name", "1",
233+
List.of(new Action("name", "destinationId", new Script(ScriptType.INLINE, Script.DEFAULT_TEMPLATE_LANG, "Hello World", Map.of()),
234+
new Script(ScriptType.INLINE, Script.DEFAULT_TEMPLATE_LANG, "Hello World", Map.of()), false, new Throttle(60, ChronoUnit.MINUTES),
235+
"id", null)), trigger1Serialized)),
233236
Map.of(),
234237
new DataSources(),
235238
"sample-remote-monitor-plugin"

sample-remote-monitor-plugin/src/main/java/org/opensearch/alerting/monitor/fanouts/TransportRemoteDocLevelMonitorFanOutAction.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.opensearch.action.support.WriteRequest;
1313
import org.opensearch.alerting.monitor.inputs.SampleRemoteDocLevelMonitorInput;
1414
import org.opensearch.alerting.monitor.runners.SampleRemoteDocLevelMonitorRunner;
15+
import org.opensearch.alerting.monitor.triggers.SampleRemoteMonitorTrigger1;
1516
import org.opensearch.client.Client;
1617
import org.opensearch.cluster.service.ClusterService;
1718
import org.opensearch.common.inject.Inject;
@@ -21,7 +22,9 @@
2122
import org.opensearch.commons.alerting.model.DocLevelMonitorInput;
2223
import org.opensearch.commons.alerting.model.InputRunResults;
2324
import org.opensearch.commons.alerting.model.Monitor;
25+
import org.opensearch.commons.alerting.model.Trigger;
2426
import org.opensearch.commons.alerting.model.remote.monitors.RemoteDocLevelMonitorInput;
27+
import org.opensearch.commons.alerting.model.remote.monitors.RemoteMonitorTrigger;
2528
import org.opensearch.core.action.ActionListener;
2629
import org.opensearch.core.common.bytes.BytesReference;
2730
import org.opensearch.core.common.io.stream.StreamInput;
@@ -71,9 +74,18 @@ protected void doExecute(Task task, DocLevelMonitorFanOutRequest request, Action
7174
DocLevelMonitorInput docLevelMonitorInput = input.getDocLevelMonitorInput();
7275
String index = docLevelMonitorInput.getIndices().get(0);
7376

77+
BytesReference customTriggerSerialized = null;
78+
Trigger trigger = monitor.getTriggers().get(0);
79+
if (trigger instanceof RemoteMonitorTrigger) {
80+
customTriggerSerialized = ((RemoteMonitorTrigger) trigger).getTrigger();
81+
}
82+
StreamInput triggerSin = StreamInput.wrap(customTriggerSerialized.toBytesRef().bytes);
83+
SampleRemoteMonitorTrigger1 remoteMonitorTrigger = new SampleRemoteMonitorTrigger1(triggerSin);
84+
85+
7486
((Map<String, Object>) lastRunContext.get(index)).put("0", 0);
7587
IndexRequest indexRequest = new IndexRequest(SampleRemoteDocLevelMonitorRunner.SAMPLE_REMOTE_DOC_LEVEL_MONITOR_RUNNER_INDEX)
76-
.source(sampleRemoteDocLevelMonitorInput.getB()).setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
88+
.source(Map.of(sampleRemoteDocLevelMonitorInput.getA(), remoteMonitorTrigger.getA())).setRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
7789
this.client.index(indexRequest, new ActionListener<>() {
7890
@Override
7991
public void onResponse(IndexResponse indexResponse) {

sample-remote-monitor-plugin/src/test/java/org/opensearch/alerting/SampleRemoteMonitorIT.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,8 @@ public void testSampleRemoteDocLevelMonitor() throws IOException, InterruptedExc
168168
searchResponse.getEntity().getContent()
169169
).map();
170170
found.set(Integer.parseInt((((Map<String, Object>) ((Map<String, Object>) searchResponseJson.get("hits")).get("total")).get("value")).toString()) == 1 &&
171-
((Map<String, Object>) ((List<Map<String, Object>>) ((Map<String, Object>) searchResponseJson.get("hits")).get("hits")).get(0).get("_source")).containsKey("world") &&
172-
((Map<String, Object>) ((List<Map<String, Object>>) ((Map<String, Object>) searchResponseJson.get("hits")).get("hits")).get(0).get("_source")).get("world").toString().equals("1"));
171+
((Map<String, Object>) ((List<Map<String, Object>>) ((Map<String, Object>) searchResponseJson.get("hits")).get("hits")).get(0).get("_source")).containsKey("hello") &&
172+
((Map<String, Object>) ((List<Map<String, Object>>) ((Map<String, Object>) searchResponseJson.get("hits")).get("hits")).get(0).get("_source")).get("hello").toString().equals("hello"));
173173
return found.get();
174174
} catch (IOException ex) {
175175
return false;

0 commit comments

Comments
 (0)