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" 启动服务器并 运行 如下:

  1. 将 JSR223 采样器添加到测试计划中您需要“等待”服务器启动和 运行
  2. 的适当位置
  3. 将以下代码放入"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()
        }
    }
    
  4. 就是这样,代码将尝试打开网页并在其中查找一些文本,如果页面未打开 and/or 文本不存在 - 它将等待 5 秒并重试

更多信息: