使用 session.set 在 Gatling Body 中传递今天的日期但没有成功
Passing today's date in Gatling Body using session.set but no success
我正在尝试使用 session.set 在 Gatling Body 中传递今天的日期,但没有成功
我在下面的代码中设置了使用 joda-time(https://www.joda.org/joda-time/) timestampfeeder 变量
class gamekeeper extends BaseSimulation {
val timestampFeeder: String = DateTimeFormat.forPattern("yyyy-MM-dd").print(DateTime.now())
exec { session => session.set( "TimestampFeeder", timestampFeeder )}
val createPrivateEvent ={
exec(
http("Create Event As WER")
.post("https://api.cloud/" + {Env} + "/silve-griffin-service/graphql")
.headers(header)
.body(ElFileBody("<filename>"))
.check(status.in(200,201))
.check(bodyString.saveAs("EventAsWER_Response"))
.check(jsonPath(path="$.data.createEvent.id")
.saveAs(key="EventId")
)
)
.exec { session => session.set("NEW_ID", session("EventId").as[String]) }
.exec{session=>println(session);session}
//.pause(40,50)
}
val scenario4 = scenario("Full GameKeeper tests“)
.exec(createPrivateEvent)
setUp(
scenario4.inject(
constantConcurrentUsers(userCount) during(testDuration))
.protocols(httpProtocol)
)
.maxDuration(testDuration)
}
这里是createeventasWERwithcurrentdatetime.txt
的内容
{
"query": "mutation createEvent($input: CreateEventInput!) {\n createEvent(input: $input) {\n ...EventFields\n __typename\n }\n}\n\nfragment EventFields on Event {\n id\n status\n title\n format\n limitedSet\n rulesEnforcementLevel\n pairingType\n entryFee {\n amount\n currency\n __typename\n }\n venue {\n id\n name\n latitude\n longitude\n address\n timeZone\n phoneNumber\n emailAddress\n __typename\n }\n capacity\n description\n scheduledStartTime\n estimatedEndTime\n latitude\n longitude\n address\n timeZone\n phoneNumber\n emailAddress\n shortCode\n __typename\n}",
"variables": {
"input": {
"organizationId": "14540",
"latitude": 47.66499,
"longitude": -122.38043,
"phoneNumber": "206-523-9605",
"emailAddress": "test@gameot.com",
"title": "PerfTestServicesEvent",
"format": "DRAFT",
"pairingType":"SWISS",
"limitedSet": "CORE2020",
"rulesEnforcementLevel": "CASUAL",
"entryFeeAmount": 500,
"entryFeeCurrency": "USD",
"venueId": null,
"capacity": 8,
"description": "test",
"timeZone": "America/Los_Angeles",
"scheduledStartTime": ${TimestampFeeder},
"estimatedEndTime": "2020-02-15T16:00Z"
}
}
}
似乎值替换没有成功,为什么 session.set 无法替换 TimestampFeeder
的值
您的变量设置不起作用的原因是 运行 的 exec 会话函数没有链接到其他任何东西或被其他任何东西调用 - 它只是在 gamekeeper 的中间定义 class.
您似乎也对 feeders 感到困惑 - 除非您使用此名称的加特林结构,否则最好将其命名为其他名称。
您可以通过设置日期并将其包含在场景开始时的会话函数轻松实现此功能。
val scenario4 = scenario("Full GameKeeper tests“)
.exec(session => session.set("TimestampFeeder",DateTimeFormat.forPattern("yyyy-MM-dd").print(DateTime.now())
.exec(createPrivateEvent)
我认为您不能使用现有的 TimestampFeeder val,因为它只会在 运行 开始时设置一次 - 如果您想要构造它,则必须将其设为函数事情就是这样。
我正在尝试使用 session.set 在 Gatling Body 中传递今天的日期,但没有成功
我在下面的代码中设置了使用 joda-time(https://www.joda.org/joda-time/) timestampfeeder 变量
class gamekeeper extends BaseSimulation {
val timestampFeeder: String = DateTimeFormat.forPattern("yyyy-MM-dd").print(DateTime.now())
exec { session => session.set( "TimestampFeeder", timestampFeeder )}
val createPrivateEvent ={
exec(
http("Create Event As WER")
.post("https://api.cloud/" + {Env} + "/silve-griffin-service/graphql")
.headers(header)
.body(ElFileBody("<filename>"))
.check(status.in(200,201))
.check(bodyString.saveAs("EventAsWER_Response"))
.check(jsonPath(path="$.data.createEvent.id")
.saveAs(key="EventId")
)
)
.exec { session => session.set("NEW_ID", session("EventId").as[String]) }
.exec{session=>println(session);session}
//.pause(40,50)
}
val scenario4 = scenario("Full GameKeeper tests“)
.exec(createPrivateEvent)
setUp(
scenario4.inject(
constantConcurrentUsers(userCount) during(testDuration))
.protocols(httpProtocol)
)
.maxDuration(testDuration)
}
这里是createeventasWERwithcurrentdatetime.txt
的内容 {
"query": "mutation createEvent($input: CreateEventInput!) {\n createEvent(input: $input) {\n ...EventFields\n __typename\n }\n}\n\nfragment EventFields on Event {\n id\n status\n title\n format\n limitedSet\n rulesEnforcementLevel\n pairingType\n entryFee {\n amount\n currency\n __typename\n }\n venue {\n id\n name\n latitude\n longitude\n address\n timeZone\n phoneNumber\n emailAddress\n __typename\n }\n capacity\n description\n scheduledStartTime\n estimatedEndTime\n latitude\n longitude\n address\n timeZone\n phoneNumber\n emailAddress\n shortCode\n __typename\n}",
"variables": {
"input": {
"organizationId": "14540",
"latitude": 47.66499,
"longitude": -122.38043,
"phoneNumber": "206-523-9605",
"emailAddress": "test@gameot.com",
"title": "PerfTestServicesEvent",
"format": "DRAFT",
"pairingType":"SWISS",
"limitedSet": "CORE2020",
"rulesEnforcementLevel": "CASUAL",
"entryFeeAmount": 500,
"entryFeeCurrency": "USD",
"venueId": null,
"capacity": 8,
"description": "test",
"timeZone": "America/Los_Angeles",
"scheduledStartTime": ${TimestampFeeder},
"estimatedEndTime": "2020-02-15T16:00Z"
}
}
}
似乎值替换没有成功,为什么 session.set 无法替换 TimestampFeeder
的值您的变量设置不起作用的原因是 运行 的 exec 会话函数没有链接到其他任何东西或被其他任何东西调用 - 它只是在 gamekeeper 的中间定义 class.
您似乎也对 feeders 感到困惑 - 除非您使用此名称的加特林结构,否则最好将其命名为其他名称。
您可以通过设置日期并将其包含在场景开始时的会话函数轻松实现此功能。
val scenario4 = scenario("Full GameKeeper tests“)
.exec(session => session.set("TimestampFeeder",DateTimeFormat.forPattern("yyyy-MM-dd").print(DateTime.now())
.exec(createPrivateEvent)
我认为您不能使用现有的 TimestampFeeder val,因为它只会在 运行 开始时设置一次 - 如果您想要构造它,则必须将其设为函数事情就是这样。