@Override public void emit(Event event) { if (latch != null && "segment/count".equals(event.toMap().get("metric"))) { latch.countDown(); } } }
private void checkEvents(List<Event> events, String expectedFeed) { Assert.assertFalse("no events emitted", events.isEmpty()); for (Event e : events) { if (!expectedFeed.equals(e.getFeed())) { String message = StringUtils.format("\"feed\" in event: %s", e.toMap().toString()); Assert.assertEquals(message, expectedFeed, e.getFeed()); } } } }
@Override public URI apply(Event event) throws URISyntaxException { return new URI(StringUtils.format(uriPattern, event.getFeed())); }
@Override public URI apply(Event event) throws URISyntaxException { return new URI(StringUtils.format(uriPattern, event.getFeed())); }
@Override public URI apply(Event event) throws URISyntaxException { Map<String, Object> eventMap = event.toMap(); String processedUri = uriPattern; for (String key : params) { Object paramValue = eventMap.get(key); if (paramValue == null) { throw new IAE( "ParametrizedUriExtractor with pattern %s requires %s to be set in event, but found %s", uriPattern, key, eventMap ); } processedUri = StringUtils.replace(processedUri, StringUtils.format("{%s}", key), paramValue.toString()); } return new URI(processedUri); }
@Override public void emit(Event event) { //noinspection unchecked final Map<String, Object> dataMap = (Map<String, Object>) event.toMap().get("data"); final Class exceptionClass = (Class) dataMap.get(EmittingLogger.EXCEPTION_TYPE_KEY); if (exceptionClass != null) { final String exceptionMessage = (String) dataMap.get(EmittingLogger.EXCEPTION_MESSAGE_KEY); final String stackTrace = (String) dataMap.get(EmittingLogger.EXCEPTION_STACK_TRACE_KEY); this.exceptionClass = exceptionClass; this.exceptionMessage = exceptionMessage; this.stackTrace = stackTrace; } }
ImmutableMap.Builder<String, Object> resultBuilder = ImmutableMap.<String, Object>builder().putAll(event.toMap()); if (config.getClusterName() != null) { resultBuilder.put("clusterName", config.getClusterName());
log.error(e, "Failed to extract URI for event[%s]", event.toMap());
@Test public void testMonitor() { final TaskCountStatsMonitor monitor = new TaskCountStatsMonitor(statsProvider); final StubServiceEmitter emitter = new StubServiceEmitter("service", "host"); monitor.doMonitor(emitter); Assert.assertEquals(5, emitter.getEvents().size()); Assert.assertEquals("task/success/count", emitter.getEvents().get(0).toMap().get("metric")); Assert.assertEquals(1L, emitter.getEvents().get(0).toMap().get("value")); Assert.assertEquals("task/failed/count", emitter.getEvents().get(1).toMap().get("metric")); Assert.assertEquals(1L, emitter.getEvents().get(1).toMap().get("value")); Assert.assertEquals("task/running/count", emitter.getEvents().get(2).toMap().get("metric")); Assert.assertEquals(1L, emitter.getEvents().get(2).toMap().get("value")); Assert.assertEquals("task/pending/count", emitter.getEvents().get(3).toMap().get("metric")); Assert.assertEquals(1L, emitter.getEvents().get(3).toMap().get("value")); Assert.assertEquals("task/waiting/count", emitter.getEvents().get(4).toMap().get("metric")); Assert.assertEquals(1L, emitter.getEvents().get(4).toMap().get("value")); } }
@Test public void testMonitor() throws Exception { final MemcachedCache cache = MemcachedCache.create(memcachedCacheConfig); final Emitter emitter = EasyMock.createNiceMock(Emitter.class); final Collection<Event> events = new ArrayList<>(); final ServiceEmitter serviceEmitter = new ServiceEmitter("service", "host", emitter) { @Override public void emit(Event event) { events.add(event); } }; while (events.isEmpty()) { Thread.sleep(memcachedCacheConfig.getTimeout()); cache.doMonitor(serviceEmitter); } Assert.assertFalse(events.isEmpty()); ObjectMapper mapper = new DefaultObjectMapper(); for (Event event : events) { log.debug("Found event `%s`", mapper.writeValueAsString(event.toMap())); } }
Map<String, Object> actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/time", actualEvent.get("metric")); actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/wait/time", actualEvent.get("metric")); Assert.assertEquals(2L, actualEvent.get("value")); actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/segment/time", actualEvent.get("metric")); Assert.assertEquals(3L, actualEvent.get("value")); actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/segmentAndCache/time", actualEvent.get("metric")); Assert.assertEquals(4L, actualEvent.get("value")); actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/intervalChunk/time", actualEvent.get("metric")); Assert.assertEquals(5L, actualEvent.get("value")); actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/cpu/time", actualEvent.get("metric")); actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/node/ttfb", actualEvent.get("metric")); Assert.assertEquals(7L, actualEvent.get("value")); actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals("query/node/time", actualEvent.get("metric")); Assert.assertEquals(8L, actualEvent.get("value"));
Map<String, Object> actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals(12, actualEvent.size()); Assert.assertTrue(actualEvent.containsKey("feed"));
Map<String, Object> actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals(12, actualEvent.size()); Assert.assertTrue(actualEvent.containsKey("feed"));
Map<String, Object> actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals(15, actualEvent.size()); Assert.assertTrue(actualEvent.containsKey("feed"));
@Test public void failEmitMalformedEvent() throws Exception { Emitter emitter = parametrizedEmmiter("http://example.com/{keyNotSetInEvents}"); Event event = new UnitEvent("test", 1); httpClient.setGoHandler(GoHandlers.failingHandler()); try { emitter.emit(event); emitter.flush(); } catch (IllegalArgumentException e) { Assert.assertEquals( e.getMessage(), StringUtils.format( "ParametrizedUriExtractor with pattern http://example.com/{keyNotSetInEvents} requires keyNotSetInEvents to be set in event, but found %s", event.toMap()) ); } } }
Map<String, Object> actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals(16, actualEvent.size()); Assert.assertTrue(actualEvent.containsKey("feed"));
queryMetrics.query(query); queryMetrics.reportQueryTime(0).emit(serviceEmitter); Map<String, Object> actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals(12, actualEvent.size()); Assert.assertTrue(actualEvent.containsKey("feed"));
Map<String, Object> actualEvent = cachingEmitter.getLastEmittedEvent().toMap(); Assert.assertEquals(15, actualEvent.size()); Assert.assertTrue(actualEvent.containsKey("feed"));
@Override public URI apply(Event event) throws URISyntaxException { Map<String, Object> eventMap = event.toMap(); String processedUri = uriPattern; for (String key : params) { Object paramValue = eventMap.get(key); if (paramValue == null) { throw new IAE( "ParametrizedUriExtractor with pattern %s requires %s to be set in event, but found %s", uriPattern, key, eventMap ); } processedUri = processedUri.replace(StringUtils.format("{%s}", key), paramValue.toString()); } return new URI(processedUri); }
log.error(e, "Failed to extract URI for event[%s]", event.toMap());