summaryrefslogtreecommitdiffstats
path: root/cadi/client
diff options
context:
space:
mode:
authorInstrumental <jonathan.gathman@att.com>2019-05-31 10:02:47 -0500
committerInstrumental <jonathan.gathman@att.com>2019-05-31 10:09:32 -0500
commit98adb75e5e627d28ecdf659f4c8ed640ce53ed5e (patch)
treed7f2bb6a52a5118b49d38ddc7e80e1da6f998070 /cadi/client
parentdc87ad47ebe4915de69a7c8ce424c4ab517bb513 (diff)
Update DNSLocator code and use
Issue-ID: AAF-838 Change-Id: Ieaf112365e40237b6f252371d2d2f95e9bc47f89 Signed-off-by: Instrumental <jonathan.gathman@att.com>
Diffstat (limited to 'cadi/client')
-rw-r--r--cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java11
-rw-r--r--cadi/client/src/main/java/org/onap/aaf/cadi/locator/DNSLocator.java41
-rw-r--r--cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java29
-rw-r--r--cadi/client/src/test/java/org/onap/aaf/cadi/locator/test/JU_DNSLocator.java4
4 files changed, 59 insertions, 26 deletions
diff --git a/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java b/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java
index 1e5c5211..ae562cb2 100644
--- a/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java
+++ b/cadi/client/src/main/java/org/onap/aaf/cadi/http/HMangr.java
@@ -162,14 +162,21 @@ public class HMangr {
return same(ss,retryable);
}
public<RET> RET all(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable) throws LocatorException, CadiException, APIException {
- return oneOf(ss,retryable,true,null);
+ return call(ss,retryable,true,null);
}
public<RET> RET all(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify) throws LocatorException, CadiException, APIException {
- return oneOf(ss,retryable,notify,null);
+ return call(ss,retryable,notify,null);
}
+ public <RET> RET allExcept(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify, String selfHost) throws LocatorException, CadiException, APIException {
+ return call(ss,retryable,notify,selfHost);
+ }
+
public<RET> RET oneOf(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify,String host) throws LocatorException, CadiException, APIException {
+ return call(ss,retryable,notify,host);
+ }
+ private<RET> RET call(SecuritySetter<HttpURLConnection> ss, Retryable<RET> retryable,boolean notify,String host) throws LocatorException, CadiException, APIException {
RET ret = null;
// make sure we have all current references:
loc.refresh();
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 8357129f..b7c0b02c 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
@@ -60,23 +60,27 @@ public class DNSLocator implements Locator<URI> {
if (aaf_locate==null) {
throw new LocatorException("Null passed into DNSLocator constructor");
}
- int start, port;
+ int start, defPort;
if (aaf_locate.startsWith("https:")) {
- protocol = "https:";
- start = 9; // https://
- port = 443;
+ protocol = "https";
+ start = 8; // https://
+ defPort = 443;
} else if (aaf_locate.startsWith("http:")) {
- protocol = "http:";
- start = 8; // http://
- port = 80;
+ protocol = "http";
+ start = 7; // http://
+ defPort = 80;
} else {
throw new LocatorException("DNSLocator accepts only https or http protocols. (requested URL " + aaf_locate + ')');
}
-
- parsePorts(aaf_locate.substring(start), port);
+ host = parseHostAndPorts(aaf_locate, start, defPort);
+ refresh();
}
- @Override
+ public static DNSLocator create(Access access, String url) throws LocatorException {
+ return new DNSLocator(access, url);
+ }
+
+ @Override
public URI get(Item item) throws LocatorException {
return hosts[((DLItem)item).cnt].uri;
}
@@ -159,10 +163,11 @@ public class DNSLocator implements Locator<URI> {
return false;
}
- private void parsePorts(String aaf_locate, int defaultPort) throws LocatorException {
+ private String parseHostAndPorts(String aaf_locate, int _start, int defaultPort) throws LocatorException {
int slash, start;
- int colon = aaf_locate.indexOf(':');
+ int colon = aaf_locate.indexOf(':',_start);
if (colon > 0) {
+ host = aaf_locate.substring(_start,colon);
start = colon + 1;
int left = aaf_locate.indexOf('[', start);
if (left > 0) {
@@ -195,8 +200,12 @@ public class DNSLocator implements Locator<URI> {
}
}
} else {
+ slash = aaf_locate.indexOf('/', _start);
+ host = slash<_start?aaf_locate.substring(_start):aaf_locate.substring(_start,slash);
startPort = endPort = defaultPort;
- }
+ }
+
+ return host;
}
private class Host {
@@ -206,9 +215,13 @@ public class DNSLocator implements Locator<URI> {
public Host(InetAddress inetAddress, int port, String suffix) throws URISyntaxException {
ia = inetAddress;
- uri = new URI(protocol,null,inetAddress.getHostAddress(),port,suffix,null,null);
+ uri = new URI(protocol,null,inetAddress.getCanonicalHostName(),port,suffix,null,null);
status = Status.UNTRIED;
}
+
+ public String toString() {
+ return uri.toString() + " - " + status.name();
+ }
}
private class DLItem implements Item {
diff --git a/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java b/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java
index 9d87d699..d1744253 100644
--- a/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java
+++ b/cadi/client/src/test/java/org/onap/aaf/cadi/http/test/JU_HMangr.java
@@ -21,8 +21,14 @@
package org.onap.aaf.cadi.http.test;
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.*;
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.fail;
+import static org.mockito.Matchers.any;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.when;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
@@ -34,10 +40,10 @@ import java.net.URISyntaxException;
import javax.net.ssl.SSLHandshakeException;
-import static org.hamcrest.CoreMatchers.*;
-
-import org.junit.*;
-import org.mockito.*;
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
import org.onap.aaf.cadi.Access;
import org.onap.aaf.cadi.CadiException;
import org.onap.aaf.cadi.Locator;
@@ -49,6 +55,8 @@ import org.onap.aaf.cadi.client.Retryable;
import org.onap.aaf.cadi.http.HMangr;
import org.onap.aaf.misc.env.APIException;
+import junit.framework.Assert;
+
public class JU_HMangr {
@Mock Locator<URI> locMock;
@@ -173,9 +181,14 @@ public class JU_HMangr {
@Test
public void allTest() throws LocatorException, CadiException, APIException {
HManagerStub hman = new HManagerStub(access, locMock);
+
assertThat(hman.best(ssMock, retryableMock), is(nullValue()));
- assertThat(hman.all(ssMock, retryableMock), is(nullValue()));
- assertThat(hman.all(ssMock, retryableMock, true), is(nullValue()));
+ try {
+ hman.all(ssMock, retryableMock, true);
+ Assert.fail("Should have thrown LocatorException");
+ } catch (LocatorException e) {
+ assertEquals(e.getLocalizedMessage(),"No available clients to call");
+ }
}
@Test
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 9b5bbafe..dfc7142a 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
@@ -53,9 +53,9 @@ public class JU_DNSLocator {
item = dl.best();
uri = dl.get(item);
- assertThat(uri.toString(), is("https://127.0.0.1:8100"));
+ assertThat(uri.toString(), is("https://localhost:8100"));
item = dl.best();
- assertThat(uri.toString(), is("https://127.0.0.1:8100"));
+ assertThat(uri.toString(), is("https://localhost:8100"));
assertThat(dl.hasItems(), is(true));
for (item = dl.first(); item != null; item = dl.next(item)) {