我正试图通过从csv文件中读取数据来创建我的gRPC有效载荷(它有guestID和category列)。我在这里遵循了这个例子https://github.com/phiSgr/gatling-grpc/blob/244ab372da6773102d79c65a7e4086f409d3fe94/src/test/scala/com/github/phisgr/example/GrpcExample.scala但是当我尝试同样的方法时,我看到了一个类型不匹配错误。(它需要Seq[ContextKey],但在这里我可以形成Seq[Expression[ContextKey])
val scn2: ScenarioBuilder = scenario("gRPC call - 50 users repeated 100 times")
.feed(csv("testtext.csv"))
.exec(
grpc("gRPC request with test message")
.rpc(RecommenderGrpc.METHOD_GET_RECOMMENDATIONS)
.payload(RequestContext.of(Map("test" -> "test"),
Seq(ContextKey.defaultInstance.updateExpr(
_.id :~ $("guestID"),
_.`type` :~ Type.GUEST
), ContextKey.defaultInstance.updateExpr(
_.id :~ $("category"),
_.`type` :~ Type.CATEGORY
)),
Seq())
)
)
(有效负载是一个请求上下文对象,它接收元数据、键和项目。元数据是一个映射,键是ContextKey的Seq,项目是空的Seq。ContextKey包含字符串guestID或类别和类型)。
如何在这里使用进纸器中的变量?
跳转到底部寻找解决方案。
Expression[T]
是会话的别名=
你可以考虑一个表达式[T]
,抽象地“包含”一个T
。
比如JavaScript中的promise
如何“包含”未来价值。你不能给一个需要T
的函数一个promise
T
。如果想要转换或组合Promise
s,必须将该代码从内到外转换,并作为的参数提供。然后
1
aPromise + 1 // wrong
aPromise.then(a => a + 1)
这与您的代码示例不编译的原因相同。
Gatling的用户不一定熟悉Scala或一般的函数式编程。让他们理解这种“包装”的东西会适得其反。2所以有代码可以帮助您组合
表达式
s。
对于HTTP和其他非类型化的东西,EL字符串被解析并转换为一个
表达式。
Protobuf消息是强类型的,使用字符串插值无法轻松构造有效负载。因此,透镜上的
:~
操作符用于处理管道,这样您就不必手动处理表达式
包装。
但是现在您有了一个函数,
Request estContext.of
,它可以构造有效负载。如果您需要该函数,镜头魔法无能为力。您必须自己编写表达式
lambda。3
.payload { session =>
for {
guestId <- session("guestId").validate[String]
category <- session("category").validate[String]
} yield RequestContext.of(
Map("test" -> "test"),
Seq(
ContextKey(id = guestID, `type` = Type.GUEST),
ContextKey(id = category, `type` = Type.CATEGORY)
),
Seq()
)
}
>
表达式
只是要么
monad和Reader
monad堆叠在一起,有什么问题?
如果我知道什么是
RequestContext,我可能会写一个带有镜头的版本。当然了。
我正在寻找帮助,以创建简单的馈线从0递增一个整数。我发现了很多feeder示例,可以生成随机UUID、电子邮件和字符串。。。我看了文档,但没有看到增量整数(我觉得与一些相关,但我不能有任何有效的东西),我不想在“ïnfinite”行中创建一些CSV或文件。 所以我所拥有的是 谢谢你的帮助
我有一个巨大的csv文件作为原始数据源(14 gb)。我想创建一个场景,其中每个请求都包含来自csv的元素,解析为JSON对象并包装为JSON数组。 我现在尝试的是使用预处理我的csv文件,并将其转储到单列下的新csv文件中,如下所述:https://stackoverflow.com/a/65845365/2290763 然后我使用我的输出csv文件(50gb)作为Gatling进纸器,并将该单
一些秘密需要通过PODS获取,秘密存储在GCP秘密管理器中,什么是安全有效的方法来获取pod中的秘密? 谢谢你!
问题内容: 使用Jenkins 2.x中 的Pipeline插件,如何从一个步骤中访问在阶段或节点级别某个位置定义的Groovy变量? 简单的例子: 在Jenkins输出页面上给出以下内容: 可以看到,在该步骤中将打印一个空字符串。 解决方法是通过以下方式在环境范围内定义变量 并通过打印 但是,这种滥用会破坏此任务的环境范围。 问题答案: 要使用可模板化的字符串(将变量替换为字符串),请使用双引号
所以,我认为管道选项会很好,我只是在模板编译时或运行时传递一个不同的参数,但我要花很长时间访问par.do转换我需要的地方。如果我使用默认运行器并在本地运行管道,它可以正常工作,但是当我切换并构建模板时,值总是。我可以用下面的代码复制它: 云中的输出是: 但在当地: 对于本地: 当我在Dataflow控制台(浏览器)中的参数字段中创建作业时,我尝试将参数传递给作业和,但仍然显示为null。 很抱歉
使用最新版本的6.2,对JBPM来说是相当新的。我正在尝试建立一个进程,通过该进程,我可以在打开某些(自定义)任务类型时调用遗留平台的REST API,并在它们完成时再次通过异步进程在未来的某个时间点。 在较高级别上,该过程应类似于: 旧版应用程序- 旧版应用程序- 我已经创建并注册了一个ProcessEventListener,并在AfterNode触发事件中创建了一个钩子来调用特定类型的节点。