package com.ldbc.driver.workloads.ldbc.snb.bi; import com.google.common.collect.Lists; import com.ldbc.driver.Operation; import com.ldbc.driver.Workload; import com.ldbc.driver.WorkloadException; import com.ldbc.driver.control.ConsoleAndFileDriverConfiguration; import com.ldbc.driver.control.DriverConfiguration; import com.ldbc.driver.control.DriverConfigurationException; import com.ldbc.driver.testutils.TestUtils; import com.ldbc.driver.util.Bucket; import com.ldbc.driver.util.Histogram; import com.ldbc.driver.util.MapUtils; import com.ldbc.driver.util.Tuple; import com.ldbc.driver.util.Tuple2; import com.ldbc.driver.util.TypeChangeFun; import com.ldbc.driver.workloads.ClassNameWorkloadFactory; import com.ldbc.driver.workloads.OperationMixBuilder; import com.ldbc.driver.workloads.WorkloadTest; import com.ldbc.driver.workloads.ldbc.snb.bi.db.DummyLdbcSnbBiDb; import com.ldbc.driver.workloads.ldbc.snb.bi.db.DummyLdbcSnbBiOperationInstances; import com.ldbc.driver.workloads.ldbc.snb.bi.db.DummyLdbcSnbBiOperationResultInstances; import com.ldbc.driver.workloads.ldbc.snb.bi.db.DummyLdbcSnbBiOperationResultSets; import org.junit.Test; import java.io.IOException; import java.util.HashMap; import java.util.List; import java.util.Map; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; public class BiWorkloadTest extends WorkloadTest { @Override public Workload workload() throws Exception { DriverConfiguration configuration = ConsoleAndFileDriverConfiguration.fromDefaults( DummyLdbcSnbBiDb.class.getName(), LdbcSnbBiWorkload.class.getName(), 1 ).applyArgs( LdbcSnbBiWorkloadConfiguration.defaultConfigSF1() ).applyArg( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ); Workload workload = new ClassNameWorkloadFactory( configuration.workloadClassName() ).createWorkload(); workload.init( configuration ); return workload; } @Override public List<Tuple2<Operation,Object>> operationsAndResults() { return Lists.newArrayList( Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read1(), DummyLdbcSnbBiOperationResultSets.read1Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read2(), DummyLdbcSnbBiOperationResultSets.read2Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read3(), DummyLdbcSnbBiOperationResultSets.read3Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read4(), DummyLdbcSnbBiOperationResultSets.read4Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read5(), DummyLdbcSnbBiOperationResultSets.read5Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read6(), DummyLdbcSnbBiOperationResultSets.read6Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read7(), DummyLdbcSnbBiOperationResultSets.read7Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read8(), DummyLdbcSnbBiOperationResultSets.read8Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read9(), DummyLdbcSnbBiOperationResultSets.read9Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read10(), DummyLdbcSnbBiOperationResultSets.read10Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read11(), DummyLdbcSnbBiOperationResultSets.read11Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read12(), DummyLdbcSnbBiOperationResultSets.read12Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read13(), DummyLdbcSnbBiOperationResultSets.read13Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read14(), DummyLdbcSnbBiOperationResultSets.read14Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read15(), DummyLdbcSnbBiOperationResultSets.read15Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read16(), DummyLdbcSnbBiOperationResultSets.read16Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read17(), DummyLdbcSnbBiOperationResultInstances.read17Result() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read18(), DummyLdbcSnbBiOperationResultSets.read18Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read19(), DummyLdbcSnbBiOperationResultSets.read19Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read20(), DummyLdbcSnbBiOperationResultSets.read20Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read21(), DummyLdbcSnbBiOperationResultSets.read21Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read22(), DummyLdbcSnbBiOperationResultSets.read22Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read23(), DummyLdbcSnbBiOperationResultSets.read23Results() ), Tuple.<Operation,Object>tuple2( DummyLdbcSnbBiOperationInstances.read24(), DummyLdbcSnbBiOperationResultSets.read24Results() ) ); } @Override public List<DriverConfiguration> configurations() throws Exception { return Lists.newArrayList( ConsoleAndFileDriverConfiguration .fromDefaults( DummyLdbcSnbBiDb.class.getName(), LdbcSnbBiWorkload.class.getName(), 1_000_000 ) .applyArg( ConsoleAndFileDriverConfiguration.WARMUP_COUNT_ARG, Long.toString( 0 ) ) .applyArgs( LdbcSnbBiWorkloadConfiguration.defaultConfigSF1() ) .applyArg( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ) .applyArg( ConsoleAndFileDriverConfiguration.TIME_COMPRESSION_RATIO_ARG, "0.2" ) .applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "false" ), ConsoleAndFileDriverConfiguration .fromDefaults( DummyLdbcSnbBiDb.class.getName(), LdbcSnbBiWorkload.class.getName(), 1_000_000 ) .applyArg( ConsoleAndFileDriverConfiguration.WARMUP_COUNT_ARG, Long.toString( 1_000_000 ) ) .applyArgs( LdbcSnbBiWorkloadConfiguration.defaultConfigSF1() ) .applyArg( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ) .applyArg( ConsoleAndFileDriverConfiguration.TIME_COMPRESSION_RATIO_ARG, "0.2" ) .applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "true" ) ); } @Override public List<Tuple2<DriverConfiguration,Histogram<Class,Double>>> configurationsWithExpectedQueryMix() throws Exception { Histogram<Class,Double> expectedQueryMixHistogram = new Histogram<>( 0d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery1PostingSummary.class ), 1d ); expectedQueryMixHistogram.addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery2TopTags.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery3TagEvolution.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery4PopularCountryTopics.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery5TopCountryPosters.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery6ActivePosters.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery7AuthoritativeUsers.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery8RelatedTopics.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery9RelatedForums.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery10TagPerson.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery11UnrelatedReplies.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery12TrendingPosts.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery13PopularMonthlyTags.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery14TopThreadInitiators.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery15SocialNormals.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery16ExpertsInSocialCircle.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery17FriendshipTriangles.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery18PersonPostCounts.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery19StrangerInteraction.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery20HighLevelTopics.class ), 1d ); expectedQueryMixHistogram.addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery21Zombies.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery22InternationalDialog.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery23HolidayDestinations.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( LdbcSnbBiQuery24MessagesByTopic.class ), 1d ); return Lists.newArrayList( Tuple.tuple2( ConsoleAndFileDriverConfiguration .fromDefaults( DummyLdbcSnbBiDb.class.getName(), LdbcSnbBiWorkload.class.getName(), 1_000_000 ) .applyArgs( LdbcSnbBiWorkloadConfiguration.defaultConfigSF1() ) .applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "true" ) .applyArg( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ), expectedQueryMixHistogram ) ); } @Test public void shouldConvertFrequenciesToInterleavesWhenFrequenciesProvidedAndSomeInterleavesNotProvided() throws Exception { // Given long updateInterleave = 10; OperationMixBuilder.OperationMix operationMix = OperationMixBuilder.fromFrequencies( updateInterleave ) .addOperationFrequency( LdbcSnbBiQuery1PostingSummary.TYPE, 10 ) .addOperationFrequency( LdbcSnbBiQuery2TopTags.TYPE, 20 ) .addOperationFrequency( LdbcSnbBiQuery3TagEvolution.TYPE, 30 ) .addOperationFrequency( LdbcSnbBiQuery4PopularCountryTopics.TYPE, 40 ) .addOperationFrequency( LdbcSnbBiQuery5TopCountryPosters.TYPE, 50 ) .addOperationFrequency( LdbcSnbBiQuery6ActivePosters.TYPE, 60 ) .addOperationFrequency( LdbcSnbBiQuery7AuthoritativeUsers.TYPE, 70 ) .addOperationFrequency( LdbcSnbBiQuery8RelatedTopics.TYPE, 80 ) .addOperationFrequency( LdbcSnbBiQuery9RelatedForums.TYPE, 90 ) .addOperationFrequency( LdbcSnbBiQuery10TagPerson.TYPE, 100 ) .addOperationFrequency( LdbcSnbBiQuery11UnrelatedReplies.TYPE, 200 ) .addOperationFrequency( LdbcSnbBiQuery12TrendingPosts.TYPE, 300 ) .addOperationFrequency( LdbcSnbBiQuery13PopularMonthlyTags.TYPE, 400 ) .addOperationFrequency( LdbcSnbBiQuery14TopThreadInitiators.TYPE, 500 ) .addOperationFrequency( LdbcSnbBiQuery15SocialNormals.TYPE, 600 ) .addOperationFrequency( LdbcSnbBiQuery16ExpertsInSocialCircle.TYPE, 700 ) .addOperationFrequency( LdbcSnbBiQuery17FriendshipTriangles.TYPE, 800 ) .addOperationFrequency( LdbcSnbBiQuery18PersonPostCounts.TYPE, 900 ) .addOperationFrequency( LdbcSnbBiQuery19StrangerInteraction.TYPE, 1000 ) .addOperationFrequency( LdbcSnbBiQuery20HighLevelTopics.TYPE, 10 ) .addOperationFrequency( LdbcSnbBiQuery21Zombies.TYPE, 20 ) .addOperationFrequency( LdbcSnbBiQuery22InternationalDialog.TYPE, 30 ) .addOperationFrequency( LdbcSnbBiQuery23HolidayDestinations.TYPE, 40 ) .addOperationFrequency( LdbcSnbBiQuery24MessagesByTopic.TYPE, 50 ) .build(); DriverConfiguration configuration = ConsoleAndFileDriverConfiguration.fromDefaults( DummyLdbcSnbBiDb.class.getName(), LdbcSnbBiWorkload.class.getName(), 1 ).applyArgs( LdbcSnbBiWorkloadConfiguration.defaultConfigSF1() ).applyArg( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ).applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "true" ).applyArgs( MapUtils.UNSAFE_changeTypes( operationMix.interleaves(), TypeChangeFun.mapped( LdbcSnbBiWorkloadConfiguration.OPERATION_TYPE_TO_INTERLEAVE_KEY_MAPPING ), TypeChangeFun.TO_STRING ) ); // When try ( Workload workload = new LdbcSnbBiWorkload() ) { workload.init( configuration ); // Then Map<String,String> configurationAsMap = configuration.asMap(); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_1_INTERLEAVE_KEY ), equalTo( "100" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_2_INTERLEAVE_KEY ), equalTo( "200" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_3_INTERLEAVE_KEY ), equalTo( "300" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_4_INTERLEAVE_KEY ), equalTo( "400" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_5_INTERLEAVE_KEY ), equalTo( "500" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_6_INTERLEAVE_KEY ), equalTo( "600" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_7_INTERLEAVE_KEY ), equalTo( "700" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_8_INTERLEAVE_KEY ), equalTo( "800" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_9_INTERLEAVE_KEY ), equalTo( "900" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_10_INTERLEAVE_KEY ), equalTo( "1000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_11_INTERLEAVE_KEY ), equalTo( "2000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_12_INTERLEAVE_KEY ), equalTo( "3000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_13_INTERLEAVE_KEY ), equalTo( "4000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_14_INTERLEAVE_KEY ), equalTo( "5000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_15_INTERLEAVE_KEY ), equalTo( "6000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_16_INTERLEAVE_KEY ), equalTo( "7000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_17_INTERLEAVE_KEY ), equalTo( "8000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_18_INTERLEAVE_KEY ), equalTo( "9000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_19_INTERLEAVE_KEY ), equalTo( "10000" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_20_INTERLEAVE_KEY ), equalTo( "100" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_21_INTERLEAVE_KEY ), equalTo( "200" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_22_INTERLEAVE_KEY ), equalTo( "300" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_23_INTERLEAVE_KEY ), equalTo( "400" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_24_INTERLEAVE_KEY ), equalTo( "500" ) ); } } @Test public void shouldThrowExceptionWhenSomeFrequenciesNotProvidedAndSomeInterleavesNoProvided() throws WorkloadException, DriverConfigurationException, IOException { // Given Map<String,Long> operationMixMap = new HashMap<>(); // operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_1_INTERLEAVE_KEY ,1l); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_2_INTERLEAVE_KEY, 2l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_3_INTERLEAVE_KEY, 3l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_4_INTERLEAVE_KEY, 4l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_5_INTERLEAVE_KEY, 5l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_6_INTERLEAVE_KEY, 6l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_7_INTERLEAVE_KEY, 7l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_8_INTERLEAVE_KEY, 8l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_9_INTERLEAVE_KEY, 9l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_10_INTERLEAVE_KEY, 10l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_11_INTERLEAVE_KEY, 11l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_12_INTERLEAVE_KEY, 12l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_13_INTERLEAVE_KEY, 13l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_14_INTERLEAVE_KEY, 14l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_15_INTERLEAVE_KEY, 15l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_16_INTERLEAVE_KEY, 16l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_17_INTERLEAVE_KEY, 17l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_18_INTERLEAVE_KEY, 18l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_19_INTERLEAVE_KEY, 19l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_20_INTERLEAVE_KEY, 20l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_21_INTERLEAVE_KEY, 21l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_22_INTERLEAVE_KEY, 22l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_23_INTERLEAVE_KEY, 23l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_24_INTERLEAVE_KEY, 24l ); // operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_1_FREQUENCY_KEY ,1l); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_2_FREQUENCY_KEY, 2l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_3_FREQUENCY_KEY, 3l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_4_FREQUENCY_KEY, 4l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_5_FREQUENCY_KEY, 5l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_6_FREQUENCY_KEY, 6l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_7_FREQUENCY_KEY, 7l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_8_FREQUENCY_KEY, 8l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_9_FREQUENCY_KEY, 9l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_10_FREQUENCY_KEY, 10l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_11_FREQUENCY_KEY, 11l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_12_FREQUENCY_KEY, 12l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_13_FREQUENCY_KEY, 13l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_14_FREQUENCY_KEY, 14l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_15_FREQUENCY_KEY, 15l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_16_FREQUENCY_KEY, 16l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_17_FREQUENCY_KEY, 17l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_18_FREQUENCY_KEY, 18l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_19_FREQUENCY_KEY, 19l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_20_FREQUENCY_KEY, 20l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_21_FREQUENCY_KEY, 21l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_22_FREQUENCY_KEY, 22l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_23_FREQUENCY_KEY, 23l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_24_FREQUENCY_KEY, 24l ); Map<String,String> defaultSnbBiParams = LdbcSnbBiWorkloadConfiguration.defaultConfigSF1(); defaultSnbBiParams.remove( LdbcSnbBiWorkloadConfiguration.OPERATION_1_INTERLEAVE_KEY ); defaultSnbBiParams.remove( LdbcSnbBiWorkloadConfiguration.OPERATION_1_FREQUENCY_KEY ); defaultSnbBiParams.put( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ); DriverConfiguration configuration = ConsoleAndFileDriverConfiguration.fromDefaults( DummyLdbcSnbBiDb.class.getName(), LdbcSnbBiWorkload.class.getName(), 1 ) .applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "true" ) .applyArgs( defaultSnbBiParams ) .applyArgs( MapUtils.UNSAFE_changeTypes( operationMixMap, TypeChangeFun.IDENTITY, TypeChangeFun.TO_STRING ) ); // When boolean exceptionThrown = false; try ( Workload workload = new LdbcSnbBiWorkload() ) { workload.init( configuration ); } catch ( WorkloadException e ) { System.out.println( e.getMessage() ); exceptionThrown = true; } // Then // either interleaves or frequencies need to be provided assertTrue( exceptionThrown ); } @Test public void shouldUseInterleavesWhenAllInterleavesProvided() throws WorkloadException, DriverConfigurationException, IOException { // Given Map<String,Long> operationMixMap = new HashMap<>(); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_1_INTERLEAVE_KEY, 10l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_2_INTERLEAVE_KEY, 20l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_3_INTERLEAVE_KEY, 30l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_4_INTERLEAVE_KEY, 40l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_5_INTERLEAVE_KEY, 50l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_6_INTERLEAVE_KEY, 60l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_7_INTERLEAVE_KEY, 70l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_8_INTERLEAVE_KEY, 80l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_9_INTERLEAVE_KEY, 90l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_10_INTERLEAVE_KEY, 100l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_11_INTERLEAVE_KEY, 110l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_12_INTERLEAVE_KEY, 120l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_13_INTERLEAVE_KEY, 130l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_14_INTERLEAVE_KEY, 140l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_15_INTERLEAVE_KEY, 150l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_16_INTERLEAVE_KEY, 160l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_17_INTERLEAVE_KEY, 170l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_18_INTERLEAVE_KEY, 180l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_19_INTERLEAVE_KEY, 190l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_20_INTERLEAVE_KEY, 200l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_21_INTERLEAVE_KEY, 210l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_22_INTERLEAVE_KEY, 220l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_23_INTERLEAVE_KEY, 230l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_24_INTERLEAVE_KEY, 240l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_1_FREQUENCY_KEY ,1l); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_2_FREQUENCY_KEY, 2l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_3_FREQUENCY_KEY, 3l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_4_FREQUENCY_KEY, 4l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_5_FREQUENCY_KEY, 5l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_6_FREQUENCY_KEY, 6l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_7_FREQUENCY_KEY, 7l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_8_FREQUENCY_KEY, 8l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_9_FREQUENCY_KEY, 9l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_10_FREQUENCY_KEY, 10l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_11_FREQUENCY_KEY, 11l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_12_FREQUENCY_KEY, 12l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_13_FREQUENCY_KEY, 13l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_14_FREQUENCY_KEY, 14l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_15_FREQUENCY_KEY, 15l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_16_FREQUENCY_KEY, 16l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_17_FREQUENCY_KEY, 17l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_18_FREQUENCY_KEY, 18l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_19_FREQUENCY_KEY, 19l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_20_FREQUENCY_KEY, 20l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_21_FREQUENCY_KEY, 21l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_22_FREQUENCY_KEY, 22l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_23_FREQUENCY_KEY, 23l ); operationMixMap.put( LdbcSnbBiWorkloadConfiguration.OPERATION_24_FREQUENCY_KEY, 24l ); Map<String,String> defaultSnbBiParams = LdbcSnbBiWorkloadConfiguration.defaultConfigSF1(); defaultSnbBiParams.remove( LdbcSnbBiWorkloadConfiguration.OPERATION_1_FREQUENCY_KEY ); defaultSnbBiParams.put( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ); DriverConfiguration configuration = ConsoleAndFileDriverConfiguration.fromDefaults( DummyLdbcSnbBiDb.class.getName(), LdbcSnbBiWorkload.class.getName(), 1 ) .applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "true" ) .applyArgs( defaultSnbBiParams ) .applyArg( LdbcSnbBiWorkloadConfiguration.PARAMETERS_DIRECTORY, TestUtils.getResource( "/snb/bi/" ).getAbsolutePath() ) .applyArgs( MapUtils.UNSAFE_changeTypes( operationMixMap, TypeChangeFun.IDENTITY, TypeChangeFun.TO_STRING ) ); // When try ( Workload workload = new LdbcSnbBiWorkload() ) { workload.init( configuration ); // Then Map<String,String> configurationAsMap = configuration.asMap(); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_1_INTERLEAVE_KEY ), equalTo( "10" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_2_INTERLEAVE_KEY ), equalTo( "20" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_3_INTERLEAVE_KEY ), equalTo( "30" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_4_INTERLEAVE_KEY ), equalTo( "40" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_5_INTERLEAVE_KEY ), equalTo( "50" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_6_INTERLEAVE_KEY ), equalTo( "60" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_7_INTERLEAVE_KEY ), equalTo( "70" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_8_INTERLEAVE_KEY ), equalTo( "80" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_9_INTERLEAVE_KEY ), equalTo( "90" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_10_INTERLEAVE_KEY ), equalTo( "100" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_11_INTERLEAVE_KEY ), equalTo( "110" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_12_INTERLEAVE_KEY ), equalTo( "120" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_13_INTERLEAVE_KEY ), equalTo( "130" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_14_INTERLEAVE_KEY ), equalTo( "140" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_15_INTERLEAVE_KEY ), equalTo( "150" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_16_INTERLEAVE_KEY ), equalTo( "160" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_17_INTERLEAVE_KEY ), equalTo( "170" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_18_INTERLEAVE_KEY ), equalTo( "180" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_19_INTERLEAVE_KEY ), equalTo( "190" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_20_INTERLEAVE_KEY ), equalTo( "200" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_21_INTERLEAVE_KEY ), equalTo( "210" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_22_INTERLEAVE_KEY ), equalTo( "220" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_23_INTERLEAVE_KEY ), equalTo( "230" ) ); assertThat( configurationAsMap.get( LdbcSnbBiWorkloadConfiguration.OPERATION_24_INTERLEAVE_KEY ), equalTo( "240" ) ); } } }