JMeter - 按需暂停(和恢复)执行
JMeter - Pause (and resume) execution on demand
我在服务器上执行 JMeter 任务几个小时,
我希望能够暂停执行一段时间 seconds/minutes 并在服务器完成重启后继续执行
有没有办法通知 JMeter 暂停和恢复执行?
我看到了,但它不符合我的问题
截至当前 JMeter version 5.3 there is no way to accomplish your "issue" with built-in JMeter components。
我能想到的最简单的解决方案是:假设您正在重新启动服务器,它应该在一段时间内不可用,当它可用时 - 它应该以包含一些文本的 HTML 页面响应。
因此您可以"wait" 启动服务器并 运行 如下:
- 将 JSR223 采样器添加到测试计划中您需要“等待”服务器启动和 运行
的适当位置
将以下代码放入"Script"区域:
import org.apache.http.client.config.RequestConfig
import org.apache.http.client.methods.HttpGet
import org.apache.http.impl.client.HttpClientBuilder
import org.apache.http.util.EntityUtils
SampleResult.setIgnore()
def retry = true
def requestConfig = RequestConfig.custom().setConnectTimeout(1000).setSocketTimeout(1000).build()
def httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build()
while (retry) {
def httpGet = new HttpGet('http://jmeter.apache.org')
try {
def entity = httpClient.execute(httpGet).getEntity()
if (EntityUtils.toString(entity).contains('Apache JMeter')) {
log.info('Application is up, proceeding')
retry = false
} else {
log.info('Application is still down, waiting for 5 seconds before retry')
sleep(5000)
}
}
catch (Throwable ex) {
sleep(5000)
ex.printStackTrace()
}
}
- 就是这样,代码将尝试打开网页并在其中查找一些文本,如果页面未打开 and/or 文本不存在 - 它将等待 5 秒并重试
更多信息:
我在服务器上执行 JMeter 任务几个小时,
我希望能够暂停执行一段时间 seconds/minutes 并在服务器完成重启后继续执行
有没有办法通知 JMeter 暂停和恢复执行?
我看到了
截至当前 JMeter version 5.3 there is no way to accomplish your "issue" with built-in JMeter components。
我能想到的最简单的解决方案是:假设您正在重新启动服务器,它应该在一段时间内不可用,当它可用时 - 它应该以包含一些文本的 HTML 页面响应。
因此您可以"wait" 启动服务器并 运行 如下:
- 将 JSR223 采样器添加到测试计划中您需要“等待”服务器启动和 运行 的适当位置
将以下代码放入"Script"区域:
import org.apache.http.client.config.RequestConfig import org.apache.http.client.methods.HttpGet import org.apache.http.impl.client.HttpClientBuilder import org.apache.http.util.EntityUtils SampleResult.setIgnore() def retry = true def requestConfig = RequestConfig.custom().setConnectTimeout(1000).setSocketTimeout(1000).build() def httpClient = HttpClientBuilder.create().setDefaultRequestConfig(requestConfig).build() while (retry) { def httpGet = new HttpGet('http://jmeter.apache.org') try { def entity = httpClient.execute(httpGet).getEntity() if (EntityUtils.toString(entity).contains('Apache JMeter')) { log.info('Application is up, proceeding') retry = false } else { log.info('Application is still down, waiting for 5 seconds before retry') sleep(5000) } } catch (Throwable ex) { sleep(5000) ex.printStackTrace() } }
- 就是这样,代码将尝试打开网页并在其中查找一些文本,如果页面未打开 and/or 文本不存在 - 它将等待 5 秒并重试
更多信息: