package com.ldbc.driver.workloads.dummy; 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.WorkloadStreams; import com.ldbc.driver.workloads.WorkloadFactory; import java.util.Iterator; import java.util.List; public class DummyWorkloadFactory implements WorkloadFactory { private final Iterator<WorkloadStreams> streams; private final Iterator<Operation> alternativeLastOperations; private final long maxExpectedInterleaveAsMilli; public DummyWorkloadFactory(Iterator<WorkloadStreams> streams, long maxExpectedInterleaveAsMilli) { this(streams, null, maxExpectedInterleaveAsMilli); } public DummyWorkloadFactory(Iterator<WorkloadStreams> streams, Iterator<Operation> alternativeLastOperations, long maxExpectedInterleaveAsMilli) { this.streams = streams; this.alternativeLastOperations = alternativeLastOperations; this.maxExpectedInterleaveAsMilli = maxExpectedInterleaveAsMilli; } @Override public Workload createWorkload() throws WorkloadException { WorkloadStreams workloadStreams; if (null == alternativeLastOperations) { workloadStreams = streams.next(); } else { workloadStreams = streams.next(); List<Operation> asynchronousNonDependencyOperationsToReturn = Lists.newArrayList(workloadStreams.asynchronousStream().nonDependencyOperations()); asynchronousNonDependencyOperationsToReturn.remove(asynchronousNonDependencyOperationsToReturn.size() - 1); asynchronousNonDependencyOperationsToReturn.add(alternativeLastOperations.next()); workloadStreams.setAsynchronousStream( workloadStreams.asynchronousStream().dependentOperationTypes(), workloadStreams.asynchronousStream().dependencyOperationTypes(), workloadStreams.asynchronousStream().dependencyOperations(), asynchronousNonDependencyOperationsToReturn.iterator(), workloadStreams.asynchronousStream().childOperationGenerator() ); } return new DummyWorkload(workloadStreams, maxExpectedInterleaveAsMilli); } }