我正在尝试重用空手道脚本并使用加特林执行负载测试。定义的场景是每秒加载 50 个用户,持续 10 秒。 (对 500 个用户进行负载测试)但是,gatting 报告中每秒的请求数不超过 20 个请求。如果我做错了什么,请告诉我。
执行空手道脚本的ExampleTest.java代码
//package examples;
import com.intuit.karate.Results;
import com.intuit.karate.Runner;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import net.masterthought.cucumber.Configuration;
import net.masterthought.cucumber.ReportBuilder;
import org.apache.commons.io.FileUtils;
class ExamplesTest {
@Test
void testParallel() {
//System.setProperty("karate.env", "demo"); // ensure reset if other tests (e.g. mock) had set env in CI
Results results = Runner.path("classpath:examples").tags("~@ignore").parallel(10);
generateReport(results.getReportDir());
assertEquals(0, results.getFailCount(), results.getErrorMessages());
}
public static void generateReport(String karateOutputPath) {
Collection<File> jsonFiles = FileUtils.listFiles(new File(karateOutputPath), new String[] {"json"}, true);
List<String> jsonPaths = new ArrayList<String>(jsonFiles.size());
jsonFiles.forEach(file -> jsonPaths.add(file.getAbsolutePath()));
Configuration config = new Configuration(new File("target"), "demo");
ReportBuilder reportBuilder = new ReportBuilder(jsonPaths, config);
reportBuilder.generateReports();
}
}
用于定义负载测试场景的 Scala 代码。
package perf
import com.intuit.karate.gatling.PreDef._
import io.gatling.core.Predef._
import scala.concurrent.duration._
class KarateSimulate extends Simulation {
val protocol = karateProtocol(
"/v2/" -> Nil,
"/v2/" -> pauseFor("get" -> 0, "post" -> 25)
)
val userfeeder = csv("data/Token.csv").circular
val getScores = scenario("Get Scores for Students").feed(userfeeder).exec(karateFeature("classpath:examples/scores/student.feature"))
setUp(
getScores.inject(constantUsersPerSec(50) during (10 seconds)).protocols(protocol)
)
}
我们更新了文档(在develop
分支),并提供有关如何在需要时增加线程池大小的提示:https://github.com/intuit/karate/tree/develop/karate-gadling#increasing-thread-pool-size https://github.com/intuit/karate/tree/develop/karate-gatling#increasing-thread-pool-size
添加一个名为gatling-akka.conf
到类路径的根(通常src/test/resources
)。这是一个例子:
akka {
actor {
default-dispatcher {
type = Dispatcher
executor = "thread-pool-executor"
thread-pool-executor {
fixed-pool-size = 100
}
throughput = 1
}
}
}
由于我们最近做了一些修复,如果上述方法不适用于 0.9.6.RC4,请尝试从源代码构建,这很简单,以下是说明:https://github.com/intuit/karate/wiki/Developer-Guide https://github.com/intuit/karate/wiki/Developer-Guide
如果这不起作用,请务必遵循此流程,以便我们可以复制:https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue https://github.com/intuit/karate/wiki/How-to-Submit-an-Issue
请参阅下面的这些链接,了解其他人如何与空手道项目团队合作来复制问题以便解决这些问题的良好示例:
https://github.com/intuit/karate/issues/1668 https://github.com/intuit/karate/issues/1668
https://github.com/intuit/karate/issues/845 https://github.com/intuit/karate/issues/845
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)