【问题标题】:Create a scala function to define Gatling HTTP request chains创建一个 scala 函数来定义 Gatling HTTP 请求链
【发布时间】:2014-09-07 22:52:42
【问题描述】:

我只是 Scala 和 gatling 的新手。

当我定义时

Object A{
  val asset_sort = exec(http("Sort by Displays")
   .get("/data/analytics/reports/")
   .queryParamMap(asset_details_map)
   .queryParam("""sort""", """video_starts""")
   .check(status.is(200)))
  .pause(1)

 val device_sort = and so on ... variables.
}

现在我想创建一个 Scala 函数,它通过传递某些参数返回不同的变量。

我试过这样的

val asset_sort = generateWebRequest("Sort by Displays", "video_starts", asset_details_map)

  def generateWebRequest(requestName:String, sort:String, queryParamMap:HashMap):ChainBuilder = {

    return exec(http(requestName)
     .get("/data/analytics/reports/")
     .queryParamMap(queryParamMap)
     .queryParam("""sort""", sort)
     .check(status.is(200)))
    .pause(1)
  }

但是会报错

i_ui\lib\AssetDetail.scala:47: class HashMap takes type parameters
12:50:36.708 [ERROR] i.g.a.ZincCompiler$ -   def generateWebRequest(requestName:String, sort:String, qu
eryParamMap:HashMap):ChainBuilder = {
12:50:36.710 [ERROR] i.g.a.ZincCompiler$ -

【问题讨论】:

    标签: scala performance-testing scala-collections gatling


    【解决方案1】:

    不需要精确指定HashMap,使用通用父接口。此外,不需要(也许)指定 generateWebRequest 的类型,让编译器推断它。而且你通常不必在 Scala 中使用return

    val asset_sort = generateWebRequest("Sort by Displays", "video_starts", asset_details_map)
    
    def generateWebRequest(requestName:String, sort:String, queryParamMap:Map[String,String]) = {
        exec(http(requestName)
                .get("/data/analytics/reports/")
                .queryParamMap(queryParamMap)
                .queryParam("""sort""", sort)
                .check(status.is(200)))
            .pause(1)
    }
    

    【讨论】:

    • :- 我已经导入了 io.gatling.core.structure 但仍然找不到:输入 ChainBuilder
    • 也许现在只是删除定义并让 Scala 推断它?请参阅我更新的示例。
    • 我仍然得到方法 generateWebRequest 有返回语句;需要结果类型 return exec(http(requestName)
    • 哦,也去掉return
    【解决方案2】:

    “类 HashMap 采用类型参数”非常明确。 HashMap 是一种泛型类型,它接受 2 个类型参数,一个用于键类型,一个用于值类型。试试 HashMap[String, String]。

    【讨论】:

    • 我已经导入 import io.gatling.core.structure 并将函数更改为 HashMap[String, String] 参数,但仍然抛出 i_ui\lib\AssetDetail.scala:44: not found: type ChainBuilder 13 :37:11.476 [错误] igaZincCompiler$ - def generateWebRequest(requestName:String, sort:String, queryParamMap:HashMap[String, String]):ChainBuilder = { 13:37:11.478 [错误] igaZincCompiler$ - ^ 13 :37:11.486 [错误] igaZincCompiler$ - C:\Users\Vertis\Desktop\gatling\user-files\simulations\delph i_ui\lib\AssetDetail.scala:44: not found: type HashMap
    • 您使用哪个 Gatling 版本?
    • 我在github.com/excilys/gatling/wiki/Continuous-Integration987654321@的前一天从这里下载了一个持续集成
    • 所以没有理由您的导入不起作用。你能分享一下你所做的事情的要点吗?
    猜你喜欢
    • 1970-01-01
    • 2023-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-21
    • 2011-02-18
    • 1970-01-01
    相关资源
    最近更新 更多