@Test(timeout = 60000) public void testPersistWithCommitMetadata() throws Exception { final Object commitMetadata = "dummyCommitMetadata"; testPersist(commitMetadata); plumber = (RealtimePlumber) realtimePlumberSchool.findPlumber(schema, tuningConfig, metrics); Assert.assertEquals(commitMetadata, plumber.startJob()); }
@Test(timeout = 60000) public void testPersistFails() throws Exception { final MutableBoolean committed = new MutableBoolean(false); plumber .getSinks() .put( 0L, new Sink( new Interval(0, TimeUnit.HOURS.toMillis(1)), schema, tuningConfig, new DateTime("2014-12-01T12:34:56.789").toString())); plumber.startJob(); final InputRow row = EasyMock.createNiceMock(InputRow.class); EasyMock.expect(row.getTimestampFromEpoch()).andReturn(0L); EasyMock.expect(row.getDimensions()).andReturn(new ArrayList<String>()); EasyMock.replay(row); plumber.add(row, Committers.supplierOf(Committers.nil())); plumber.persist( Committers.supplierFromRunnable( new Runnable() { @Override public void run() { committed.setValue(true); throw new RuntimeException(); } }) .get()); while (!committed.booleanValue()) { Thread.sleep(100); } // Exception may need time to propagate while (metrics.failedPersists() < 1) { Thread.sleep(100); } Assert.assertEquals(1, metrics.failedPersists()); }
private void testPersist(final Object commitMetadata) throws Exception { final MutableBoolean committed = new MutableBoolean(false); plumber .getSinks() .put( 0L, new Sink( new Interval(0, TimeUnit.HOURS.toMillis(1)), schema, tuningConfig, new DateTime("2014-12-01T12:34:56.789").toString())); Assert.assertNull(plumber.startJob()); final InputRow row = EasyMock.createNiceMock(InputRow.class); EasyMock.expect(row.getTimestampFromEpoch()).andReturn(0L); EasyMock.expect(row.getDimensions()).andReturn(new ArrayList<String>()); EasyMock.replay(row); final Committer committer = new Committer() { @Override public Object getMetadata() { return commitMetadata; } @Override public void run() { committed.setValue(true); } }; plumber.add(row, Suppliers.ofInstance(committer)); plumber.persist(committer); while (!committed.booleanValue()) { Thread.sleep(100); } plumber.getSinks().clear(); plumber.finishJob(); }