首页 > 解决方案 > 空手道加特林:设置本地地址

问题描述

我有用于测试 API 的简单空手道功能文件,我想使用此功能文件进行负载测试。因此我使用 Gatling 来执行空手道功能文件:https ://github.com/intuit/karate/tree/master/karate-gatling

但是,当我启动多个用户时,我想使用我配置的不同 ip 别名提交请求。

使用 Gatling,我可以使用 localAddress 绑定到套接字

val protocol = http.localAddresses(ip)

但在 Karate-Gatling 中,使用的是 karateProtocol

val protocol = karateProtocol()

自述文件指出“Karate 负责发出 HTTP 请求,而 Gatling 只测量时间和管理线程”。

这意味着 HTTP 请求和 localAddress 绑定无法通过 Gatling 更改,但我想知道是否有通过空手道的解决方法,以便可以将不同的 ip 别名用于不同的请求。

标签: karate

解决方案


这听起来像是需要一个功能请求来告诉 HTTP 客户端(例如 Apache)使用本地地址。

如果您可以帮助贡献和测试,那就太好了,设置 localAddress 的一种方法是在此处的代码中:

    RequestConfig.Builder configBuilder = RequestConfig.custom()
            .setCookieSpec(LenientCookieSpec.KARATE)
            .setConnectTimeout(config.getConnectTimeout())
            .setSocketTimeout(config.getReadTimeout());
    String localIp = "1.2.3.4";
    try {            
        InetAddress localAddress = InetAddress.getByName(localIp);
        configBuilder.setLocalAddress(localAddress);
    } catch (Exception e) {
        context.logger.error("failed to resolve local address: {}", localIp);
    }

推荐阅读