Repository: incubator-ignite
Updated Branches:
  refs/heads/ignite-1201 [created] 0a31799b4


IGNITE-1201 Refactoring: make agent testable


Project: http://git-wip-us.apache.org/repos/asf/incubator-ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ignite/commit/0a31799b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ignite/tree/0a31799b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ignite/diff/0a31799b

Branch: refs/heads/ignite-1201
Commit: 0a31799b4a55973dfb0288b40c8b5de35c241fb5
Parents: ed47b34
Author: sevdokimov <sevdoki...@gridgain.com>
Authored: Wed Aug 5 16:33:32 2015 +0300
Committer: sevdokimov <sevdoki...@gridgain.com>
Committed: Wed Aug 5 16:33:32 2015 +0300

----------------------------------------------------------------------
 .../apache/ignite/agent/AgentConfiguration.java | 18 +++++
 .../org/apache/ignite/agent/AgentLauncher.java  | 83 +++++++++++---------
 .../org/apache/ignite/agent/AgentSocket.java    | 15 ++--
 .../ignite/agent/handlers/RestExecutor.java     | 10 +--
 .../ignite/agent/remote/RemoteHandler.java      |  4 +-
 5 files changed, 79 insertions(+), 51 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0a31799b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
index 48b9d2d..33725be 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentConfiguration.java
@@ -18,6 +18,7 @@
 package org.apache.ignite.agent;
 
 import com.beust.jcommander.*;
+import org.eclipse.jetty.util.ssl.*;
 
 import java.io.*;
 import java.net.*;
@@ -56,6 +57,9 @@ public class AgentConfiguration {
     @Parameter(names = { "-h", "--help" }, description = "Print this help 
message")
     private boolean help;
 
+    /** */
+    private SslContextFactory sslCtxFactory;
+
     /**
      * @return Login.
      */
@@ -200,4 +204,18 @@ public class AgentConfiguration {
     public boolean help() {
         return help;
     }
+
+    /**
+     * @return SSL context factory.
+     */
+    public synchronized SslContextFactory sslContextFactory() {
+        if (sslCtxFactory == null) {
+            sslCtxFactory = new SslContextFactory();
+
+            if (Boolean.TRUE.equals(Boolean.getBoolean("trust.all")))
+                sslCtxFactory.setTrustAll(true);
+        }
+
+        return sslCtxFactory;
+    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0a31799b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
index 35223de..2b43a79 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentLauncher.java
@@ -19,7 +19,6 @@ package org.apache.ignite.agent;
 
 import com.beust.jcommander.*;
 import org.apache.ignite.agent.handlers.*;
-import org.eclipse.jetty.util.ssl.*;
 import org.eclipse.jetty.websocket.client.*;
 
 import java.io.*;
@@ -41,6 +40,51 @@ public class AgentLauncher {
     /** */
     private static final int RECONNECT_INTERVAL = 3000;
 
+    /** */
+    private final AgentConfiguration cfg;
+
+    /**
+     * @param cfg Config.
+     */
+    public AgentLauncher(AgentConfiguration cfg) {
+        this.cfg = cfg;
+    }
+
+    /**
+     *
+     */
+    public void run() throws Exception {
+        RestExecutor restExecutor = new RestExecutor(cfg);
+
+        try {
+            WebSocketClient client = new 
WebSocketClient(cfg.sslContextFactory());
+
+            client.setMaxIdleTimeout(Long.MAX_VALUE);
+
+            client.start();
+
+            try {
+                while (!Thread.interrupted()) {
+                    AgentSocket agentSock = new AgentSocket(cfg, restExecutor, 
new DatabaseMetadataExtractor(cfg));
+
+                    log.log(Level.INFO, "Connecting to: " + 
cfg.getServerUri());
+
+                    client.connect(agentSock, URI.create(cfg.getServerUri()));
+
+                    agentSock.waitForClose();
+
+                    Thread.sleep(RECONNECT_INTERVAL);
+                }
+            }
+            finally {
+                client.stop();
+            }
+        }
+        finally {
+            restExecutor.stop();
+        }
+    }
+
     /**
      * @param args Args.
      */
@@ -76,41 +120,8 @@ public class AgentLauncher {
             cfg.setPassword(new String(System.console().readPassword()));
         }
 
-        RestExecutor restExecutor = new RestExecutor(cfg);
-
-        restExecutor.start();
-
-        try {
-            SslContextFactory sslCtxFactory = new SslContextFactory();
-
-            if (Boolean.TRUE.equals(Boolean.getBoolean("trust.all")))
-                sslCtxFactory.setTrustAll(true);
-
-            WebSocketClient client = new WebSocketClient(sslCtxFactory);
-
-            client.setMaxIdleTimeout(Long.MAX_VALUE);
-
-            client.start();
-
-            try {
-                while (!Thread.interrupted()) {
-                    AgentSocket agentSock = new AgentSocket(cfg, restExecutor);
+        AgentLauncher agentLauncher = new AgentLauncher(cfg);
 
-                    log.log(Level.INFO, "Connecting to: " + 
cfg.getServerUri());
-
-                    client.connect(agentSock, URI.create(cfg.getServerUri()));
-
-                    agentSock.waitForClose();
-
-                    Thread.sleep(RECONNECT_INTERVAL);
-                }
-            }
-            finally {
-                client.stop();
-            }
-        }
-        finally {
-            restExecutor.stop();
-        }
+        agentLauncher.run();
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0a31799b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
index bab149f..a1f23f2 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/AgentSocket.java
@@ -18,13 +18,13 @@
 package org.apache.ignite.agent;
 
 import com.google.gson.*;
-import org.apache.ignite.agent.handlers.*;
 import org.apache.ignite.agent.remote.*;
 import org.eclipse.jetty.websocket.api.*;
 import org.eclipse.jetty.websocket.api.annotations.*;
 
 import java.io.*;
 import java.net.*;
+import java.util.*;
 import java.util.concurrent.*;
 import java.util.logging.*;
 
@@ -49,7 +49,7 @@ public class AgentSocket implements WebSocketSender {
     private final AgentConfiguration cfg;
 
     /** */
-    private final RestExecutor restExecutor;
+    private final Object[] rmtCallHandlers;
 
     /** */
     private RemoteHandler remote;
@@ -60,9 +60,9 @@ public class AgentSocket implements WebSocketSender {
     /**
      * @param cfg Config.
      */
-    public AgentSocket(AgentConfiguration cfg, RestExecutor restExecutor) {
+    public AgentSocket(AgentConfiguration cfg, Object ... rmtCallHandlers) {
         this.cfg = cfg;
-        this.restExecutor = restExecutor;
+        this.rmtCallHandlers = rmtCallHandlers;
     }
 
     /**
@@ -88,7 +88,12 @@ public class AgentSocket implements WebSocketSender {
 
         this.ses = ses;
 
-        remote = RemoteHandler.wrap(this, this, restExecutor, new 
DatabaseMetadataExtractor(cfg));
+        Collection<Object> hnds = new ArrayList<>();
+
+        hnds.addAll(Arrays.asList(rmtCallHandlers));
+        hnds.add(this);
+
+        remote = RemoteHandler.wrap(this, hnds);
 
         JsonObject authMsg = new JsonObject();
 

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0a31799b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
index 6531ad9..ea3b111 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/handlers/RestExecutor.java
@@ -44,19 +44,14 @@ public class RestExecutor {
     private final AgentConfiguration cfg;
 
     /** */
-    private CloseableHttpClient httpClient;
+    private final CloseableHttpClient httpClient;
 
     /**
      * @param cfg Config.
      */
     public RestExecutor(AgentConfiguration cfg) {
         this.cfg = cfg;
-    }
 
-    /**
-     *
-     */
-    public void start() {
         httpClient = HttpClientBuilder.create().build();
     }
 
@@ -64,8 +59,7 @@ public class RestExecutor {
      *
      */
     public void stop() throws IOException {
-        if (httpClient != null)
-            httpClient.close();
+        httpClient.close();
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/incubator-ignite/blob/0a31799b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/remote/RemoteHandler.java
----------------------------------------------------------------------
diff --git 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/remote/RemoteHandler.java
 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/remote/RemoteHandler.java
index 8199ff5..4b1527e 100644
--- 
a/modules/control-center-agent/src/main/java/org/apache/ignite/agent/remote/RemoteHandler.java
+++ 
b/modules/control-center-agent/src/main/java/org/apache/ignite/agent/remote/RemoteHandler.java
@@ -53,7 +53,7 @@ public class RemoteHandler implements AutoCloseable {
      * @param snd Session.
      * @param hnds Handlers.
      */
-    private RemoteHandler(WebSocketSender snd, Object ... hnds) {
+    private RemoteHandler(WebSocketSender snd, Collection<Object> hnds) {
         this.snd = snd;
 
         for (Object hnd : hnds) {
@@ -202,7 +202,7 @@ public class RemoteHandler implements AutoCloseable {
      * @param hnds Handler.
      * @param snd Sender.
      */
-    public static RemoteHandler wrap(WebSocketSender snd, Object ... hnds) {
+    public static RemoteHandler wrap(WebSocketSender snd, Collection<Object> 
hnds) {
         return new RemoteHandler(snd, hnds);
     }
 

Reply via email to