package com.ldbc.driver.testutils; import com.ldbc.driver.temporal.TimeSource; import org.apache.commons.io.FileUtils; import java.io.File; import java.util.Iterator; import static java.lang.String.format; public class TestUtils { public static File getResource( String path ) { return FileUtils.toFile( TestUtils.class.getResource( path ) ); } public static ThreadPoolLoadGenerator newThreadPoolLoadGenerator( int threadCount, long sleepDurationAsMilli ) { return new ThreadPoolLoadGenerator( threadCount, sleepDurationAsMilli ); } public static <T> boolean generateBeforeTimeout( Iterator<T> generator, long timeoutAsMilli, TimeSource timeSource, long itemsToGenerate ) { long startTimeAsMilli = timeSource.nowAsMilli(); long itemsGenerated = 0; while ( generator.hasNext() ) { generator.next(); itemsGenerated++; // check if generated enough items yet if ( itemsGenerated >= itemsToGenerate ) { break; } // occasionally check for timeout if ( (itemsGenerated % 1000 == 0) && (timeSource.nowAsMilli() > timeoutAsMilli) ) { break; } } long finishTimeAsMilli = timeSource.nowAsMilli(); boolean result = (finishTimeAsMilli < timeoutAsMilli) && (itemsGenerated >= itemsToGenerate || false == generator.hasNext()); long testDurationAsMilli = finishTimeAsMilli - startTimeAsMilli; System.out.println( format( "Generated %s elements in %s ms ---> %s elements/ms", itemsGenerated, testDurationAsMilli, (double) itemsGenerated / testDurationAsMilli ) ); return result; } }