From 3ca1b28f07f5a46fbeca439677a98245e50b69ea Mon Sep 17 00:00:00 2001 From: Instrumental Date: Thu, 12 Dec 2019 08:37:56 -0600 Subject: [PATCH] Fix DNSLocator JUnit Issue-ID: AAF-1060 Signed-off-by: Instrumental Change-Id: I24318cc0d5b698b7719afb20c411895fda001bff --- auth/docker/.gitignore | 2 ++ .../java/org/onap/aaf/cadi/locator/DNSLocator.java | 36 ++++++++++++++++++++-- .../onap/aaf/cadi/locator/test/JU_DNSLocator.java | 15 +++++++-- 3 files changed, 49 insertions(+), 4 deletions(-) diff --git a/auth/docker/.gitignore b/auth/docker/.gitignore index 51bfecd8..f3a8bcb9 100644 --- a/auth/docker/.gitignore +++ b/auth/docker/.gitignore @@ -1,4 +1,6 @@ /local +/.project +/.settings /d.props /d.props.bak /aaf.props 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 { 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 { } 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 { @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 { 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) -- 2.16.6