public SegmentId withInterval(Interval newInterval) { return of(dataSource, newInterval, version, partitionNum); }
/** * Creates a dummy SegmentId with the given data source. This method is useful in benchmark and test code. */ public static SegmentId dummy(String dataSource) { return of(dataSource, Intervals.ETERNITY, "dummy_version", 0); }
public static SegmentId of(String dataSource, Interval interval, String version, @Nullable ShardSpec shardSpec) { return of(dataSource, interval, version, shardSpec != null ? shardSpec.getPartitionNum() : 0); }
@JsonCreator public SegmentIdWithShardSpec( @JsonProperty("dataSource") String dataSource, @JsonProperty("interval") Interval interval, @JsonProperty("version") String version, @JsonProperty("shardSpec") ShardSpec shardSpec ) { this.id = SegmentId.of(dataSource, interval, version, shardSpec.getPartitionNum()); this.shardSpec = Preconditions.checkNotNull(shardSpec, "shardSpec"); this.asString = id.toString(); }
Integer possiblePartitionNum = Ints.tryParse(trail); if (possiblePartitionNum != null && possiblePartitionNum > 0) { possibleParsings.add(of(dataSource, new Interval(start, end), version, possiblePartitionNum)); possibleParsings.add(of(dataSource, new Interval(start, end), version, 0)); return possibleParsings;
private static SegmentId makeIdentifier(Interval interval, String version) { return SegmentId.of(QueryRunnerTestHelper.dataSource, interval, version, NoneShardSpec.instance()); }
private static SegmentId makeIdentifier(Interval interval, String version) { return SegmentId.of(QueryRunnerTestHelper.dataSource, interval, version, NoneShardSpec.instance()); }
private static SegmentId makeIdentifier(Interval interval, String version) { return SegmentId.of(QueryRunnerTestHelper.dataSource, interval, version, NoneShardSpec.instance()); }
/** * This class is needed for optional injection of pruneLoadSpec, see * github.com/google/guice/wiki/FrequentlyAskedQuestions#how-can-i-inject-optional-parameters-into-a-constructor */ @VisibleForTesting public static class PruneLoadSpecHolder { @VisibleForTesting public static final PruneLoadSpecHolder DEFAULT = new PruneLoadSpecHolder(); @Inject(optional = true) @PruneLoadSpec boolean pruneLoadSpec = false; }
@Test public void testIterateAllPossibleParsings() { String segmentId = "datasource_2015-01-01T00:00:00.000Z_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_ver_0_1"; List<SegmentId> possibleParsings = ImmutableList.copyOf(SegmentId.iterateAllPossibleParsings(segmentId)); DateTime dt1 = DateTimes.of("2015-01-01T00:00:00.000Z"); DateTime dt2 = DateTimes.of("2015-01-02T00:00:00.000Z"); DateTime dt3 = DateTimes.of("2015-01-03T00:00:00.000Z"); Set<SegmentId> expected = ImmutableSet.of( SegmentId.of("datasource", new Interval(dt1, dt2), "2015-01-03T00:00:00.000Z_ver_0", 1), SegmentId.of("datasource", new Interval(dt1, dt2), "2015-01-03T00:00:00.000Z_ver_0_1", 0), SegmentId.of("datasource_2015-01-01T00:00:00.000Z", new Interval(dt2, dt3), "ver_0", 1), SegmentId.of("datasource_2015-01-01T00:00:00.000Z", new Interval(dt2, dt3), "ver_0_1", 0) ); Assert.assertEquals(4, possibleParsings.size()); Assert.assertEquals(expected, ImmutableSet.copyOf(possibleParsings)); }
@Test public void testIterateAllPossibleParsingsWithEmptyVersion() { String segmentId = "datasource_2015-01-01T00:00:00.000Z_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z__1"; List<SegmentId> possibleParsings = ImmutableList.copyOf(SegmentId.iterateAllPossibleParsings(segmentId)); DateTime dt1 = DateTimes.of("2015-01-01T00:00:00.000Z"); DateTime dt2 = DateTimes.of("2015-01-02T00:00:00.000Z"); DateTime dt3 = DateTimes.of("2015-01-03T00:00:00.000Z"); Set<SegmentId> expected = ImmutableSet.of( SegmentId.of("datasource", new Interval(dt1, dt2), "2015-01-03T00:00:00.000Z_", 1), SegmentId.of("datasource", new Interval(dt1, dt2), "2015-01-03T00:00:00.000Z__1", 0), SegmentId.of("datasource_2015-01-01T00:00:00.000Z", new Interval(dt2, dt3), "", 1), SegmentId.of("datasource_2015-01-01T00:00:00.000Z", new Interval(dt2, dt3), "_1", 0) ); Assert.assertEquals(4, possibleParsings.size()); Assert.assertEquals(expected, ImmutableSet.copyOf(possibleParsings)); }
/** * Three DateTime strings included, but not ascending, that makes a pair of parsings impossible, compared to {@link * #testIterateAllPossibleParsings}. */ @Test public void testIterateAllPossibleParsings2() { String segmentId = "datasource_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_2015-01-02T00:00:00.000Z_ver_1"; List<SegmentId> possibleParsings = ImmutableList.copyOf(SegmentId.iterateAllPossibleParsings(segmentId)); DateTime dt1 = DateTimes.of("2015-01-02T00:00:00.000Z"); DateTime dt2 = DateTimes.of("2015-01-03T00:00:00.000Z"); Set<SegmentId> expected = ImmutableSet.of( SegmentId.of("datasource", new Interval(dt1, dt2), "2015-01-02T00:00:00.000Z_ver", 1), SegmentId.of("datasource", new Interval(dt1, dt2), "2015-01-02T00:00:00.000Z_ver_1", 0) ); Assert.assertEquals(2, possibleParsings.size()); Assert.assertEquals(expected, ImmutableSet.copyOf(possibleParsings)); } }
new QueryableIndexSegment( queryableIndex, SegmentId.of( schema.getDataSource(), sinkInterval,
@Test public void testDataSourceWithUnderscore() { String datasource = "datasource_1"; SegmentId desc = SegmentId.of(datasource, Intervals.of("2015-01-02/2015-01-03"), "ver_0", 1); Assert.assertEquals("datasource_1_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_ver_0_1", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); desc = desc.withInterval(Intervals.of("2014-10-20T00:00:00Z/P1D")); Assert.assertEquals("datasource_1_2014-10-20T00:00:00.000Z_2014-10-21T00:00:00.000Z_ver_0_1", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); desc = SegmentId.of(datasource, Intervals.of("2015-01-02/2015-01-03"), "ver", 0); Assert.assertEquals("datasource_1_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_ver", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); desc = desc.withInterval(Intervals.of("2014-10-20T00:00:00Z/P1D")); Assert.assertEquals("datasource_1_2014-10-20T00:00:00.000Z_2014-10-21T00:00:00.000Z_ver", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); }
@Test public void testBasic() { String datasource = "datasource"; SegmentId desc = SegmentId.of(datasource, Intervals.of("2015-01-02/2015-01-03"), "ver_0", 1); Assert.assertEquals("datasource_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_ver_0_1", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); desc = desc.withInterval(Intervals.of("2014-10-20T00:00:00Z/P1D")); Assert.assertEquals("datasource_2014-10-20T00:00:00.000Z_2014-10-21T00:00:00.000Z_ver_0_1", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); desc = SegmentId.of(datasource, Intervals.of("2015-01-02/2015-01-03"), "ver", 0); Assert.assertEquals("datasource_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_ver", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); desc = desc.withInterval(Intervals.of("2014-10-20T00:00:00Z/P1D")); Assert.assertEquals("datasource_2014-10-20T00:00:00.000Z_2014-10-21T00:00:00.000Z_ver", desc.toString()); Assert.assertEquals(desc, SegmentId.tryParse(datasource, desc.toString())); }
SegmentId desc = SegmentId.of(dataSource, Intervals.of("2015-01-02/2015-01-03"), "ver_0", 1); Assert.assertEquals( "datasource_2015-01-01T00:00:00.000Z_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_ver_0_1", Assert.assertEquals(desc, SegmentId.tryParse(dataSource, desc.toString())); desc = SegmentId.of(dataSource, Intervals.of("2015-01-02/2015-01-03"), "ver", 0); Assert.assertEquals( "datasource_2015-01-01T00:00:00.000Z_2015-01-02T00:00:00.000Z_2015-01-03T00:00:00.000Z_ver",