是否可以使用线轴工具模拟连接超时?
我知道它可以通过使用来模拟,但是呢?SocketTimeoutException
withFixedDelay
ConnectionTimeoutException
我知道它可以通过使用来模拟,但是呢?SocketTimeoutException
withFixedDelay
ConnectionTimeoutException
是的,可以通过调用Java API或将以下内容发布到:来使用WireMock执行此操作:addDelayBeforeProcessingRequests(300)
http://<host>:<port>/__admin/socket-delay
{ "milliseconds": 300 }
(显然,将300替换为您希望延迟的毫秒数)
似乎这个问题的答案是“否”,因为版本2.0.8-beta。
Tom(WireMock的作者)在GitHub的这一期中解释了原因:
目前,在纯Java中基本上不可能可靠地强制连接超时。
过去的情况是,您可以在调用套接字之前注入延迟,但是由于实现内部结构的更改,这种情况在一段时间前停止了工作。
.accept()
我目前的建议是使用一种在网络堆栈级别工作的工具。 type 命令可以解决问题,或者如果您希望对此进行一定程度的自动化,则可以使用 https://github.com/tomakehurst/saboteur 或 https://github.com/alexei-led/pumba 等工具。
iptables ... -j DROP
他还继续解释说,仅仅停止WireMock并不能实现同样的事情:
关闭WireMock不会产生同样的效果 - 当端口未被侦听时,您将获得TCP(重置)数据包,而当您在初始数据包后的超时窗口中从服务器获得任何回复时,就会发生连接超时。
RST
SYN