通过代码直接设置Java的DNS(实际上设置的是DNS Cache),支持JDK 6+。
功能
- 设置/重置DNS(不会再去Lookup DNS)
- 可以设置单条
- 或是通过Properties文件批量设置
- 查看DNS Cache内容
- 删除一条DNS Cache(即重新Lookup DNS)
- 清空DNS Cache(即所有的域名重新Lookup DNS)
需求场景
- 一些库中写死了连接域名,需要通过修改host文件绑定才能做测试。结果是:
- 自动持续集成的机器上一般同学是没有权限去修改host文件的,导致项目不能持续集成。
实际上是因为这点,催生这个库的需求。 - 单元测试需要每个开发都在开发机上做host绑定,增加了依赖的配置操作且繁琐重复。
- 自动持续集成的机器上一般同学是没有权限去修改host文件的,导致项目不能持续集成。
- 一些功能需要域名作为输入参数,如使用HTTP请求的网关 或是 有域名检查限制的Web应用。
这种情况下,让需要让一个域名连接到测试机器的IP上,或是 使用一个还不存在的域名但又不想或不能去配置DNS。 - 在性能测试时,
- 不去做网络的DNS Lookup(DNS解析消耗),这样使得压测更加关注服务器响应,压测更充分反应出实现代码的性能。
- 可以动态修改DNS缓存,无需修改host文件和http链接等不灵活的方式。
- 一个JVM进程可以对应一套域名绑定,相互之间不影响,可以实现多场景,多域名绑定的需求压测。
- 打开Java中的SecurityManager时(如在Web容器Tomcat中的Web应用),Java的DNS缺省是不会失效的。 如果域名绑定的IP变了,可以通过这个库重置DNS,作为一个临时的手段(强烈不推荐)。
当然往往进行要先有能执行入口,比如远程调用或是jvm-ssh-groovy-shell。