コード例 #1
0
  @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());
  }
コード例 #2
0
  @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());
  }
コード例 #3
0
  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();
  }