0

我正在尝试使用 Gatling 设置负载测试场景;

package mypackage

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

class My_LoadTest extends Simulation {
  
  val httpProtocol = http
    .baseUrl("https://my-base.url")
    .header("API_KEY", "my-api-key")

  val scn = scenario("MyTestScenario")
    .exec(
      sse("mySSE").connect("/my/end-point")
        .await(10.seconds)(
          sse.checkMessage("data").check(regex("""event: snapshot(.*)"""))
        )
    )
    .pause(5)
    .exec(sse("Close").close)

  setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
  
}

但它不断抛出错误:

> i.g.h.a.s.SseInvalidContentTypeException: Server returned http      1 (50.00%)
 response with content-type null
> Close: Client issued close order but SSE stream was already cr      1 (50.00%)
ashed: i.g.h.a.s.SseInvalidContentTypeException: Server return...

鉴于,我已经使用CURL命令(并且效果很好)进行了测试;

curl 'https://my-base.url/my/end-point' \
 -H 'authority: xyz’ \
 -H 'accept: text/event-stream' \
 -H 'API_KEY: my’-api-key \

现在,尽管 Gatling 声称Gatling automatically sets Accept header to text/event-stream and Cache-Control to no-cache.,但我也尝试过:

val sentHeaders = Map("Content-Type" -> "text/event-stream", "API_KEY" -> "my-api-key")

  val httpProtocol = http
    .baseUrl("https://my-base.url")
    .headers(sentHeaders)

到目前为止,无论我尝试过什么,错误都是一样的;Server returned http response with content-type null.

任何线索/解决方案/建议?

4

1 回答 1

0

检查日志。服务器发送事件流必须有一个Content-Type标题text/event-stream,见规范。看起来您的流格式不正确。

于 2021-01-10T20:39:35.253 回答