diff options
author | Instrumental <jonathan.gathman@att.com> | 2019-12-12 08:37:56 -0600 |
---|---|---|
committer | Instrumental <jonathan.gathman@att.com> | 2019-12-12 08:38:06 -0600 |
commit | 3ca1b28f07f5a46fbeca439677a98245e50b69ea (patch) | |
tree | b42339d5ce04c9f48966fa1e8e5958fab0da4403 /cadi | |
parent | deb396a3d53a84b2eb5a46d40122b4902d72c601 (diff) |
Fix DNSLocator JUnit
Issue-ID: AAF-1060
Signed-off-by: Instrumental <jonathan.gathman@att.com>
Change-Id: I24318cc0d5b698b7719afb20c411895fda001bff
Diffstat (limited to 'cadi')
-rw-r--r-- | cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java | 36 | ||||
-rw-r--r-- | cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java | 15 |
2 files changed, 47 insertions, 4 deletions
diff --git a/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java b/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java index c0b9f375..53782b34 100644 --- a/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java +++ b/cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java @@ -23,8 +23,10 @@ package org.onap.aaf.cadi.locator; import java.io.IOException; import java.net.InetAddress; +//import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; +import java.net.UnknownHostException; import org.onap.aaf.cadi.Access; import org.onap.aaf.cadi.Access.Level; @@ -39,13 +41,21 @@ public class DNSLocator implements SizedLocator<URI> { private Host[] hosts; private int startPort, endPort; private String suffix; + // Added for JUnit Purposes. Force correct responses in odd situations on tests + private final DNSLookup dnsLookup; private int size = 1; // initial, until refreshed. public DNSLocator(Access access, String protocol, String host, String range) { + this(access, protocol, host, range, DNSLookup.dflt); + } + + public DNSLocator(Access access, String protocol, String host, String range, DNSLookup dnsLookup) { this.host = host; this.protocol = protocol; this.access = access; + this.dnsLookup = dnsLookup; + int dash = range.indexOf('-'); if (dash<0) { startPort = endPort = Integer.parseInt(range); @@ -57,7 +67,12 @@ public class DNSLocator implements SizedLocator<URI> { } public DNSLocator(Access access, String aaf_locate) throws LocatorException { + this(access, aaf_locate, DNSLookup.dflt); + } + + public DNSLocator(Access access, String aaf_locate, DNSLookup dnsLookup) throws LocatorException { this.access = access; + this.dnsLookup = dnsLookup; if (aaf_locate==null) { throw new LocatorException("Null passed into DNSLocator constructor"); } @@ -148,7 +163,7 @@ public class DNSLocator implements SizedLocator<URI> { @Override public boolean refresh() { try { - InetAddress[] ias = InetAddress.getAllByName(host); + InetAddress[] ias = dnsLookup.getAllByName(host); Host[] temp = new Host[ias.length * (1 + endPort - startPort)]; int cnt = -1; for (int j=startPort; j<=endPort; ++j) { @@ -214,7 +229,24 @@ public class DNSLocator implements SizedLocator<URI> { return host; } - + + /** + * + * Some ISPs return InetEntries for bogus entries, making JUnit Testing difficult. + * We add this interface to force validly empty responses. + * We don't use Lambda at this point, so we can continue to support JKD 1.7 + * a while longer. + * + */ + public interface DNSLookup { + InetAddress[] getAllByName(String host) throws UnknownHostException; + public static final DNSLookup dflt = new DNSLookup() { + public InetAddress[] getAllByName(String host) throws UnknownHostException { + return InetAddress.getAllByName(host); + } + }; + } + private class Host { private URI uri; private InetAddress ia; diff --git a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java index e2c8f828..77213e6a 100644 --- a/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java +++ b/cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java @@ -27,7 +27,9 @@ import static org.junit.Assert.fail; import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.net.InetAddress; import java.net.URI; +import java.net.UnknownHostException; import org.junit.Before; import org.junit.Test; @@ -94,8 +96,17 @@ public class JU_DNSLocator { @Test public void refreshTest() throws LocatorException { - DNSLocator dl = new DNSLocator(access, "https", "bogushost", "8100-8101"); - assertThat(dl.refresh(), is(false)); + DNSLocator dl = new DNSLocator(access, "https", "bogushost", "8100-8101", + // Note: Lambda would be nice but need JDK 1.7 still + // PowerMock couldn't do InetAddress + new DNSLocator.DNSLookup() { + @Override + public InetAddress[] getAllByName(String host) throws UnknownHostException { + return new InetAddress[0]; + } + } + ); + assertThat(dl.refresh(), is(true)); } @Test(expected = LocatorException.class) |