Начиная с текущей версии JMeter 5.3 нет возможности решить sh вашу «проблему» с помощью встроенных компонентов JMeter .
Самое простое решение, которое я могу придумать: если вы перезапускаете свой сервер, он должен быть недоступен в течение некоторого времени, а когда он станет доступен - он должен ответить страницей HTML, содержащей некоторый текст.
Таким образом, вы можете «подождать», пока сервер будет запущен и запустится следующим образом:
- Добавьте JSR223 Sampler в соответствующее место в плане тестирования, где вам нужно «подождать» чтобы сервер был запущен и работал
Поместите следующий код в область «Сценарий»:
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()
}
}
- Вот и все, код попытается открыть Интернет страницу и поищите в ней текст, если страница не открывается и / или текста нет - она подождет 5 секунд и попытается повторить попытку
Дополнительная информация: