我有一個HTTP採樣器,產生JSOn字符串。我使用Groovy JSonSlurper更新用戶參數pollOver解析JSON片段:JMeter JSR223後處理程序不更新用戶參數
import groovy.json.JsonSlurper
def jsonSlurper = new JsonSlurper()
def response = jsonSlurper.parseText(prev.getResponseDataAsString())
def isError = response.response.isError
def error = isError ? "true":"false"
def data = response.response.data
def pollOver = data?.trim() || isError
log.info("response = " + response)
log.info("isError = " + isError)
log.info("error = " + error)
log.info("data = " + data)
log.info("pollOver = " + pollOver)
vars.put("pollOver", pollOver ? "true":"false")
vars.put("data", data)
vars.put("error", error)
不幸的是,用戶參數pollOver從不更新,雖然記錄從常規後處理表明它具有正確的價值:
2017-09-13 13:03:54,296 INFO o.a.j.e.JSR223PostProcessor: response = [response:[version:1505333033161, data:138bdb6e-f0e9-48c0-8dd6-5bb14154d816, startTime:1505333033161, endTime:1505333033264, My Service, isError:false, operationIdList:[2ca8719c-152c-4baa-8cfc-8ec1022cdc09], progress: created successfully, rootId:570ef302-89a2-4bc1-bd1a-4d06fba306a0, id:570ef302-89a2-4bc1-bd1a-4d06fba306a0], version:1.0]
2017-09-13 13:03:54,296 INFO o.a.j.e.JSR223PostProcessor: isError = false
2017-09-13 13:03:54,296 INFO o.a.j.e.JSR223PostProcessor: error = false
2017-09-13 13:03:54,296 INFO o.a.j.e.JSR223PostProcessor: data = 138bdb6e-f0e9-48c0-8dd6-5bb14154d816
2017-09-13 13:03:54,296 INFO o.a.j.e.JSR223PostProcessor: pollOver = true
如果我將pollOver定義爲用戶定義的變量,它可以正常工作。當然,我需要X對於不同的線程是不同的,因此更喜歡使用用戶參數而不是UDV。
這裏有個遺漏,我錯過了嗎?我能否在JSR223常規後處理器中使用vars.put(...)更新用戶參數?
這裏是雖然控制器,其終止通過UDV「pollOver」確定(pollOver在UDV部分被定義爲「創建網站參數」): [雖然控制器根據UDV] [3]
這裏是後處理器,更新UDV pollOver使控制器終止: [此處輸入圖像的描述] [4]
感謝名單,
ř
我無法發佈圖像。這裏是我的口頭描述:(簡單控制器{(UDV pollOver){(雖然控制器取決於pollOver){(HTTP採樣器){JSR223 groovy後處理器來更新pollOver)}}}。後處理程序在日誌中正常輪詢pollOver,但pollOver UDV仍然爲「false」,從而導致循環從不終止。 – Maverick