diff --git a/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/LiveCaptureEvent.java b/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/LiveCaptureEvent.java new file mode 100644 index 0000000000..14c132f860 --- /dev/null +++ b/data-prepper-core/src/main/java/org/opensearch/dataprepper/pipeline/LiveCaptureEvent.java @@ -0,0 +1,36 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.pipeline; + +import org.opensearch.dataprepper.model.event.Event; +import org.apache.commons.text.StringEscapeUtils; + +import java.time.Instant; +import java.util.Map; + +public class LiveCaptureEvent { + public static final int CURRENT_VERSION = 1; + private final int version; + private final String description; + private final Instant time; + private final Event event; + + public LiveCaptureEvent(final String description, final Instant time, final Event event) { + this.version = CURRENT_VERSION; + this.description = description; + this.time = time; + this.event = event; + } + + public Map toMap() { + return Map.of("version", version, "description", description, "time", time, "event", event.toMap()); + } + + public String toJsonString() { + return "{\"version\": " + version + ", \"description\": \"" + description +"\", \"time\": \""+time+"\", \"event\":\""+StringEscapeUtils.escapeJava(event.toJsonString())+"\"}"; + } + +} diff --git a/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/LiveCaptureEventTest.java b/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/LiveCaptureEventTest.java new file mode 100644 index 0000000000..6ee04c095b --- /dev/null +++ b/data-prepper-core/src/test/java/org/opensearch/dataprepper/pipeline/LiveCaptureEventTest.java @@ -0,0 +1,63 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + */ + +package org.opensearch.dataprepper.pipeline; + +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.apache.commons.lang3.RandomStringUtils; + +import static org.hamcrest.CoreMatchers.equalTo; +import static org.hamcrest.MatcherAssert.assertThat; +import org.junit.jupiter.api.Test; + +import org.opensearch.dataprepper.model.event.Event; +import org.opensearch.dataprepper.model.event.JacksonEvent; + +import java.time.Instant; +import java.util.Map; +import java.util.Random; + +public class LiveCaptureEventTest { + private static final ObjectMapper mapper = new ObjectMapper(); + private String key1; + private String key2; + private Integer value1; + private Double value2; + private String description; + private Instant now; + private Event event; + private Map testData; + + private LiveCaptureEvent createObjectUnderTest() { + key1 = RandomStringUtils.randomAlphabetic(5); + Random random = new Random(); + value1 = random.nextInt(); + key2 = RandomStringUtils.randomAlphabetic(6); + value2 = random.nextDouble(); + testData = Map.of(key1, value1, key2, value2); + event = JacksonEvent.builder().withEventType("event").withData(testData).build(); + description = RandomStringUtils.randomAlphabetic(20); + now = Instant.now(); + return new LiveCaptureEvent(description, now, event); + } + + @Test + public void testLiveCaptureEvent() throws Exception { + LiveCaptureEvent liveCaptureEvent = createObjectUnderTest(); + Map map = liveCaptureEvent.toMap(); + assertThat(map.get("description"), equalTo(description)); + assertThat(map.get("version"), equalTo(LiveCaptureEvent.CURRENT_VERSION)); + assertThat(map.get("time"), equalTo(now)); + assertThat(map.get("event"), equalTo(testData)); + Map mapFromJson = mapper.readValue(liveCaptureEvent.toJsonString(), new TypeReference<>() {}); + assertThat(mapFromJson.get("description"), equalTo(description)); + assertThat(mapFromJson.get("version"), equalTo(LiveCaptureEvent.CURRENT_VERSION)); + assertThat(Instant.parse((String)mapFromJson.get("time")), equalTo(now)); + Map testDataFromJson = mapper.readValue((String)mapFromJson.get("event"), new TypeReference<>() {}); + assertThat(testDataFromJson, equalTo(testData)); + } +} +