@@ -29,6 +29,7 @@ import org.opensearch.commons.alerting.randomThrottle
2929import org.opensearch.commons.alerting.randomUser
3030import org.opensearch.commons.alerting.randomUserEmpty
3131import org.opensearch.commons.alerting.randomWorkflow
32+ import org.opensearch.commons.alerting.util.IndexUtils
3233import org.opensearch.commons.authuser.User
3334import org.opensearch.core.common.io.stream.StreamInput
3435import org.opensearch.core.common.io.stream.StreamOutput
@@ -37,6 +38,7 @@ import org.opensearch.search.builder.SearchSourceBuilder
3738import org.opensearch.test.OpenSearchTestCase
3839import java.io.IOException
3940import java.time.Instant
41+ import java.time.temporal.ChronoUnit
4042import kotlin.test.assertTrue
4143
4244class WriteableTests {
@@ -370,6 +372,47 @@ class WriteableTests {
370372 Assert .assertEquals(" Round tripping DocLevelMonitorInput failed" , newDocLevelMonitorInput, docLevelMonitorInput)
371373 }
372374
375+ @Test
376+ fun `test RemoteMonitor as stream` () {
377+ val myMonitorInput = MyMonitorInput (1 , " hello" , MyMonitorInput (2 , " world" , null ))
378+ var myObjOut = BytesStreamOutput ()
379+ myMonitorInput.writeTo(myObjOut)
380+ val docLevelMonitorInput = DocLevelMonitorInput (
381+ " test" ,
382+ listOf (" test" ),
383+ listOf (randomDocLevelQuery())
384+ )
385+ val remoteDocLevelMonitorInput = RemoteDocLevelMonitorInput (myObjOut.bytes(), docLevelMonitorInput)
386+
387+ val myMonitorTrigger = MyMonitorTrigger (1 , " hello" , MyMonitorTrigger (2 , " world" , null ))
388+ myObjOut = BytesStreamOutput ()
389+ myMonitorTrigger.writeTo(myObjOut)
390+ val remoteMonitorTrigger = RemoteMonitorTrigger (" id" , " name" , " 1" , listOf (), myObjOut.bytes())
391+
392+ val monitor = Monitor (
393+ Monitor .NO_ID ,
394+ Monitor .NO_VERSION ,
395+ " hello" ,
396+ true ,
397+ IntervalSchedule (1 , ChronoUnit .MINUTES ),
398+ Instant .now(),
399+ Instant .now(),
400+ " remote_doc_level_monitor" ,
401+ null ,
402+ IndexUtils .NO_SCHEMA_VERSION ,
403+ listOf (remoteDocLevelMonitorInput),
404+ listOf (remoteMonitorTrigger),
405+ mapOf ()
406+ )
407+
408+ val out = BytesStreamOutput ()
409+ monitor.writeTo(out )
410+
411+ val sin = StreamInput .wrap(out .bytes().toBytesRef().bytes)
412+ val newMonitor = Monitor (sin)
413+ Assert .assertEquals(" Round tripping RemoteMonitor failed" , monitor, newMonitor)
414+ }
415+
373416 @Test
374417 fun `test Comment object` () {
375418 val user = randomUser()
0 commit comments