diff options
Diffstat (limited to 'cadi/client')
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)) { |