private static void publishContainerStartEvent( final TimelineClient timelineClient, Container container, String domainId, UserGroupInformation ugi) { final TimelineEntity entity = new TimelineEntity(); entity.setEntityId(container.getId().toString()); entity.setEntityType(DSEntity.DS_CONTAINER.toString()); entity.setDomainId(domainId); entity.addPrimaryFilter(JOYConstants.USER, ugi.getShortUserName()); TimelineEvent event = new TimelineEvent(); event.setTimestamp(System.currentTimeMillis()); event.setEventType(DSEvent.DS_CONTAINER_START.toString()); event.addEventInfo(JOYConstants.NODE, container.getNodeId().toString()); event.addEventInfo(JOYConstants.RESOURCES, container.getResource().toString()); entity.addEvent(event); try { ugi.doAs(new PrivilegedExceptionAction<TimelinePutResponse>() { @Override public TimelinePutResponse run() throws Exception { return timelineClient.putEntities(entity); } }); } catch (Exception e) { LOG.error("Container start event could not be published for " + container.getId().toString(), e instanceof UndeclaredThrowableException ? e.getCause() : e); } }
private static void publishApplicationAttemptEvent( final TimelineClient timelineClient, String appAttemptId, DSEvent appEvent, String domainId, UserGroupInformation ugi) { final TimelineEntity entity = new TimelineEntity(); entity.setEntityId(appAttemptId); entity.setEntityType(DSEntity.DS_APP_ATTEMPT.toString()); entity.setDomainId(domainId); entity.addPrimaryFilter(JOYConstants.USER, ugi.getShortUserName()); TimelineEvent event = new TimelineEvent(); event.setEventType(appEvent.toString()); event.setTimestamp(System.currentTimeMillis()); entity.addEvent(event); try { timelineClient.putEntities(entity); } catch (YarnException e) { LOG.error("App Attempt " + (appEvent.equals(DSEvent.DS_APP_ATTEMPT_START) ? JOYConstants.START : JOYConstants.END) + " event could not be published for " + appAttemptId.toString(), e); } catch (IOException e) { LOG.error("App Attempt " + (appEvent.equals(DSEvent.DS_APP_ATTEMPT_START) ? JOYConstants.START : JOYConstants.END) + " event could not be published for " + appAttemptId.toString(), e); } }
/** * Create a test event */ static TimelineEvent createEvent(long timestamp, String type, Map<String, Object> info) { TimelineEvent event = new TimelineEvent(); event.setTimestamp(timestamp); event.setEventType(type); event.setEventInfo(info); return event; }
partEvents.setEntityType("entity type " + j); for (int i = 0; i < 2; ++i) { TimelineEvent event = new TimelineEvent(); event.setTimestamp(System.currentTimeMillis()); event.setEventType("event type " + i); event.addEventInfo("key1", "val1"); event.addEventInfo("key2", "val2"); partEvents.addEvent(event); Assert.assertEquals(2, partEvents1.getEvents().size()); TimelineEvent event11 = partEvents1.getEvents().get(0); Assert.assertEquals("event type 0", event11.getEventType()); Assert.assertEquals(2, event11.getEventInfo().size()); TimelineEvent event12 = partEvents1.getEvents().get(1); Assert.assertEquals("event type 1", event12.getEventType()); Assert.assertEquals(2, event12.getEventInfo().size()); TimelineEvents.EventsOfOneEntity partEvents2 = events.getAllEvents().get(1); Assert.assertEquals("entity id 1", partEvents2.getEntityId()); Assert.assertEquals(2, partEvents2.getEvents().size()); TimelineEvent event21 = partEvents2.getEvents().get(0); Assert.assertEquals("event type 0", event21.getEventType()); Assert.assertEquals(2, event21.getEventInfo().size()); TimelineEvent event22 = partEvents2.getEvents().get(1); Assert.assertEquals("event type 1", event22.getEventType()); Assert.assertEquals(2, event22.getEventInfo().size());
if (events != null) { for (TimelineEvent event : events) { if (event.getEventType().equals( ApplicationMetricsConstants.CREATED_EVENT_TYPE)) { createdTime = event.getTimestamp(); } else if (event.getEventType().equals( ApplicationMetricsConstants.FINISHED_EVENT_TYPE)) { finishedTime = event.getTimestamp(); Map<String, Object> eventInfo = event.getEventInfo(); if (eventInfo == null) { continue;
private static void createAppModifiedEvent(ApplicationId appId, TimelineEvent tEvent, long updatedTimeIndex, String queue, int priority) { tEvent.setEventType(ApplicationMetricsConstants.UPDATED_EVENT_TYPE); tEvent.setTimestamp(Integer.MAX_VALUE + updatedTimeIndex + appId.getId()); Map<String, Object> eventInfo = new HashMap<String, Object>(); eventInfo.put(ApplicationMetricsConstants.QUEUE_ENTITY_INFO, queue); eventInfo.put(ApplicationMetricsConstants.APPLICATION_PRIORITY_INFO, priority); tEvent.setEventInfo(eventInfo); }
TimelineEvent event = new TimelineEvent(); List<Map<String, Object>> eventInfoList = new ArrayList<Map<String, Object>>(); eventInfo.put("ekey2", "eval2"); eventInfoList.add(eventInfo); event.setEventInfo(null); for (Map<String, Object> eventInfoToSet : eventInfoList) { event.setEventInfo(eventInfoToSet); assertEventInfo(event); event.addEventInfo(eventInfoToAdd); assertEventInfo(event);
if (events != null) { for (TimelineEvent event : events) { if (event.getEventType().equals( AppAttemptMetricsConstants.REGISTERED_EVENT_TYPE)) { Map<String, Object> eventInfo = event.getEventInfo(); if (eventInfo == null) { continue; .toString()); } else if (event.getEventType().equals( AppAttemptMetricsConstants.FINISHED_EVENT_TYPE)) { Map<String, Object> eventInfo = event.getEventInfo(); if (eventInfo == null) { continue;
break; if (event.getTimestamp() <= windowStart) { continue; if (event.getTimestamp() > windowEnd) { continue; if (eventTypes != null && !eventTypes.contains(event.getEventType())) { continue;
private static void assertEventInfo(TimelineEvent event) { Assert.assertNotNull(event); Assert.assertNotNull(event.getEventInfoJAXB()); Assert.assertTrue(event.getEventInfo() instanceof HashMap); Assert.assertTrue(event.getEventInfoJAXB() instanceof HashMap); Assert.assertEquals(event.getEventInfo(), event.getEventInfoJAXB()); } }
if (e.getTimestamp() < startTime) { startTime = e.getTimestamp();
Assert.assertEquals(EventType.AM_STARTED.toString(), tEntity.getEvents().get(tEntity.getEvents().size() - 1) .getEventType()); Assert.assertEquals(EventType.JOB_FINISHED.toString(), tEntity.getEvents().get(0).getEventType()); Assert.assertEquals(EventType.AM_STARTED.toString(), tEntity.getEvents().get(tEntity.getEvents().size() - 1) .getEventType()); Assert.assertEquals(EventType.JOB_FAILED.toString(), tEntity.getEvents().get(0).getEventType()); } finally { if (cluster != null) {
/** * Create a test event */ private static TimelineEvent createEvent(long timestamp, String type, Map<String, Object> info) { TimelineEvent event = new TimelineEvent(); event.setTimestamp(timestamp); event.setEventType(type); event.setEventInfo(info); return event; }
TimelineEntity createPostHookEvent(String queryId, long stopTime, String user, String requestuser, boolean success, String opId, Map<String, Long> durations, String domainId) throws Exception { LOG.info("Received post-hook notification for :" + queryId); TimelineEntity atsEntity = new TimelineEntity(); atsEntity.setEntityId(queryId); atsEntity.setEntityType(EntityTypes.HIVE_QUERY_ID.name()); atsEntity.addPrimaryFilter(PrimaryFilterTypes.user.name(), user); atsEntity.addPrimaryFilter(PrimaryFilterTypes.requestuser.name(), requestuser); if (opId != null) { atsEntity.addPrimaryFilter(PrimaryFilterTypes.operationid.name(), opId); } TimelineEvent stopEvt = new TimelineEvent(); stopEvt.setEventType(EventTypes.QUERY_COMPLETED.name()); stopEvt.setTimestamp(stopTime); atsEntity.addEvent(stopEvt); atsEntity.addOtherInfo(OtherInfoTypes.STATUS.name(), success); // Perf times JSONObject perfObj = new JSONObject(new LinkedHashMap<>()); for (Map.Entry<String, Long> entry : durations.entrySet()) { perfObj.put(entry.getKey(), entry.getValue()); } atsEntity.addOtherInfo(OtherInfoTypes.PERF.name(), perfObj.toString()); atsEntity.setDomainId(domainId); return atsEntity; }
partEvents.setEntityType("entity type " + j); for (int i = 0; i < 2; ++i) { TimelineEvent event = new TimelineEvent(); event.setTimestamp(System.currentTimeMillis()); event.setEventType("event type " + i); event.addEventInfo("key1", "val1"); event.addEventInfo("key2", "val2"); partEvents.addEvent(event); Assert.assertEquals(2, partEvents1.getEvents().size()); TimelineEvent event11 = partEvents1.getEvents().get(0); Assert.assertEquals("event type 0", event11.getEventType()); Assert.assertEquals(2, event11.getEventInfo().size()); TimelineEvent event12 = partEvents1.getEvents().get(1); Assert.assertEquals("event type 1", event12.getEventType()); Assert.assertEquals(2, event12.getEventInfo().size()); TimelineEvents.EventsOfOneEntity partEvents2 = events.getAllEvents().get(1); Assert.assertEquals("entity id 1", partEvents2.getEntityId()); Assert.assertEquals(2, partEvents2.getEvents().size()); TimelineEvent event21 = partEvents2.getEvents().get(0); Assert.assertEquals("event type 0", event21.getEventType()); Assert.assertEquals(2, event21.getEventInfo().size()); TimelineEvent event22 = partEvents2.getEvents().get(1); Assert.assertEquals("event type 1", event22.getEventType()); Assert.assertEquals(2, event22.getEventInfo().size());
if (events != null) { for (TimelineEvent event : events) { if (event.getEventType().equals( ApplicationMetricsConstants.CREATED_EVENT_TYPE)) { createdTime = event.getTimestamp(); } else if (event.getEventType().equals( ApplicationMetricsConstants.FINISHED_EVENT_TYPE)) { finishedTime = event.getTimestamp(); Map<String, Object> eventInfo = event.getEventInfo(); if (eventInfo == null) { continue;
TimelineEvent event = new TimelineEvent(); List<Map<String, Object>> eventInfoList = new ArrayList<Map<String, Object>>(); eventInfo.put("ekey2", "eval2"); eventInfoList.add(eventInfo); event.setEventInfo(null); for (Map<String, Object> eventInfoToSet : eventInfoList) { event.setEventInfo(eventInfoToSet); assertEventInfo(event); event.addEventInfo(eventInfoToAdd); assertEventInfo(event);
if (events != null) { for (TimelineEvent event : events) { if (event.getEventType().equals( AppAttemptMetricsConstants.REGISTERED_EVENT_TYPE)) { Map<String, Object> eventInfo = event.getEventInfo(); if (eventInfo == null) { continue; .toString()); } else if (event.getEventType().equals( AppAttemptMetricsConstants.FINISHED_EVENT_TYPE)) { Map<String, Object> eventInfo = event.getEventInfo(); if (eventInfo == null) { continue;
break; if (event.getTimestamp() <= windowStart) { continue; if (event.getTimestamp() > windowEnd) { continue; if (eventTypes != null && !eventTypes.contains(event.getEventType())) { continue;
private static void assertEventInfo(TimelineEvent event) { Assert.assertNotNull(event); Assert.assertNotNull(event.getEventInfoJAXB()); Assert.assertTrue(event.getEventInfo() instanceof HashMap); Assert.assertTrue(event.getEventInfoJAXB() instanceof HashMap); Assert.assertEquals(event.getEventInfo(), event.getEventInfoJAXB()); } }