Мне нужно написать интеграционный тест с использованием карате и весенней загрузки, чтобы смоделировать сценарий тайм-аута соединения. Я использую Wiremock в качестве фиктивного сервера.
Я написал первичную службу и внутренне она вызывает два нижестоящих API.
Чтобы эмулировать это поведение, установите тайм-ауты resttemplate, как показано ниже.
connectTimeout = 10
readTimeout = 5000
Я могу смоделировать тайм-ауты чтения, используя фиксированные задержки в Wiremock, но не могу сделать то же самое для тайм-аута соединения. Я также попробовал ошибку CONNECTION_RESET_BY_PEER, но она выдает исключение NoSuchMethod.
Есть ли какой-либо способ в Wiremock, где мы также можем установить время ожидания его соединения. Я прочитал документы, но не смог найти ни одного. Использование версии: '2.8.0'.
Простая остановка сервера перед выполнением контрольного примера выглядит нереально.
Код: файл функций:
Scenario: To validate the connection establishment issue with downstream API
Given path '/exampleuri'
And header X-SAMPLE-ID = 'xyz'
And header Authorization = tokenBearer.generateToken()
And header X-Forwarder-For = '10.0.0.127'
And request '{"subject":"My Example Subject"}'
When method POST
Then status 500
WireMockServer wireMockServer =
new WireMockServer(
wireMockConfig().port(32434).usingFilesUnderDirectory("src/test/resources"));
/** Start wiremock. */
public void startWiremock() {
wireMockServer.start();
}
/** Stop wiremock. */
public void stopWiremock() {
wireMockServer.stop();
}
Отображение:
{
"request": {
"urlPath": "/provider/user",
"method": "GET",
"headers": {
"Accept": {
"contains": "application/json"
},
"Content-Type": {
"contains": "application/json"
},
"match-Id": {
"contains": "befbe34"
},
"Authorization": {
"contains": "Bearer eyJhbGciOiJSUzI1NiIsImtpZCI6IlRJQUFfQVMtU2lnbiJ9.eyJhZGdyb3VwcyI6IkNOPWZHTEJJQkROVEVTVCxPVT1Hcm91cHMsT1U9R0xCLERDPUlOVFJBTkVULERDPUJBUkNBUElOVCxEQz1jb20iLCJzdWIiOiJzeXNUSUFBQVNCQUVURVNUIiwiZXhwIjoxNTYwMzkwNzcwLCJzY29wZSI6W10sImNsaWVudF9pZCI6IklCRE5DTElFTlQiLCJpc3MiOiJUSUFBLUFTIiwiYXVkIjoiSUJETiJ9.AaPSalG1PskW_h3-vj-oI-d73Vuk-vZDEu4feXemj_2uVUQ8uMybz-288v2u9kh3Ba9aMhHR6n6hgzTf4DlsDYBFgqVPvJ4vjqt2r7pCpNoSfIUN2kwIKCsspZeOcKMNPRFbiQf4KgpxZCFPwrGCW7bnTWc4WqBXUyaT7SvxXoyN9iVbA1pCIP7tcXGgUyKh0rglX45QSw03HPs7JphIMi5QUGYUzmCC7GDe8ZUg1VMFALw1FBDr86Eyxvyz8xkX90_7os6rVJKcfjKADg7IV6nAE8xC2-zvXR992-wXcLFWOF7ASAszZQrb5JIXchFc-2tH_H44Cm3KkFverxJwIQ"
}
},
"queryParameters": {
"userId": {
"equalTo": "1234567"
},
"indicator": {
"equalTo": "true"
}
}
},
"response": {
"fault": "CONNECTION_RESET_BY_PEER"
}
}
Даже после установки 10 в качестве таймаута подключения в resttemplate он может подключаться к серверу Wiremock. Пожалуйста, предложите некоторые решения.