Как имитировать сценарий тайм-аута соединения с помощью Wiremock

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


person asp008    schedule 14.01.2020    source источник
comment
если вы не знали, у каратэ также есть возможность имитации, которая может заменить wiremock: github.com/intuit/karate/tree/master/karate-netty   -  person Peter Thomas    schedule 14.01.2020
comment
Да, я знаю. Но в настоящее время мы используем Karate с wiremock для этого выпуска. Позже мы могли бы перейти к каратэ-нетти. Но прямо сейчас нужно какое-то решение для этого сценария. Спасибо, Питер.   -  person asp008    schedule 14.01.2020
comment
конечно, всего хорошего. не могу помочь вам здесь. но я в замешательстве. каратэ правильно делает HTTP-запросы? так почему вы привносите resttemplate в картину?   -  person Peter Thomas    schedule 14.01.2020
comment
Можете ли вы добавить срабатывающее правило сопоставления?   -  person A. Kootstra    schedule 14.01.2020
comment
@Peter: Каратэ вызывает /register, который является конечной точкой моего API, и внутри этого API используется resttemplate для вызова нижестоящего API. Итак, мне нужно смоделировать сценарий ошибки соединения с нижестоящими системами.   -  person asp008    schedule 15.01.2020
comment
@A.Kootstra: сопоставление указано в описании.   -  person asp008    schedule 15.01.2020
comment
В описании вы упоминаете, что используете 2.8.0. Вы пробовали использовать самую последнюю версию? На момент написания это 2.25.1.   -  person A. Kootstra    schedule 19.01.2020