Something that’s come up a few times in my career is the difficulty of validating if and when your code can handle actual DNS changes. A lot of times testing that you have the right JVM settings and that your 3rd party clients can handle it involves mucking with hosts files, nameservers, or stuff like Route53 and waiting around. Then its hard to automate and deterministically reproduce. However, you can hook into the DNS resolution in the JVM to control what gets resolved to what. And this way you can tweak the resolution in a test and see what breaks! I found some info at this blog post and cleaned it up a bit for usage in scala.
The magic sauce to pull this off is to make sure you override the default
sun.net.spi.nameservice.NameServiceDescriptor. Internally in the
InetAddress class it tries to load an instance of the interface
NameServiceDescriptor… Read more