private boolean nothingToRecycle() { if(generatorsMap.size() == 1) { final LoadGenerator<I, O> soleLoadGenerator = generatorsMap.values().iterator().next(); try { if(soleLoadGenerator.isStarted()) { return false; } } catch(final RemoteException e) { LogUtil.exception(Level.WARN, e, "Failed to check the load generator state"); } // load generator has done its work final long generatedIoTasks = soleLoadGenerator.getGeneratedTasksCount(); if( soleLoadGenerator.isRecycling() && counterResults.sum() >= generatedIoTasks && // all generated I/O tasks executed at least once latestIoResultsPerItem.size() == 0 // no successful I/O results ) { return true; } } return false; }
.put(KEY_CLASS_NAME, getClass().getSimpleName()) ) { nextGenerator.interrupt(); Loggers.MSG.debug( "{}: load generator \"{}\" interrupted", getName(),
if(!nextLoadGenerator.isInterrupted() && !nextLoadGenerator.isClosed()) { return false;
private boolean allIoTasksCompleted() { long generatedIoTasks = 0; for(final LoadGenerator<I, O> generator : generatorsMap.values()) { try { if(generator.isInterrupted()) { generatedIoTasks += generator.getGeneratedTasksCount(); } else { return false; } } catch(final RemoteException e) { LogUtil.exception( Level.WARN, e, "Failed to communicate with load generator \"{}\"", generator ); } } return counterResults.longValue() >= generatedIoTasks; }
for(final LoadGenerator<I, O> nextGenerator : driversMap.keySet()) { generatorsMap.put(nextGenerator.hashCode(), nextGenerator); nextGenerator.setWeightThrottle(weightThrottle); nextGenerator.setRateThrottle(rateThrottle); nextGenerator.setOutputs(driversMap.get(nextGenerator)); .get(nextGenerator).getMetricsConfig(); final LoadConfig nextLoadConfig = loadConfigs.get(nextGenerator); if(nextGenerator.isRecycling()) { anyCircularFlag = true;
weightMap.put(loadGenerator.hashCode(), (int) weights.get(i));
} else { loadGenerator = generatorsMap.get(originCode); if(loadGenerator.isRecycling()) { latestIoResultsPerItem.put(ioTaskResult.getItem(), ioTaskResult); loadGenerator.recycle(ioTaskResult); } else if(ioResultsOutput != null) { try {
() -> { try { generator.close(); Loggers.MSG.debug( "{}: the load generator \"{}\" has been closed", getName(),
weightMap.put(loadGenerator.hashCode(), (int) weights.get(i));
final int originCode = ioTaskResult.getOriginCode(); final LoadGenerator<I, O> loadGenerator = generatorsMap.get(originCode); if(loadGenerator.isRecycling()) { latestIoResultsPerItem.put(ioTaskResult.getItem(), ioTaskResult); loadGenerator.recycle(ioTaskResult); } else if(ioResultsOutput != null) { try {
weightMap.put(loadGenerator.hashCode(), generatorConfig.getWeight()); itemDataSizes.put(loadGenerator, dataConfig.getSize()); loadConfigMap.put(loadGenerator, loadConfig);