如何故意使 Linux 中的 DNS 解析失败来对 Java 应用程序进行崩溃测试?

如何故意使 Linux 中的 DNS 解析失败来对 Java 应用程序进行崩溃测试?

情况相当简单:为了重现最近一次中断中发生的故障,我想故意让 JVM 中的 DNS 解析失败:

Caused by: java.net.UnknownHostException: ...domain.name...
at java.net.InetAddress.getAllByName0(InetAddress.java:1280)
at java.net.InetAddress.getAllByName(InetAddress.java:1192)
at java.net.InetAddress.getAllByName(InetAddress.java:1126)
at java.net.InetAddress.getByName(InetAddress.java:1076)

直接通过 Linux DNS 设置或在 JVM 级别执行此操作是否有意义。如何做到?

答案1

SloDNS 是一个专为测试故障 DNS 模式而构建的转发服务器:https://github.com/brennentsmith/slodns

您可以为发送给它的查询添加任意数量的延迟、抖动和丢失,并将透明地将请求转发到任何上游服务器。它不会破坏 UDP 数据报,因此可以与专有 DNS 协议扩展配合使用。

对于您的情况,您可以运行它并将参数设置--loss为一个高值,或者将其设置--delay--jitter大于 JVM 超时的值。

公平披露,这是我写的:)

相关内容