Мне нужно написать интеграционный тест с использованием карате и весенней загрузки, чтобы имитировать сценарий тайм-аута соединения. Я использую Wiremock в качестве фиктивного сервера.
Я написал основной сервис, и внутри он вызывает два нижестоящих API.
Чтобы эмулировать это поведение, установите время ожидания resttemplate, как показано ниже.
коннекттаймаут=10
время чтения = 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. Пожалуйста, предложите некоторые решения.