summaryrefslogtreecommitdiffstats
path: root/cadi
diff options
context:
space:
mode:
authorInstrumental <jonathan.gathman@att.com>2019-12-12 08:37:56 -0600
committerInstrumental <jonathan.gathman@att.com>2019-12-12 08:38:06 -0600
commit3ca1b28f07f5a46fbeca439677a98245e50b69ea (patch)
treeb42339d5ce04c9f48966fa1e8e5958fab0da4403 /cadi
parentdeb396a3d53a84b2eb5a46d40122b4902d72c601 (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.java36
-rw-r--r--cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java15
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)