private void putEntity(TimelineEntity entity, ApplicationId appId) { try { if (LOG.isDebugEnabled()) { LOG.debug("Publishing the entity " + entity + ", JSON-style content: " + TimelineUtils.dumpTimelineRecordtoJSON(entity)); } TimelineCollector timelineCollector = rmTimelineCollectorManager.get(appId); TimelineEntities entities = new TimelineEntities(); entities.addEntity(entity); timelineCollector.putEntities(entities, UserGroupInformation.getCurrentUser()); } catch (IOException e) { LOG.error("Error when publishing entity " + entity); if (LOG.isDebugEnabled()) { LOG.debug("Error when publishing entity " + entity, e); } } }
private void printReceivedEntities() { for (int i = 0; i < client.getNumOfTimelineEntitiesPublished(); i++) { TimelineEntities publishedEntities = client.getPublishedEntities(i); StringBuilder entitiesPerPublish = new StringBuilder(); for (TimelineEntity entity : publishedEntities.getEntities()) { entitiesPerPublish.append(entity.getId()); entitiesPerPublish.append(","); } LOG.info("Entities Published @ index " + i + " : " + entitiesPerPublish.toString()); } }
} else { entitiesHolder.getEntities().addEntities( nextEntityInTheQueue.getEntities().getEntities()); count++; if (count == numberOfAsyncsToMerge) {
TimelineEntities entities = new TimelineEntities(); for (TimelineEntity entity : entitiesTobePublished) { entities.addEntity(entity);
TimelineEntities publishedEntities = client.publishedEntities.get(client.publishedEntities.size() - 1); TimelineEntity timelineEntity = publishedEntities.getEntities() .get(publishedEntities.getEntities().size() - 1); if (!timelineEntity.getId().equals("19")) { Thread.sleep(2 * TIME_TO_SLEEP); TimelineEntities publishedEntities = client.publishedEntities.get(client.publishedEntities.size() - 1); TimelineEntity timelineEntity = publishedEntities.getEntities() .get(publishedEntities.getEntities().size() - 1); Assert.assertEquals("", "19", timelineEntity.getId());
TimelineEntities te = new TimelineEntities(); TimelineEntity entity = new TimelineEntity(); String id = "hello"; entity.setType(type); entity.setCreatedTime(1425016501000L); te.addEntity(entity); entity2.setCreatedTime(1425016503000L); entity2.addMetric(metric); te.addEntity(entity2);
TimelineEntities firstPublishedEntities = client.getPublishedEntities(0); Assert.assertEquals("sync entities should not be merged with async", 1, firstPublishedEntities.getEntities().size()); Assert.assertEquals( "async entities should be merged before publishing sync", 2, secondPublishedEntities.getEntities().size()); Assert.assertEquals("Order of Async Events Needs to be FIFO", "2", secondPublishedEntities.getEntities().get(0).getId()); Assert.assertEquals("Order of Async Events Needs to be FIFO", "3", secondPublishedEntities.getEntities().get(1).getId()); thirdPublishedEntities.getEntities().size()); Assert.assertEquals("Expected last sync Event is not proper", "4", thirdPublishedEntities.getEntities().get(0).getId());
TimelineEntities entities = new TimelineEntities(); for (int i = 1; i <=5; i++) { TimelineEntity entity = createEntity("e" + i, "type"); entity.addMetric(createDummyMetric(ts + i, Long.valueOf(i * 50))); entities.addEntity(entity); entities = new TimelineEntities(); for (int i = 1; i <=3; i++) { TimelineEntity entity = createEntity("e" + i, "type"); entity.addMetric(createDummyMetric(System.currentTimeMillis() + i, 50L)); entities.addEntity(entity);
@Test public void testASyncCallMerge() throws Exception { client.setSleepBeforeReturn(true); try { client.putEntitiesAsync(generateEntity("1")); Thread.sleep(TIME_TO_SLEEP / 2); // by the time first put response comes push 2 entities in the queue client.putEntitiesAsync(generateEntity("2")); client.putEntitiesAsync(generateEntity("3")); } catch (YarnException e) { Assert.fail("Exception is not expected"); } for (int i = 0; i < 4; i++) { if (client.getNumOfTimelineEntitiesPublished() == 2) { break; } Thread.sleep(TIME_TO_SLEEP); } Assert.assertEquals("two merged TimelineEntities needs to be published", 2, client.getNumOfTimelineEntitiesPublished()); TimelineEntities secondPublishedEntities = client.getPublishedEntities(1); Assert.assertEquals( "Merged TimelineEntities Object needs to 2 TimelineEntity Object", 2, secondPublishedEntities.getEntities().size()); Assert.assertEquals("Order of Async Events Needs to be FIFO", "2", secondPublishedEntities.getEntities().get(0).getId()); Assert.assertEquals("Order of Async Events Needs to be FIFO", "3", secondPublishedEntities.getEntities().get(1).getId()); }
private TimelineEntities generateTestEntities(int groups, int entities) { TimelineEntities te = new TimelineEntities(); for (int j = 0; j < groups; j++) { for (int i = 0; i < entities; i++) { te.addEntity(entity);
@Test public void testConfigurableNumberOfMerges() throws Exception { client.setSleepBeforeReturn(true); try { // At max 3 entities need to be merged client.putEntitiesAsync(generateEntity("1")); client.putEntitiesAsync(generateEntity("2")); client.putEntitiesAsync(generateEntity("3")); client.putEntitiesAsync(generateEntity("4")); client.putEntities(generateEntity("5")); client.putEntitiesAsync(generateEntity("6")); client.putEntitiesAsync(generateEntity("7")); client.putEntitiesAsync(generateEntity("8")); client.putEntitiesAsync(generateEntity("9")); client.putEntitiesAsync(generateEntity("10")); } catch (YarnException e) { Assert.fail("No exception expected"); } // not having the same logic here as it doesn't depend on how many times // events are published. Thread.sleep(2 * TIME_TO_SLEEP); printReceivedEntities(); for (TimelineEntities publishedEntities : client.publishedEntities) { Assert.assertTrue( "Number of entities should not be greater than 3 for each publish," + " but was " + publishedEntities.getEntities().size(), publishedEntities.getEntities().size() <= 3); } }
LOG.info(TimelineUtils.dumpTimelineRecordtoJSON(entity, true)); TimelineEntities entities = new TimelineEntities(); TimelineEntity entity1 = new TimelineEntity(); entities.addEntity(entity1); TimelineEntity entity2 = new TimelineEntity(); entities.addEntity(entity2); LOG.info(TimelineUtils.dumpTimelineRecordtoJSON(entities, true));
for (TimelineEntity te : data.getEntities()) {