Author: jawi
Date: Thu Jan 28 14:16:09 2016
New Revision: 1727361

URL: http://svn.apache.org/viewvc?rev=1727361&view=rev
Log:
ACE-520 - do not blacklist servers when there is only one:

- only blacklist servers if there more than one server is supplied.


Modified:
    
ace/trunk/org.apache.ace.agent/src/org/apache/ace/agent/impl/DiscoveryHandlerImpl.java
    
ace/trunk/org.apache.ace.agent/test/org/apache/ace/agent/impl/DiscoveryHandlerImplTest.java

Modified: 
ace/trunk/org.apache.ace.agent/src/org/apache/ace/agent/impl/DiscoveryHandlerImpl.java
URL: 
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.agent/src/org/apache/ace/agent/impl/DiscoveryHandlerImpl.java?rev=1727361&r1=1727360&r2=1727361&view=diff
==============================================================================
--- 
ace/trunk/org.apache.ace.agent/src/org/apache/ace/agent/impl/DiscoveryHandlerImpl.java
 (original)
+++ 
ace/trunk/org.apache.ace.agent/src/org/apache/ace/agent/impl/DiscoveryHandlerImpl.java
 Thu Jan 28 14:16:09 2016
@@ -100,13 +100,17 @@ public class DiscoveryHandlerImpl extend
     DiscoveryHandlerImpl(String[] serverURLs, boolean checkServerURLs) {
         super("discovery");
         m_defaultServerURLs = m_serverURLs = Arrays.asList(serverURLs);
-        m_defaultCheckURLs = m_checkURLs = checkServerURLs;
+        // ACE-520 - checking URLs only makes sense if there is more than one 
URL available...
+        m_defaultCheckURLs = m_checkURLs = checkServerURLs && 
m_defaultServerURLs.size() > 1;
     }
 
     @Override
     protected void onInit() throws Exception {
         String urls = 
getConfigurationHandler().get(CONFIG_DISCOVERY_SERVERURLS, 
mergeUrls(m_defaultServerURLs));
+        boolean checkServerURLs = 
getConfigurationHandler().getBoolean(CONFIG_DISCOVERY_CHECKING, 
DEFAULT_CHECK_SERVER_URLS);
         m_defaultServerURLs = m_serverURLs = splitUrls(urls);
+        // ACE-520 - checking URLs only makes sense if there is more than one 
URL available...
+        m_defaultCheckURLs = m_checkURLs = checkServerURLs && 
m_defaultServerURLs.size() > 1;
         getEventsHandler().addListener(this);
     }
 
@@ -139,6 +143,8 @@ public class DiscoveryHandlerImpl extend
         else {
             checkURLs = m_defaultCheckURLs;
         }
+        // ACE-520 - checking URLs only makes sense if there is more than one 
URL available...
+        checkURLs &= serverURLs.size() > 1;
 
         List<String> oldServerURLs = m_serverURLs;
         boolean oldCheckURLs = m_checkURLs;

Modified: 
ace/trunk/org.apache.ace.agent/test/org/apache/ace/agent/impl/DiscoveryHandlerImplTest.java
URL: 
http://svn.apache.org/viewvc/ace/trunk/org.apache.ace.agent/test/org/apache/ace/agent/impl/DiscoveryHandlerImplTest.java?rev=1727361&r1=1727360&r2=1727361&view=diff
==============================================================================
--- 
ace/trunk/org.apache.ace.agent/test/org/apache/ace/agent/impl/DiscoveryHandlerImplTest.java
 (original)
+++ 
ace/trunk/org.apache.ace.agent/test/org/apache/ace/agent/impl/DiscoveryHandlerImplTest.java
 Thu Jan 28 14:16:09 2016
@@ -45,8 +45,10 @@ public class DiscoveryHandlerImplTest ex
     private static final int PORT = 8882;
 
     private TestWebServer m_webServer;
-    private URL m_availableURL;
-    private URL m_unavailableURL;
+    private URL m_availableURL1;
+    private URL m_availableURL2;
+    private URL m_unavailableURL1;
+    private URL m_unavailableURL2;
 
     private AgentContext m_agentContext;
     private AgentContextImpl m_agentContextImpl;
@@ -55,15 +57,17 @@ public class DiscoveryHandlerImplTest ex
     public void setUpOnceAgain() throws Exception {
         m_webServer = new TestWebServer(PORT, "/", "generated");
         m_webServer.start();
-        m_availableURL = new URL("http://localhost:"; + PORT);
-        m_unavailableURL = new URL("http://localhost:9999";);
+        m_availableURL1 = new URL("http://localhost:"; + PORT);
+        m_availableURL2 = new URL("http://127.0.0.1:"; + PORT);
+        m_unavailableURL1 = new URL("http://localhost:19999";);
+        m_unavailableURL2 = new URL("http://127.0.0.1:19999";);
 
         BundleContext bc = mockBundleContext();
 
         m_agentContextImpl = mockAgentContext();
         m_agentContext = m_agentContextImpl;
         // Make sure the default server URL is not reachable, as used for this 
test...
-        m_agentContextImpl.setHandler(DiscoveryHandler.class, new 
DiscoveryHandlerImpl("http://localhost:9999";, true));
+        m_agentContextImpl.setHandler(DiscoveryHandler.class, new 
DiscoveryHandlerImpl(m_unavailableURL1.toExternalForm(), true));
         m_agentContextImpl.setHandler(EventsHandler.class, new 
EventsHandlerImpl(bc));
         m_agentContextImpl.setHandler(ConfigurationHandler.class, new 
ConfigurationHandlerImpl(bc));
         m_agentContextImpl.setHandler(ConnectionHandler.class, new 
ConnectionHandlerImpl());
@@ -80,21 +84,36 @@ public class DiscoveryHandlerImplTest ex
         clearTestMocks();
     }
 
+    private String concat(URL... urls) {
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < urls.length; i++) {
+            if (i > 0) {
+                sb.append(",");
+            }
+            sb.append(urls[i].toExternalForm());
+        }
+        return sb.toString();
+    }
+    
     @Test
     public void testAvailableURL() throws Exception {
         ConfigurationHandler configurationHandler = 
m_agentContext.getHandler(ConfigurationHandler.class);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, m_availableURL.toExternalForm(), 
AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, 
concat(m_availableURL1, m_availableURL2), 
+            AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
 
         DiscoveryHandler discoveryHandler = 
m_agentContext.getHandler(DiscoveryHandler.class);
-        assertEquals(discoveryHandler.getServerUrl(), m_availableURL);
+        assertEquals(discoveryHandler.getServerUrl(), m_availableURL1);
     }
 
     @Test
     public void testUnavailableURL_unavailable() throws Exception {
         ConfigurationHandler configurationHandler = 
m_agentContext.getHandler(ConfigurationHandler.class);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, m_unavailableURL.toExternalForm(), 
AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, 
concat(m_unavailableURL1, m_unavailableURL2), 
+            AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
 
         DiscoveryHandler discoveryHandler = 
m_agentContext.getHandler(DiscoveryHandler.class);
         assertNull(discoveryHandler.getServerUrl());
@@ -104,12 +123,15 @@ public class DiscoveryHandlerImplTest ex
     public void testUnavailableAfterConfigUpdate() throws Exception {
         ConfigurationHandler configurationHandler = 
m_agentContext.getHandler(ConfigurationHandler.class);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, m_availableURL.toExternalForm(), 
AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, 
concat(m_availableURL1, m_availableURL2), 
+            AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
 
         DiscoveryHandler discoveryHandler = 
m_agentContext.getHandler(DiscoveryHandler.class);
-        assertEquals(discoveryHandler.getServerUrl(), m_availableURL);
+        assertEquals(discoveryHandler.getServerUrl(), m_availableURL1);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, m_unavailableURL.toExternalForm());
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, 
concat(m_unavailableURL1, m_unavailableURL2));
 
         assertNull(discoveryHandler.getServerUrl());
     }
@@ -118,44 +140,53 @@ public class DiscoveryHandlerImplTest ex
     public void testAvailableAfterConfigUpdate() throws Exception {
         ConfigurationHandler configurationHandler = 
m_agentContext.getHandler(ConfigurationHandler.class);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, m_unavailableURL.toExternalForm(), 
AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, 
concat(m_unavailableURL1, m_unavailableURL2), 
+            AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
 
         DiscoveryHandler discoveryHandler = 
m_agentContext.getHandler(DiscoveryHandler.class);
         assertNull(discoveryHandler.getServerUrl());
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, m_availableURL.toExternalForm());
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, 
concat(m_availableURL1));
 
-        assertEquals(discoveryHandler.getServerUrl(), m_availableURL);
+        assertEquals(discoveryHandler.getServerUrl(), m_availableURL1);
     }
 
     @Test
     public void testAvailableAfterUnavailableURL() throws Exception {
         ConfigurationHandler configurationHandler = 
m_agentContext.getHandler(ConfigurationHandler.class);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, m_unavailableURL.toExternalForm() + 
"," + m_availableURL.toExternalForm(), 
AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, 
concat(m_unavailableURL1, m_availableURL1), 
+            AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
 
         DiscoveryHandler discoveryHandler = 
m_agentContext.getHandler(DiscoveryHandler.class);
-        assertEquals(discoveryHandler.getServerUrl(), m_availableURL);
+        assertEquals(discoveryHandler.getServerUrl(), m_availableURL1);
     }
 
     @Test
     public void testEmptyURLConfig() throws Exception {
         ConfigurationHandler configurationHandler = 
m_agentContext.getHandler(ConfigurationHandler.class);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, "", 
AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, "", 
+            AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
 
         DiscoveryHandler discoveryHandler = 
m_agentContext.getHandler(DiscoveryHandler.class);
-        assertNull(discoveryHandler.getServerUrl());
+        assertEquals(discoveryHandler.getServerUrl(), m_unavailableURL1);
     }
 
     @Test
     public void testBadURLConfig() throws Exception {
         ConfigurationHandler configurationHandler = 
m_agentContext.getHandler(ConfigurationHandler.class);
 
-        configureAgent(configurationHandler, 
AgentConstants.CONFIG_DISCOVERY_SERVERURLS, "invalidURL", 
AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
+        configureAgent(configurationHandler, 
+            AgentConstants.CONFIG_DISCOVERY_SERVERURLS, "invalidURL",
+            AgentConstants.CONFIG_DISCOVERY_CHECKING, "true");
 
         DiscoveryHandler discoveryHandler = 
m_agentContext.getHandler(DiscoveryHandler.class);
-        assertNull(discoveryHandler.getServerUrl());
+        assertNull(discoveryHandler.getServerUrl()); // we cannot resolve this 
during the configuration change...
     }
     
     @Test


Reply via email to