package com.ldbc.driver.workloads.simple; import com.google.common.collect.Lists; import com.ldbc.driver.Operation; import com.ldbc.driver.Workload; import com.ldbc.driver.control.ConsoleAndFileDriverConfiguration; import com.ldbc.driver.control.DriverConfiguration; import com.ldbc.driver.util.Bucket; import com.ldbc.driver.util.Histogram; import com.ldbc.driver.util.Tuple; import com.ldbc.driver.util.Tuple2; import com.ldbc.driver.workloads.ClassNameWorkloadFactory; import com.ldbc.driver.workloads.WorkloadTest; import com.ldbc.driver.workloads.simple.db.SimpleDb; import org.junit.Ignore; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; // TODO unignore and fix existing failures @Ignore public class SimpleWorkloadTest extends WorkloadTest { @Override public Workload workload() throws Exception { DriverConfiguration configuration = ConsoleAndFileDriverConfiguration.fromDefaults( SimpleDb.class.getName(), SimpleWorkload.class.getName(), 1_000_000 ).applyArg( ConsoleAndFileDriverConfiguration.WARMUP_COUNT_ARG, Long.toString( 1_000_000 ) ).applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "true" ); Workload workload = new ClassNameWorkloadFactory( configuration.workloadClassName() ).createWorkload(); workload.init( configuration ); return workload; } @Override public List<Tuple2<Operation,Object>> operationsAndResults() throws Exception { return Lists.newArrayList( Tuple.<Operation,Object>tuple2( new InsertOperation( "table", "key", new HashMap<String,Iterator<Byte>>() ), "nothing" ), Tuple.<Operation,Object>tuple2( new ReadModifyWriteOperation( "table", "key", new ArrayList<String>(), new HashMap<String,Iterator<Byte>>() ), "nothing" ), Tuple.<Operation,Object>tuple2( new ReadOperation( "table", "key", new ArrayList<String>() ), "nothing" ), Tuple.<Operation,Object>tuple2( new ScanOperation( "table", "startKey", 1, new ArrayList<String>() ), "nothing" ), Tuple.<Operation,Object>tuple2( new UpdateOperation( "table", "key", new HashMap<String,Iterator<Byte>>() ), "nothing" ) ); } @Override public List<DriverConfiguration> configurations() throws Exception { return Lists.newArrayList( ConsoleAndFileDriverConfiguration.fromDefaults( SimpleDb.class.getName(), SimpleWorkload.class.getName(), 1_000_000 ).applyArg( ConsoleAndFileDriverConfiguration.WARMUP_COUNT_ARG, Long.toString( 1_000_000 ) ).applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "false" ).applyArg( ConsoleAndFileDriverConfiguration.TIME_COMPRESSION_RATIO_ARG, "0.0001" ) ); } @Override public List<Tuple2<DriverConfiguration,Histogram<Class,Double>>> configurationsWithExpectedQueryMix() throws Exception { Histogram<Class,Double> expectedQueryMixHistogram = new Histogram<>( 0d ); expectedQueryMixHistogram.addBucket( Bucket.DiscreteBucket.<Class>create( InsertOperation.class ), 1d ); expectedQueryMixHistogram .addBucket( Bucket.DiscreteBucket.<Class>create( ReadModifyWriteOperation.class ), 1d ); expectedQueryMixHistogram.addBucket( Bucket.DiscreteBucket.<Class>create( ReadOperation.class ), 1d ); expectedQueryMixHistogram.addBucket( Bucket.DiscreteBucket.<Class>create( ScanOperation.class ), 1d ); expectedQueryMixHistogram.addBucket( Bucket.DiscreteBucket.<Class>create( UpdateOperation.class ), 1d ); return Lists.newArrayList( Tuple.tuple2( ConsoleAndFileDriverConfiguration.fromDefaults( SimpleDb.class.getName(), SimpleWorkload.class.getName(), 1_000_000 ).applyArg( ConsoleAndFileDriverConfiguration.WARMUP_COUNT_ARG, Long.toString( 1_000_000 ) ).applyArg( ConsoleAndFileDriverConfiguration.IGNORE_SCHEDULED_START_TIMES_ARG, "true" ), expectedQueryMixHistogram ) ); } }