package com.ldbc.driver.generator; import com.google.common.collect.Range; import com.ldbc.driver.util.Bucket.NumberRangeBucket; import com.ldbc.driver.util.Histogram; import java.util.Iterator; public class DynamicRangeUniformNumberGeneratorTest extends NumberGeneratorTest<Long, Long> { private final long uniformMin = 50; private final long uniformMax = 60; private final long counterStart = 0; private final long counterIterations = 101; @Override public double getMeanTolerance() { return 0.1; } @Override public double getDistributionTolerance() { return 0.01; } @Override public Iterator<Long> getGeneratorImpl(GeneratorFactory generatorFactory) { MinMaxGenerator<Long> counterGenerator = generatorFactory.minMaxGenerator( generatorFactory.incrementing(counterStart, 1l), uniformMin, uniformMax); Iterator<Long> growingRangeUniformGenerator = generatorFactory.dynamicRangeUniform( counterGenerator); for (int i = 0; i < counterIterations; i++) { counterGenerator.next(); } return growingRangeUniformGenerator; } @Override public Histogram<Long, Long> getExpectedDistribution() { Histogram<Long, Long> expectedDistribution = new Histogram<Long, Long>(0l); expectedDistribution.addBucket(new NumberRangeBucket<Long>(Range.closedOpen(0d, 20d)), 1l); expectedDistribution.addBucket(new NumberRangeBucket<Long>(Range.closedOpen(20d, 40d)), 1l); expectedDistribution.addBucket(new NumberRangeBucket<Long>(Range.closedOpen(40d, 60d)), 1l); expectedDistribution.addBucket(new NumberRangeBucket<Long>(Range.closedOpen(60d, 80d)), 1l); expectedDistribution.addBucket(new NumberRangeBucket<Long>(Range.closed(80d, 100d)), 1l); return expectedDistribution; } @Override public double getExpectedMean() { return ((double) (counterIterations - 1) - (double) counterStart) / 2; } }