我想使用的HTTP客户端与一个巨大的数据量来测试我们的应用程序。是否有可能不分配一个字节数组或字符串与尺寸以产生具有WireMock无限或几千兆字节长度的输出?
据我看到ResponseDefinitionBuilder
has three withBody*
methods:
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,但它似乎并没有延长。
你看到了文件的安全性错误的原因是,WireMock将只读取它的配置文件根目录下的文件,所以建立一个符号可能会奏效。
如果做不到这一点,只是创造一个非常大的文件会做的伎俩,和身体的文件流不会消耗大量的内存。