diff --git a/jetty-load-generator-starter/src/main/java/org/mortbay/jetty/load/generator/starter/AbstractLoadGeneratorStarter.java b/jetty-load-generator-starter/src/main/java/org/mortbay/jetty/load/generator/starter/AbstractLoadGeneratorStarter.java index d7d83d96..ebb029ce 100644 --- a/jetty-load-generator-starter/src/main/java/org/mortbay/jetty/load/generator/starter/AbstractLoadGeneratorStarter.java +++ b/jetty-load-generator-starter/src/main/java/org/mortbay/jetty/load/generator/starter/AbstractLoadGeneratorStarter.java @@ -21,6 +21,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import groovy.lang.Binding; import groovy.lang.GroovyShell; import org.codehaus.groovy.control.CompilerConfiguration; import org.eclipse.jetty.client.api.Request; @@ -41,6 +42,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; @@ -69,8 +72,6 @@ public void run() throws Exception { - Resource resourceProfile = getResource(); - LoadGenerator.Builder loadGeneratorBuilder = new LoadGenerator.Builder() // .host( starterArgs.getHost() ) // .iterationsPerThread( starterArgs.getRunIteration() ) // @@ -78,10 +79,13 @@ public void run() .resourceRate( starterArgs.getTransactionRate() ) // .httpClientTransportBuilder( httpClientTransportBuilder() ) // .sslContextFactory( sslContextFactory() ) // - .resource( resourceProfile ) // .warmupIterationsPerThread( starterArgs.getWarmupNumber() ) // .scheme( starterArgs.getScheme() ); // + Resource resourceProfile = getResource( loadGeneratorBuilder ); + + loadGeneratorBuilder.resource( resourceProfile ); + if ( starterArgs.getPort() > 0 ) { loadGeneratorBuilder.port( starterArgs.getPort() ); @@ -195,7 +199,7 @@ public AbstractLoadGeneratorStarter executorService( ExecutorService executor ) return this; } - public Resource getResource() + public Resource getResource( LoadGenerator.Builder loadGeneratorBuilder ) throws Exception { if ( resource != null ) @@ -225,7 +229,9 @@ public Resource getResource() try (Reader reader = Files.newBufferedReader( profilePath )) { - return resource = (Resource) evaluateScript( reader ); + Map context = new HashMap<>( ); + context.put( "loadGeneratorBuilder", loadGeneratorBuilder ); + return resource = (Resource) evaluateScript( reader, context ); } } @@ -251,14 +257,16 @@ protected static String writeAsJsonTmp( Resource resource ) return tmpPath.toString(); } - protected static Object evaluateScript( Reader script ) + protected static Object evaluateScript( Reader script, Map context ) throws Exception { CompilerConfiguration config = new CompilerConfiguration( CompilerConfiguration.DEFAULT ); config.setDebug( true ); config.setVerbose( true ); + Binding binding = new Binding( context ); + + GroovyShell interpreter = new GroovyShell(binding, config ); - GroovyShell interpreter = new GroovyShell( config ); return interpreter.evaluate( script ); } diff --git a/jetty-load-generator-starter/src/test/java/org/mortbay/jetty/load/generator/starter/LoadGeneratorStarterTest.java b/jetty-load-generator-starter/src/test/java/org/mortbay/jetty/load/generator/starter/LoadGeneratorStarterTest.java index 587eb417..c3e969a0 100644 --- a/jetty-load-generator-starter/src/test/java/org/mortbay/jetty/load/generator/starter/LoadGeneratorStarterTest.java +++ b/jetty-load-generator-starter/src/test/java/org/mortbay/jetty/load/generator/starter/LoadGeneratorStarterTest.java @@ -47,6 +47,7 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.concurrent.atomic.AtomicInteger; @@ -202,7 +203,7 @@ public void json_serial_deserial_from_groovy() { try (Reader reader = Files.newBufferedReader( Paths.get( "src/test/resources/loadgenerator_profile.groovy" ) )) { - Resource resource = (Resource) AbstractLoadGeneratorStarter.evaluateScript( reader ); + Resource resource = (Resource) AbstractLoadGeneratorStarter.evaluateScript( reader, Collections.emptyMap() ); String path = AbstractLoadGeneratorStarter.writeAsJsonTmp( resource ); Resource fromJson = AbstractLoadGeneratorStarter.evaluateJson( Paths.get( path ) ); Assert.assertEquals( resource.descendantCount(), fromJson.descendantCount() );