JMeter - Приостановить (и возобновить) выполнение по требованию - PullRequest
1 голос
/ 25 мая 2020

Я выполняю задачу JMeter в течение нескольких часов на сервере,

Я хочу иметь возможность приостанавливать выполнение на несколько секунд / минут и возобновлять выполнение после завершения sh перезапуска сервера

Есть ли способ подать сигнал JMeter приостановить и возобновить его выполнение?

Я видел аналогичный вопрос , но он не соответствует моей проблеме

1 Ответ

1 голос
/ 25 мая 2020

Начиная с текущей версии JMeter 5.3 нет возможности решить sh вашу «проблему» с помощью встроенных компонентов JMeter .

Самое простое решение, которое я могу придумать: если вы перезапускаете свой сервер, он должен быть недоступен в течение некоторого времени, а когда он станет доступен - он должен ответить страницей HTML, содержащей некоторый текст.

Таким образом, вы можете «подождать», пока сервер будет запущен и запустится следующим образом:

  1. Добавьте JSR223 Sampler в соответствующее место в плане тестирования, где вам нужно «подождать» чтобы сервер был запущен и работал
  2. Поместите следующий код в область «Сценарий»:

    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()
        }
    }
    
  3. Вот и все, код попытается открыть Интернет страницу и поищите в ней текст, если страница не открывается и / или текста нет - она ​​подождет 5 секунд и попытается повторить попытку

Дополнительная информация:

...