diff --git a/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerIndexFromIndexTest.java b/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerIndexFromIndexTest.java index 107b90a2db..71129a811f 100644 --- a/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerIndexFromIndexTest.java +++ b/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerIndexFromIndexTest.java @@ -58,7 +58,7 @@ */ class OnlineIndexerIndexFromIndexTest extends OnlineIndexerTest { - private void populateData(final long numRecords, final long numOtherRecords) { + private void populateDataSimpleAndOther(final long numRecords, final long numOtherRecords) { openSimpleMetaData(); List simpleRecords = LongStream.range(0, numRecords).mapToObj(val -> TestRecords1Proto.MySimpleRecord.newBuilder() @@ -177,7 +177,7 @@ void testNonIdempotentIndexFromIndex(boolean reverseScan) { Index tgtIndex = new Index("tgt_index", field("num_value_3_indexed").ungrouped(), IndexTypes.SUM); FDBRecordStoreTestBase.RecordMetaDataHook hook = myHook(srcIndex, tgtIndex); - populateData(numRecords, otherRecords); + populateDataSimpleAndOther(numRecords, otherRecords); openSimpleMetaData(hook); buildIndexClean(srcIndex); @@ -208,7 +208,7 @@ void testCanBuildNonIdempotentIndexFromIndexOnNewStoreWithOldFormatVersionInInde Index tgtIndex = new Index("tgt_index", field("num_value_3_indexed").ungrouped(), IndexTypes.SUM); FDBRecordStoreTestBase.RecordMetaDataHook hook = myHook(srcIndex, tgtIndex); - populateData(numRecords, otherRecords); + populateDataSimpleAndOther(numRecords, otherRecords); openSimpleMetaData(hook); buildIndexClean(srcIndex); @@ -244,7 +244,7 @@ void testNonIdempotentIndexFromIndexOldFormatFallback(boolean reverseScan) { Index tgtIndex = new Index("tgt_index", field("num_value_3_indexed").ungrouped(), IndexTypes.SUM); FDBRecordStoreTestBase.RecordMetaDataHook hook = myHook(srcIndex, tgtIndex); - populateData(numRecords, otherRecords); + populateDataSimpleAndOther(numRecords, otherRecords); openSimpleMetaData(hook); buildIndexClean(srcIndex); @@ -277,7 +277,7 @@ void testNonIdempotentIndexFromIndexOldFormatNoFallback() { Index tgtIndex = new Index("tgt_index", field("num_value_3_indexed").ungrouped(), IndexTypes.SUM); FDBRecordStoreTestBase.RecordMetaDataHook hook = myHook(srcIndex, tgtIndex); - populateData(numRecords, otherRecords); + populateDataSimpleAndOther(numRecords, otherRecords); openSimpleMetaData(hook); buildIndexClean(srcIndex); diff --git a/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerMultiTargetTest.java b/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerMultiTargetTest.java index 14d20f7109..33bd40ddb7 100644 --- a/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerMultiTargetTest.java +++ b/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerMultiTargetTest.java @@ -30,6 +30,7 @@ import com.apple.foundationdb.record.metadata.expressions.GroupingKeyExpression; import com.apple.foundationdb.synchronizedsession.SynchronizedSessionLockedException; import com.apple.test.BooleanSource; +import com.apple.test.SuperSlow; import com.apple.test.Tags; import org.junit.jupiter.api.Tag; import org.junit.jupiter.api.Test; @@ -663,13 +664,19 @@ void testSingleTargetCompletion() { assertEquals(numRecords, timer.getCount(FDBStoreTimer.Counts.ONLINE_INDEX_BUILDER_RECORDS_INDEXED)); } - // uncomment to compare - // @Test + @Test + @SuperSlow void benchMarkMultiTarget() { + // Expected to run in a nightly test. To run in intellij, add "-Ptests.nightly=true" to the run configuration + // (As in `:fdb-record-layer-core:test --tests "com.apple.foundationdb.record.provider.foundationdb.OnlineIndexerMultiTargetTest.benchMarkMultiTarget" -Ptests.nightly=true`) // compare single target build to multi target index building final FDBStoreTimer singleTimer = new FDBStoreTimer(); final FDBStoreTimer multiTimer = new FDBStoreTimer(); - final int numRecords = 5555; + final int populateChunkSize = 5555; + final int numRecords = 5 * populateChunkSize; + for (int i = 0; i < 5; i++) { + populateData(populateChunkSize, i * populateChunkSize); + } List indexes = new ArrayList<>(); indexes.add(new Index("indexA", field("num_value_2"), EmptyKeyExpression.EMPTY, IndexTypes.VALUE, IndexOptions.UNIQUE_OPTIONS)); @@ -677,8 +684,6 @@ void benchMarkMultiTarget() { indexes.add(new Index("indexC", field("num_value_unique"), EmptyKeyExpression.EMPTY, IndexTypes.VALUE, IndexOptions.UNIQUE_OPTIONS)); indexes.add(new Index("indexD", new GroupingKeyExpression(EmptyKeyExpression.EMPTY, 0), IndexTypes.COUNT)); - populateData(numRecords); - FDBRecordStoreTestBase.RecordMetaDataHook hook = allIndexesHook(indexes); long startSingle = System.currentTimeMillis(); diff --git a/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerTest.java b/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerTest.java index 8b14eb2fd1..e6a653f6a7 100644 --- a/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerTest.java +++ b/fdb-record-layer-core/src/test/java/com/apple/foundationdb/record/provider/foundationdb/OnlineIndexerTest.java @@ -228,8 +228,12 @@ protected void scrubAndValidate(List indexes) { } protected void populateData(final long numRecords) { + populateData(numRecords, 0L); + } + + protected void populateData(final long numRecords, final long start) { openSimpleMetaData(); - List records = LongStream.range(0, numRecords).mapToObj(val -> + List records = LongStream.range(start, start + numRecords).mapToObj(val -> TestRecords1Proto.MySimpleRecord.newBuilder() .setRecNo(val) .setNumValue2((int)val * 19)