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()); } }
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 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());
nextEntityInTheQueue.getEntities().getEntities()); count++; if (count == numberOfAsyncsToMerge) {
@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()); }
@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); } }
for (TimelineEntity te : data.getEntities()) {