Огромный или бесконечный отклик с WireMock - PullRequest
0 голосов
/ 04 февраля 2019

Я бы хотел протестировать наше приложение с помощью HTTP-клиента с огромным количеством данных.Можно ли создать бесконечный или несколько гигабайт выходных данных с помощью WireMock без выделения байтового массива или строки такого размера?

Насколько я вижу, ResponseDefinitionBuilder имеет три withBody* метода :

  • public ResponseDefinitionBuilder withBodyFile(String fileName)
  • public ResponseDefinitionBuilder withBody(String body)
  • public ResponseDefinitionBuilder withBody(byte[] body)

Я пытался withBodyFile("/dev/zero"), но получилследующее исключение:

WARN (ServletHandler.java:628) - /test.txt
com.github.tomakehurst.wiremock.security.NotAuthorisedException: Access to file /dev/zero is not permitted
    at com.github.tomakehurst.wiremock.common.AbstractFileSource.assertFilePathIsUnderRoot(AbstractFileSource.java:160)
    at com.github.tomakehurst.wiremock.common.AbstractFileSource.getBinaryFileNamed(AbstractFileSource.java:45)
    at com.github.tomakehurst.wiremock.http.StubResponseRenderer.renderDirectly(StubResponseRenderer.java:115)
    at com.github.tomakehurst.wiremock.http.StubResponseRenderer.buildResponse(StubResponseRenderer.java:64)
    at com.github.tomakehurst.wiremock.http.StubResponseRenderer.render(StubResponseRenderer.java:56)
    at com.github.tomakehurst.wiremock.http.AbstractRequestHandler.handle(AbstractRequestHandler.java:50)
    at com.github.tomakehurst.wiremock.servlet.WireMockHandlerDispatchingServlet.service(WireMockHandlerDispatchingServlet.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    ...

Для двух других требуется огромный массив или строка в памяти, которых я также хотел бы избежать.

Я также проверил Fault enum но он не выглядит расширяемым.

1 Ответ

0 голосов
/ 05 февраля 2019

Причина, по которой вы увидели ошибку безопасности файла, заключается в том, что WireMock будет читать файлы только под настроенным корневым файлом, поэтому настройка символической ссылки может сработать.

В противном случае простое создание очень большого файла приведет куловка, и не будет занимать много памяти, поскольку файлы тела передаются в потоковом режиме.

...