String tagsValue = extractFieldFromQuery(Event.FieldLabels.tags.toString(), query); String untilValue = extractFieldFromQuery(Event.untilParameterName, query); String fromValue = extractFieldFromQuery(Event.fromParameterName, query); tagsQString = getTermQueryString(Event.FieldLabels.tags.toString(), tagsValue);
@Override public void handle(ChannelHandlerContext ctx, FullHttpRequest request) { final String tenantId = request.headers().get(Event.FieldLabels.tenantId.name()); String response = ""; ObjectMapper objectMapper = new ObjectMapper();
@Test public void testWhenFieldInThePast() throws Exception { long collectionTimeInPast = new DefaultClockImpl().now().getMillis() - 10000 - Configuration.getInstance().getLongProperty( CoreConfig.BEFORE_CURRENT_COLLECTIONTIME_MS ); Map<String, Object> event = new HashMap<String, Object>(); event.put(Event.FieldLabels.what.name(), "xxxx"); event.put(Event.FieldLabels.when.name(), collectionTimeInPast); ArgumentCaptor<FullHttpResponse> argument = ArgumentCaptor.forClass(FullHttpResponse.class); handler.handle(context, createPutOneEventRequest(event)); verify(searchIO, never()).insert(anyString(), anyMap()); verify(channel).write(argument.capture()); String errorResponseBody = argument.getValue().content().toString(Charset.defaultCharset()); ErrorResponse errorResponse = getErrorResponse(errorResponseBody); assertEquals("Number of errors invalid", 1, errorResponse.getErrors().size()); assertEquals("Invalid tenant", TENANT, errorResponse.getErrors().get(0).getTenantId()); assertEquals("Invalid error message", "Out of bounds. Cannot be more than 259200000 milliseconds into the past." + " Cannot be more than 600000 milliseconds into the future", errorResponse.getErrors().get(0).getMessage()); assertEquals("Invalid status", HttpResponseStatus.BAD_REQUEST, argument.getValue().getStatus()); }
@Test public void testWhenFieldInTheFuture() throws Exception { long collectionTimeInFuture = new DefaultClockImpl().now().getMillis() + 10000 + Configuration.getInstance().getLongProperty( CoreConfig.AFTER_CURRENT_COLLECTIONTIME_MS ); Map<String, Object> event = new HashMap<String, Object>(); event.put(Event.FieldLabels.what.name(), "xxxx"); event.put(Event.FieldLabels.when.name(), collectionTimeInFuture); ArgumentCaptor<FullHttpResponse> argument = ArgumentCaptor.forClass(FullHttpResponse.class); handler.handle(context, createPutOneEventRequest(event)); verify(searchIO, never()).insert(anyString(), anyMap()); verify(channel).write(argument.capture()); String errorResponseBody = argument.getValue().content().toString(Charset.defaultCharset()); ErrorResponse errorResponse = getErrorResponse(errorResponseBody); assertEquals("Number of errors invalid", 1, errorResponse.getErrors().size()); assertEquals("Invalid tenant", TENANT, errorResponse.getErrors().get(0).getTenantId()); assertEquals("Invalid error message", "Out of bounds. Cannot be more than 259200000 milliseconds into the past." + " Cannot be more than 600000 milliseconds into the future", errorResponse.getErrors().get(0).getMessage()); assertEquals("Invalid status", HttpResponseStatus.BAD_REQUEST, argument.getValue().getStatus()); }
@Test public void testMinimumEventPut() throws Exception { Map<String, Object> event = new HashMap<String, Object>(); event.put(Event.FieldLabels.data.name(), "data"); ArgumentCaptor<FullHttpResponse> argument = ArgumentCaptor.forClass(FullHttpResponse.class); handler.handle(context, createPutOneEventRequest(event)); verify(searchIO, never()).insert(anyString(), anyMap()); verify(channel).write(argument.capture()); String errorResponseBody = argument.getValue().content().toString(Charset.defaultCharset()); ErrorResponse errorResponse = getErrorResponse(errorResponseBody); assertEquals("Number of errors invalid", 2, errorResponse.getErrors().size()); assertEquals("Invalid tenant", TENANT, errorResponse.getErrors().get(0).getTenantId()); assertEquals("Invalid status", HttpResponseStatus.BAD_REQUEST, argument.getValue().getStatus()); } }
@Test public void testEmptyWhatField() throws Exception { Map<String, Object> event = new HashMap<String, Object>(); event.put(Event.FieldLabels.what.name(), ""); event.put(Event.FieldLabels.when.name(), System.currentTimeMillis()); ArgumentCaptor<FullHttpResponse> argument = ArgumentCaptor.forClass(FullHttpResponse.class); handler.handle(context, createPutOneEventRequest(event)); verify(searchIO, never()).insert(anyString(), anyMap()); verify(channel).write(argument.capture()); String errorResponseBody = argument.getValue().content().toString(Charset.defaultCharset()); ErrorResponse errorResponse = getErrorResponse(errorResponseBody); assertEquals("Number of errors invalid", 1, errorResponse.getErrors().size()); assertEquals("Invalid tenant", TENANT, errorResponse.getErrors().get(0).getTenantId()); assertEquals("Invalid error message", "may not be empty", errorResponse.getErrors().get(0).getMessage()); assertEquals("Invalid status", HttpResponseStatus.BAD_REQUEST, argument.getValue().getStatus()); }
public void indexEvent(Map<String, Object> event) throws IOException { String eventString = stringifyEvent(event); String temp = String.format("%s/%s?routing=%s", EventElasticSearchIO.EVENT_INDEX, EventElasticSearchIO.ES_TYPE, event.get(Event.FieldLabels.tenantId.toString())); String urlFormat = "%s/" + temp; index(urlFormat, eventString); }
private String stringifyEvent(Map<String, Object> event){ StringBuilder sb = new StringBuilder(); sb.append(String.format("{\"what\": \"%s\",", event.get(Event.FieldLabels.what.toString()))); sb.append(String.format("\"when\": \"%d\",", (long) event.get(Event.FieldLabels.when.toString()))); sb.append(String.format("\"tags\": \"%s\",", event.get(Event.FieldLabels.tags.toString()))); sb.append(String.format("\"tenantId\": \"%s\",", event.get(Event.FieldLabels.tenantId.toString()))); sb.append(String.format("\"data\": \"%s\"}", event.get(Event.FieldLabels.data.toString()))); return sb.toString(); }
@Override public void insert(String tenantId, Map<String, Object> event) throws IOException { Timer.Context eventInsertTimerContext = eventInsertTimer.time(); try { event.put(Event.FieldLabels.tenantId.toString(), tenantId); elasticsearchRestHelper.indexEvent(event); } finally { eventInsertTimerContext.stop(); } }