GATLING Rest API 测试 - java.nio.channels.ClosedChannelException: null

Posted

技术标签:

【中文标题】GATLING Rest API 测试 - java.nio.channels.ClosedChannelException: null【英文标题】:GATLING Rest API testing - java.nio.channels.ClosedChannelException: null 【发布时间】:2021-03-03 00:50:44 【问题描述】:

我正在尝试对 REST API 进行性能测试,我正在使用以下代码:

val httpConf = http.   baseUrl("http://localhost:8080")  
    .header("Accept","application/json")  
    .header("content-type","application/json") //scenario 
val scn = scenario("get user")
    .exec(http("get user request")
    .get("/endpoint")
    .check(status is 200)) 
setUp(scn.inject(atOnceUsers(1)))
    .protocols(httpConf)

但我收到此错误:

DEBUG io.gatling.http.client.impl.DefaultHttpClient - Failed to connect to remoteAddress=gatling.io/34.77.242.251:443 from localAddress=null
java.nio.channels.ClosedChannelException: null

我也尝试添加代理 .proxy(Proxy("localhost", 8080)) 但添加代理后我看到以下错误

Caused by: io.netty.handler.proxy.HttpProxyHandler$HttpProxyConnectException: http, none, localhost/127.0.0.1:8080 => gatling.io/<unresolved>:443, status: 400** 

关于如何解决这个问题的任何建议?

【问题讨论】:

【参考方案1】:

这不是错误,而是调试日志。你可以忽略这一点。此外,您真的不应该在运行负载测试时启用 DEBUG 日志记录,否则会破坏性能。

此调试日志发生在 Gatling 无法执行预热请求时,通常是因为您使用企业代理。 请查看documentation。

【讨论】:

我认为这是一个问题,因为当我运行测试时,负载测试失败了。我正在 Mac 中尝试此操作,但是当我在我的个人电脑(即 Windows)中执行相同步骤时,一切正常 没有。这是一个调试日志,不可能导致您的测试失败。如果您的测试不起作用,则原因不同。请提供适当的信息,例如完整的堆栈跟踪。【参考方案2】:

如果您想使用Gatling Frontline 对位于http://localhost:8080 的本地应用程序进行负载测试 - 您需要能够访问前线服务器,如果您在corporate proxy server 后面 - 您需要specify these proxy details .但请确保指定您的公司代理主机和端口,而不是被测应用程序的主机和端口。

如果您不打算使用 Gatling Frontline - 下载 Gatling Open Source,它不需要访问任何远程主机。如果需要,请参阅How to Run a Simple Load Test with Gatling 文章了解更多详细信息。

【讨论】:

嗨,Dmitri,我只尝试使用 Gatling Open Source,但仍然看到此错误。

以上是关于GATLING Rest API 测试 - java.nio.channels.ClosedChannelException: null的主要内容,如果未能解决你的问题,请参考以下文章

REST API 自动化测试 利器Rest Assured(API接口自动化测试框架体系)

如何使用 Scala 在具有请求正文的 REST API 上执行 GET 请求?

如何按顺序而不是同时运行gatling场景?

如何在 Gatling 负载测试中为多个虚拟用户使用单个 OAuth2.0 令牌

Gatling 场景响应时间

当摘要认证开启时,Gatling 测试失败