package com.ldbc.driver.workloads; import com.ldbc.driver.WorkloadException; import com.ldbc.driver.control.DriverConfigurationException; import org.junit.Test; import java.util.HashMap; import java.util.Map; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; public class OperationMixTest { @Test public void equalityShouldWorkForFrequencies() throws WorkloadException, DriverConfigurationException { long baseIntervalAsMilli = 10; OperationMixBuilder.OperationMix operationMix1 = OperationMixBuilder.fromFrequencies( baseIntervalAsMilli ) .addOperationFrequency( 1, 10 ) .addOperationFrequency( 2, 20 ) .addOperationFrequency( 3, 30 ) .addOperationFrequency( 4, 40 ) .addOperationFrequency( 5, 50 ) .build(); OperationMixBuilder.OperationMix operationMix2 = OperationMixBuilder.fromFrequencies( baseIntervalAsMilli ) .addOperationFrequency( 1, 10 ) .addOperationFrequency( 2, 20 ) .addOperationFrequency( 3, 30 ) .addOperationFrequency( 4, 40 ) .addOperationFrequency( 5, 50 ) .build(); assertThat( operationMix1, equalTo( operationMix2 ) ); } @Test public void equalityShouldWorkForInterleaves() throws WorkloadException, DriverConfigurationException { OperationMixBuilder.OperationMix operationMix1 = OperationMixBuilder.fromInterleaves() .addOperationInterleave( 1, 10 ) .addOperationInterleave( 2, 20 ) .addOperationInterleave( 3, 30 ) .addOperationInterleave( 4, 40 ) .addOperationInterleave( 5, 50 ) .build(); OperationMixBuilder.OperationMix operationMix2 = OperationMixBuilder.fromInterleaves() .addOperationInterleave( 1, 10 ) .addOperationInterleave( 2, 20 ) .addOperationInterleave( 3, 30 ) .addOperationInterleave( 4, 40 ) .addOperationInterleave( 5, 50 ) .build(); assertThat( operationMix1, equalTo( operationMix2 ) ); } @Test public void shouldConvertFromInterleaveToFrequency() throws WorkloadException, DriverConfigurationException { OperationMixBuilder.OperationMix operationMix1 = OperationMixBuilder.fromInterleaves() .addOperationInterleave( 1, 10 ) .addOperationInterleave( 2, 20 ) .addOperationInterleave( 3, 30 ) .addOperationInterleave( 4, 40 ) .addOperationInterleave( 5, 50 ) .build(); long baseIntervalAsMilli = 10; OperationMixBuilder.OperationMix operationMix2 = OperationMixBuilder.fromFrequencies( baseIntervalAsMilli ) .addOperationFrequency( 1, 1 ) .addOperationFrequency( 2, 2 ) .addOperationFrequency( 3, 3 ) .addOperationFrequency( 4, 4 ) .addOperationFrequency( 5, 5 ) .build(); assertThat( operationMix1, equalTo( operationMix2 ) ); } @Test public void shouldRetrieveIndividualInterleavesFromInterleaves() throws WorkloadException, DriverConfigurationException { OperationMixBuilder.OperationMix operationMix = OperationMixBuilder.fromInterleaves() .addOperationInterleave( 1, 10 ) .addOperationInterleave( 2, 20 ) .addOperationInterleave( 3, 30 ) .addOperationInterleave( 4, 40 ) .addOperationInterleave( 5, 50 ) .build(); assertThat( operationMix.interleaveFor( 1 ), equalTo( 10l ) ); assertThat( operationMix.interleaveFor( 2 ), equalTo( 20l ) ); assertThat( operationMix.interleaveFor( 3 ), equalTo( 30l ) ); assertThat( operationMix.interleaveFor( 4 ), equalTo( 40l ) ); assertThat( operationMix.interleaveFor( 5 ), equalTo( 50l ) ); Map<Integer,Long> expectedInterleaves = new HashMap<>(); expectedInterleaves.put( 1, 10l ); expectedInterleaves.put( 2, 20l ); expectedInterleaves.put( 3, 30l ); expectedInterleaves.put( 4, 40l ); expectedInterleaves.put( 5, 50l ); assertThat( operationMix.interleaves(), equalTo( expectedInterleaves ) ); } @Test public void shouldRetrieveIndividualInterleavesFromFrequencies() throws WorkloadException, DriverConfigurationException { OperationMixBuilder.OperationMix operationMix = OperationMixBuilder.fromFrequencies( 10 ) .addOperationFrequency( 1, 1 ) .addOperationFrequency( 2, 2 ) .addOperationFrequency( 3, 3 ) .addOperationFrequency( 4, 4 ) .addOperationFrequency( 5, 5 ) .build(); assertThat( operationMix.interleaveFor( 1 ), equalTo( 10l ) ); assertThat( operationMix.interleaveFor( 2 ), equalTo( 20l ) ); assertThat( operationMix.interleaveFor( 3 ), equalTo( 30l ) ); assertThat( operationMix.interleaveFor( 4 ), equalTo( 40l ) ); assertThat( operationMix.interleaveFor( 5 ), equalTo( 50l ) ); Map<Integer,Long> expectedInterleaves = new HashMap<>(); expectedInterleaves.put( 1, 10l ); expectedInterleaves.put( 2, 20l ); expectedInterleaves.put( 3, 30l ); expectedInterleaves.put( 4, 40l ); expectedInterleaves.put( 5, 50l ); assertThat( operationMix.interleaves(), equalTo( expectedInterleaves ) ); } }