我希望能够将参数传递给Gatling Simulation。我试过这个,但它失败了。 (问题似乎是由于内部阶级)
object PerfTestManager extends App {
run("trymain", 10, 2, 3);
def run(dcName: String, minutes: Int, threads: Int, maxThreads: Int) = {
class BasicSimul extends Simulation {
val scn = scenario("a").feed(QueryFeeder.myfeeder)
.exec(http("test").get(s => SolrEnv.getPath(s("params").validate[String].get)));
private val hostport = SolrEnv.hostport
val httpConf = http.baseURL(hostport)
.acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
.acceptEncodingHeader("gzip, deflate")
.acceptLanguageHeader("en-US,en;q=0.5")
.userAgentHeader("Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20100101 Firefox/16.0");
setUp(scn.inject(atOnceUsers(threads)).protocols(httpConf))
}
val simClass = classOf[BasicSimulation].getName
val props = new GatlingPropertiesBuilder
props.dataDirectory(Paths2.dataDirectory.toString)
props.resultsDirectory(Paths2.resultsDirectory.toString)
props.bodiesDirectory(Paths2.bodiesDirectory.toString)
props.binariesDirectory(Paths2.mavenBinariesDirectory.toString)
props.simulationClass(simClass)
props.runDescription("runonce")
props.outputDirectoryBaseName("0")
Gatling.fromMap(props.build) // <-- failing line
}
}
我的目的是最终运行一个web服务,该服务将用于从UI安排和参数化模拟。虽然我有一些我可以尝试的替代方案,但更接近上述代码的东西似乎最容易维护。上面的代码失败了,因为gatling无法创建BasicSimul
Caused by: java.lang.NoSuchMethodException: computerdatabase.PerfTestManager$BasicSimul$1.<init>()
at java.lang.Class.getConstructor0(Class.java:3082)
at java.lang.Class.newInstance(Class.java:412)
我也尝试将参数传递给BasicSimulation,但是,框架需要一个默认的构造函数,因此也不成功。
我的替代方案是在object
val q =新队列
调度webservice将根据参数排队新的TestConfig,并BasicSimulation
将dequeue()
获取其TestConfig。同步构造可用于避免竞争条件。
答案 0 :(得分:0)
我认为你可以通过创建一个简单的Scala类来更好地实现上述行为。基本上你可以创建一个对象
object Configuration{
val file = getClass.getResource("data/config.properties").getFile()
val prop = new Properties()
prop.load(new FileInputStream(file))
ENV =prop.getProperty("env");
}
现在进入模拟课程
class TestSimulation extends Simulation {
val ALL_STOP_STATUS = Configuration.ENV;
}
同样专注于使用路径变量