簡體   English   中英

響應411加特林所需的長度

[英]Response 411 Length Required in Gatling

我從加特林開始。 我的狀態為411,不明白為什么。

Response DefaultHttpResponse(decodeResult: success, version: HTTP/1.1)
HTTP/1.1 411 Length Required
Connection: close
Date: Tue, 13 Feb 2018 16:07:51 GMT
Server: Kestrel
Content-Length: 0

19:07:53.083 [gatling-http-thread-1-2] DEBUG org.asynchttpclient.netty.channel.ChannelManager - Closing Channel [id: 0x5f14313e, L:/10.8.1.89:52767 - R:blabla.com:5000] 
19:07:53.107 [gatling-http-thread-1-2] INFO io.gatling.commons.validation.package$ - Boon failed to parse into a valid AST: -1
java.lang.ArrayIndexOutOfBoundsException: -1
...
19:07:53.111 [gatling-http-thread-1-2] WARN io.gatling.http.ahc.ResponseProcessor - Request 'HTTP Request createCompany' failed: status.find.is(200), but actually found 411
19:07:53.116 [gatling-http-thread-1-2] DEBUG io.gatling.http.ahc.ResponseProcessor - 

我的代碼:

package load
import io.gatling.core.scenario.Simulation
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import scala.concurrent.duration._

class LoadScript extends Simulation{

 val httpConf = http
  .baseURL("http://blabla.com:5000")
  .authorizationHeader("Bearer 35dfd7a3c46f3f0bc7a2f06929399756029f47b9cc6d193ed638aeca1306d")
  .acceptHeader("application/json, text/plain,")
  .acceptEncodingHeader("gzip, deflate, br")
  .acceptLanguageHeader("ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7")
  .userAgentHeader("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36")

 val basicLoad = scenario("BASIC_LOAD").exec(BasicLoad.start)

 setUp(
   basicLoad.inject(rampUsers(1) over (1 minutes))
  .protocols(httpConf))
 }

 object BasicLoad {
   val start =
   exec(
    http("HTTP Request createCompany")
      .post("/Companies/CreateCompanyAndStartTransaction")
      .queryParam("inn","7733897761")
      .queryParam("ogrn","5147746205041")
      .check(status is 200, jsonPath("$.id").saveAs("idCompany"))
  )
}

當您不發送消息正文時,您需要添加.header("Content-Length", "0")作為解決方法。 我有類似的問題。 我在兩個環境上運行測試,不同之處在於應用程序基礎結構。 測試通過了Amazon AWS,但在Azure上獲得了HTTP 411。 因此,問題似乎不在於加特林本身。

加特林團隊在和的聊天記錄中也很好地回答了這個問題: https : //groups.google.com/forum/#!topic/ gatling/mAGzjzoMr1I

我剛剛將加特林從2.3升級到3.0.2。 他們編寫了自己的HTTP客戶端,它現在發送content-length:0,但此錯誤中描述的一種情況除外: https : //github.com/gatling/gatling/issues/3648

因此,如果您避免將httpRequest()與以字符串形式傳遞的方法類型一起使用,例如:

exec(http("empty POST test").httpRequest("POST","https://gatling.io/"))

並按以下方式使用post():

exec(
http("HTTP Request createCompany")
  .post("/Companies/CreateCompanyAndStartTransaction")...

要么

exec(
http("HTTP Request createCompany")
  .httpRequest(HttpMethod.POST, "/Companies/CreateCompanyAndStartTransaction")

然后將Gatling升級到3.0.2就足夠了。 否則,您需要等待加特林3.0.3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM