@Test public void testAddABunchOfSmallInts() { for (List<Integer> strings: someLists(nullsAnd(integers(Short.MIN_VALUE, Short.MAX_VALUE), 20), integers(2 * Shard.SHARD_SIZE + 20, 10 * Shard.SHARD_SIZE))) { AttrStoreBuilder asb = new AttrStoreBuilder(IntShard::create); strings.forEach(asb::add); assertThat(asb.size(), equalTo(strings.size())); AttrStore store = asb.build(); assertThat(store.size(), equalTo(strings.size())); assertThat(IntStream.range(0, strings.size()) .mapToObj(store::get) .collect(Collectors.toList()), contains(strings.toArray())); } }
@Test public void testAddABunchOfDoubles() { for (List<Double> strings: someLists(nullsAnd(doubles(), 20), integers(2 * Shard.SHARD_SIZE + 20, 10 * Shard.SHARD_SIZE))) { AttrStoreBuilder asb = new AttrStoreBuilder(DoubleShard::create); strings.forEach(asb::add); assertThat(asb.size(), equalTo(strings.size())); AttrStore store = asb.build(); assertThat(store.size(), equalTo(strings.size())); assertThat(IntStream.range(0, strings.size()) .mapToObj(store::get) .collect(Collectors.toList()), contains(strings.toArray())); } }
@Test public void testAddABunchOfStrings() { for (List<String> strings: someLists(nullsAnd(strings(), 20), integers(2 * Shard.SHARD_SIZE + 20, 10 * Shard.SHARD_SIZE))) { AttrStoreBuilder asb = new AttrStoreBuilder(); strings.forEach(asb::add); assertThat(asb.size(), equalTo(strings.size())); AttrStore store = asb.build(); assertThat(store.size(), equalTo(strings.size())); assertThat(IntStream.range(0, strings.size()) .mapToObj(store::get) .collect(Collectors.toList()), contains(strings.toArray())); } }
@Test public void testAddABunchOfLongs() { for (List<Long> strings: someLists(nullsAnd(longs(), 20), integers(2 * Shard.SHARD_SIZE + 20, 10 * Shard.SHARD_SIZE))) { AttrStoreBuilder asb = new AttrStoreBuilder(LongShard::create); strings.forEach(asb::add); assertThat(asb.size(), equalTo(strings.size())); AttrStore store = asb.build(); assertThat(store.size(), equalTo(strings.size())); assertThat(IntStream.range(0, strings.size()) .mapToObj(store::get) .collect(Collectors.toList()), contains(strings.toArray())); } }
@Test public void testAddABunchOfInts() { for (List<Integer> strings: someLists(nullsAnd(integers(), 20), integers(2 * Shard.SHARD_SIZE + 20, 10 * Shard.SHARD_SIZE))) { AttrStoreBuilder asb = new AttrStoreBuilder(IntShard::create); strings.forEach(asb::add); assertThat(asb.size(), equalTo(strings.size())); AttrStore store = asb.build(); assertThat(store.size(), equalTo(strings.size())); assertThat(IntStream.range(0, strings.size()) .mapToObj(store::get) .collect(Collectors.toList()), contains(strings.toArray())); } }
@Test public void testAddABunchOfSmallLongs() { for (List<Long> strings: someLists(nullsAnd(longs(Short.MIN_VALUE, Short.MAX_VALUE), 20), integers(2 * Shard.SHARD_SIZE + 20, 10 * Shard.SHARD_SIZE))) { AttrStoreBuilder asb = new AttrStoreBuilder(LongShard::create); strings.forEach(asb::add); assertThat(asb.size(), equalTo(strings.size())); AttrStore store = asb.build(); assertThat(store.size(), equalTo(strings.size())); assertThat(IntStream.range(0, strings.size()) .mapToObj(store::get) .collect(Collectors.toList()), contains(strings.toArray())); } }
@Test public void testAddABunchOfMediumLongs() { for (List<Long> strings: someLists(nullsAnd(longs(Integer.MIN_VALUE, Integer.MAX_VALUE), 20), integers(2 * Shard.SHARD_SIZE + 20, 10 * Shard.SHARD_SIZE))) { AttrStoreBuilder asb = new AttrStoreBuilder(LongShard::create); strings.forEach(asb::add); assertThat(asb.size(), equalTo(strings.size())); AttrStore store = asb.build(); assertThat(store.size(), equalTo(strings.size())); assertThat(IntStream.range(0, strings.size()) .mapToObj(store::get) .collect(Collectors.toList()), contains(strings.toArray())); } }
/** * Create a generator as a combination of a null value generator and * generator of type T. * * @param <T> * Type of the values generated. */ public static <T> Generator<T> nullsAnd(Generator<T> generator) { return nullsAnd(generator, 5); }
public FieldGenerator(ColumnSchema schema) { switch (schema.getType()) { case ULONG: case LONG: case TIME: { generator = new LongBytesGenerator(); break; } case DOUBLE: { generator = new DoubleBytesGenerator(); break; } case BINARY: { generator = CombinedGenerators.byteArrays( PrimitiveGenerators.integers(0, schema.getMaxLength())); break; } case STRING: { generator = new StringBytesGenerator(schema.getMaxLength()); break; } default: generator = CombinedGenerators.byteArrays( PrimitiveGenerators.fixedValues(32)); } if (schema.getIsNullable()) { generator = CombinedGenerators.nullsAnd(generator, 10); } }