Beispiel #1
0
  @Test
  public void testSwap() throws Exception {
    final DataSchema schema =
        new DataSchema(
            "test",
            null,
            new AggregatorFactory[] {new CountAggregatorFactory("rows")},
            new UniformGranularitySpec(Granularity.HOUR, QueryGranularities.MINUTE, null),
            new DefaultObjectMapper());

    final Interval interval = new Interval("2013-01-01/2013-01-02");
    final String version = new DateTime().toString();
    RealtimeTuningConfig tuningConfig =
        new RealtimeTuningConfig(
            100,
            new Period("P1Y"),
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            null,
            0,
            0,
            null,
            null);
    final Sink sink =
        new Sink(
            interval,
            schema,
            tuningConfig.getShardSpec(),
            version,
            tuningConfig.getMaxRowsInMemory(),
            tuningConfig.isReportParseExceptions());

    sink.add(
        new InputRow() {
          @Override
          public List<String> getDimensions() {
            return Lists.newArrayList();
          }

          @Override
          public long getTimestampFromEpoch() {
            return new DateTime("2013-01-01").getMillis();
          }

          @Override
          public DateTime getTimestamp() {
            return new DateTime("2013-01-01");
          }

          @Override
          public List<String> getDimension(String dimension) {
            return Lists.newArrayList();
          }

          @Override
          public float getFloatMetric(String metric) {
            return 0;
          }

          @Override
          public long getLongMetric(String metric) {
            return 0L;
          }

          @Override
          public Object getRaw(String dimension) {
            return null;
          }

          @Override
          public int compareTo(Row o) {
            return 0;
          }
        });

    FireHydrant currHydrant = sink.getCurrHydrant();
    Assert.assertEquals(new Interval("2013-01-01/PT1M"), currHydrant.getIndex().getInterval());

    FireHydrant swapHydrant = sink.swap();

    sink.add(
        new InputRow() {
          @Override
          public List<String> getDimensions() {
            return Lists.newArrayList();
          }

          @Override
          public long getTimestampFromEpoch() {
            return new DateTime("2013-01-01").getMillis();
          }

          @Override
          public DateTime getTimestamp() {
            return new DateTime("2013-01-01");
          }

          @Override
          public List<String> getDimension(String dimension) {
            return Lists.newArrayList();
          }

          @Override
          public float getFloatMetric(String metric) {
            return 0;
          }

          @Override
          public long getLongMetric(String metric) {
            return 0L;
          }

          @Override
          public Object getRaw(String dimension) {
            return null;
          }

          @Override
          public int compareTo(Row o) {
            return 0;
          }
        });

    Assert.assertEquals(currHydrant, swapHydrant);
    Assert.assertNotSame(currHydrant, sink.getCurrHydrant());
    Assert.assertEquals(
        new Interval("2013-01-01/PT1M"), sink.getCurrHydrant().getIndex().getInterval());

    Assert.assertEquals(2, Iterators.size(sink.iterator()));
  }