public Collection<String> getServers() { NatsServerInfo info = this.serverInfo.get(); HashSet<String> check = new HashSet<String>(); ArrayList<String> servers = new ArrayList<>(); options.getServers().stream().forEach(x -> { String uri = x.toString(); if (!check.contains(uri)) { servers.add(uri); check.add(uri); } }); if (info != null && info.getConnectURLs() != null) { for (String uri : info.getConnectURLs()) { if (!check.contains(uri)) { servers.add(uri); check.add(uri); } } } return servers; }
public Collection<String> getServers() { NatsServerInfo info = this.serverInfo.get(); HashSet<String> check = new HashSet<String>(); ArrayList<String> servers = new ArrayList<>(); options.getServers().stream().forEach(x -> { String uri = x.toString(); if (!check.contains(uri)) { servers.add(uri); check.add(uri); } }); if (info != null && info.getConnectURLs() != null) { for (String uri : info.getConnectURLs()) { if (!check.contains(uri)) { servers.add(uri); check.add(uri); } } } return servers; }
@Test public void testServerInProperties() { Properties props = new Properties(); String url = "nats://localhost:8080"; props.setProperty(Options.PROP_URL, url); Options o = new Options.Builder(props).build(); Collection<URI> servers = o.getServers(); URI[] serverArray = servers.toArray(new URI[0]); assertEquals(1, serverArray.length); assertEquals("property server", url, serverArray[0].toString()); }
void connect(boolean reconnectOnConnect) throws InterruptedException, IOException { if (options.getServers().size() == 0) { throw new IllegalArgumentException("No servers provided in options"); } for (String serverURI : getServers()) { if (isClosed()) { break; } updateStatus(Status.CONNECTING); tryToConnect(serverURI); if (isConnected()) { break; } else { updateStatus(Status.DISCONNECTED); } } if (!isConnected() && !isClosed()) { if (reconnectOnConnect) { reconnect(); } else { close(); throw new IOException("Unable to connect to gnatsd server."); } } }
@Test public void testServersInProperties() { Properties props = new Properties(); String url1 = "nats://localhost:8080"; String url2 = "nats://localhost:8081"; String urls = url1 + ", " + url2; props.setProperty(Options.PROP_SERVERS, urls); Options o = new Options.Builder(props).build(); Collection<URI> servers = o.getServers(); URI[] serverArray = servers.toArray(new URI[0]); assertEquals(2, serverArray.length); assertEquals("property server", url1, serverArray[0].toString()); assertEquals("property server", url2, serverArray[1].toString()); }
void connect(boolean reconnectOnConnect) throws InterruptedException, IOException { if (options.getServers().size() == 0) { throw new IllegalArgumentException("No servers provided in options"); } for (String serverURI : getServers()) { if (isClosed()) { break; } updateStatus(Status.CONNECTING); tryToConnect(serverURI); if (isConnected()) { break; } else { updateStatus(Status.DISCONNECTED); } } if (!isConnected() && !isClosed()) { if (reconnectOnConnect) { reconnect(); } else { close(); throw new IOException("Unable to connect to gnatsd server."); } } }
@Test public void testServers() { String url1 = "nats://localhost:8080"; String url2 = "nats://localhost:8081"; String[] serverUrls = {url1, url2}; Options o = new Options.Builder().servers(serverUrls).build(); Collection<URI> servers = o.getServers(); URI[] serverArray = servers.toArray(new URI[0]); assertEquals(2, serverArray.length); assertEquals("property server", url1, serverArray[0].toString()); assertEquals("property server", url2, serverArray[1].toString()); }
@Test public void testEmptyStringInServers() { String url1 = "nats://localhost:8080"; String url2 = ""; String[] serverUrls = {url1, url2}; Options o = new Options.Builder().servers(serverUrls).build(); Collection<URI> servers = o.getServers(); URI[] serverArray = servers.toArray(new URI[0]); assertEquals(1, serverArray.length); assertEquals("property server", url1, serverArray[0].toString()); }
@Test public void testDefaultOptions() { Options o = new Options.Builder().build(); assertEquals("default one server", 1, o.getServers().size()); assertEquals("default url", Options.DEFAULT_URL, o.getServers().toArray()[0].toString()); assertEquals("default data port type", Options.DEFAULT_DATA_PORT_TYPE, o.getDataPortType()); assertEquals("default verbose", false, o.isVerbose()); assertEquals("default pedantic", false, o.isPedantic()); assertEquals("default norandomize", false, o.isNoRandomize()); assertEquals("default oldstyle", false, o.isOldRequestStyle()); assertEquals("default noEcho", false, o.isNoEcho()); assertEquals("default UTF8 Support", false, o.supportUTF8Subjects()); assertNull("default username", o.getUsername()); assertNull("default password", o.getPassword()); assertNull("default token", o.getToken()); assertNull("default connection name", o.getConnectionName()); assertNull("default ssl context", o.getSslContext()); assertEquals("default max reconnect", Options.DEFAULT_MAX_RECONNECT, o.getMaxReconnect()); assertEquals("default ping max", Options.DEFAULT_MAX_PINGS_OUT, o.getMaxPingsOut()); assertEquals("default reconnect buffer size", Options.DEFAULT_RECONNECT_BUF_SIZE, o.getReconnectBufferSize()); assertEquals("default reconnect wait", Options.DEFAULT_RECONNECT_WAIT, o.getReconnectWait()); assertEquals("default connection timeout", Options.DEFAULT_CONNECTION_TIMEOUT, o.getConnectionTimeout()); assertEquals("default ping interval", Options.DEFAULT_PING_INTERVAL, o.getPingInterval()); assertEquals("default cleanup interval", Options.DEFAULT_REQUEST_CLEANUP_INTERVAL, o.getRequestCleanupInterval()); assertNull("error handler", o.getErrorListener()); assertNull("disconnect handler", o.getConnectionListener()); }