Как смоделировать сценарий тайм-аута соединения с Wiremock - PullRequest
1 голос
/ 14 января 2020

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

...