Author: bdekruijff at gmail.com
Date: Fri Dec 31 17:15:19 2010
New Revision: 554

Log:
[sandbox] updated to match fabric refactor

Added:
   
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/shell/FabricManagerCommand.java
Modified:
   
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/internal/RemotableServiceImpl.java
   
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/osgi/Activator.java
   
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/service/FabricTestServiceImpl.java
   
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/shell/FabricTestCommand.java

Modified: 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/internal/RemotableServiceImpl.java
==============================================================================
--- 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/internal/RemotableServiceImpl.java
   (original)
+++ 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/internal/RemotableServiceImpl.java
   Fri Dec 31 17:15:19 2010
@@ -21,6 +21,9 @@
 
 public class RemotableServiceImpl implements RemotableService, 
NonRemotableService {
 
+    public void start() {
+    }
+
     public String hello(String name) {
         System.err.println("Saying hi to " + name);
         return "Hi " + name;

Modified: 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/osgi/Activator.java
==============================================================================
--- 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/osgi/Activator.java
  (original)
+++ 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/osgi/Activator.java
  Fri Dec 31 17:15:19 2010
@@ -17,9 +17,11 @@
  */
 package org.amdatu.core.fabrictest.osgi;
 
+import org.amdatu.core.fabric.FabricManagerService;
 import org.amdatu.core.fabrictest.FabricTestService;
 import org.amdatu.core.fabrictest.RemotableService;
 import org.amdatu.core.fabrictest.service.FabricTestServiceImpl;
+import org.amdatu.core.fabrictest.shell.FabricManagerCommand;
 import org.amdatu.core.fabrictest.shell.FabricTestCommand;
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
@@ -36,10 +38,21 @@
             createComponent()
                 .setImplementation(new FabricTestServiceImpl())
                 .setInterface(FabricTestService.class.getName(), null)
+                
.add(createServiceDependency().setService(FabricManagerService.class).setRequired(false))
                 
.add(createServiceDependency().setService(LogService.class).setRequired(false)));
 
         manager.add(
             createComponent()
+                .setImplementation(new FabricManagerCommand())
+                .setInterface(Command.class.getName(), null)
+                .add(
+                    
createServiceDependency().setService(FabricManagerService.class).setRequired(false))
+                .add(
+                    
createServiceDependency().setService(LogService.class).setRequired(false)
+                        ));
+        
+        manager.add(
+            createComponent()
                 .setImplementation(new FabricTestCommand())
                 .setInterface(Command.class.getName(), null)
                 .add(

Modified: 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/service/FabricTestServiceImpl.java
==============================================================================
--- 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/service/FabricTestServiceImpl.java
   (original)
+++ 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/service/FabricTestServiceImpl.java
   Fri Dec 31 17:15:19 2010
@@ -32,6 +32,7 @@
 public class FabricTestServiceImpl implements FabricTestService {
 
     private final Map<String, Component> m_serviceComponents = new 
HashMap<String, Component>();
+
     private volatile DependencyManager m_dependencyManager;
 
     public void stop() {
@@ -57,7 +58,10 @@
                 .createComponent()
                 .setInterface(new String[] { RemotableService.class.getName(), 
NonRemotableService.class.getName() },
                     props).setImplementation(new RemotableServiceImpl());
-        
+
+        serviceComponent = 
serviceComponent.add(m_dependencyManager.createServiceDependency()
+            .setService(DistributionService.class).setRequired(true));
+
         m_dependencyManager.add(serviceComponent);
         m_serviceComponents.put("c1", serviceComponent);
     }

Added: 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/shell/FabricManagerCommand.java
==============================================================================
--- (empty file)
+++ 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/shell/FabricManagerCommand.java
      Fri Dec 31 17:15:19 2010
@@ -0,0 +1,342 @@
+/*
+    Copyright (C) 2010 Amdatu.org
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package org.amdatu.core.fabrictest.shell;
+
+import java.io.PrintStream;
+import java.util.Dictionary;
+import java.util.Hashtable;
+import java.util.StringTokenizer;
+
+import org.amdatu.core.fabric.FabricManagerService;
+import org.amdatu.core.fabric.cluster.ClusterMemberService;
+import 
org.amdatu.core.fabric.cluster.service.tribes.TribesClusterMemberServiceImpl;
+import org.apache.felix.shell.Command;
+
+public final class FabricManagerCommand implements Command {
+
+    private volatile FabricManagerService m_fabricManagerService;
+
+    public String getName() {
+        return "fman";
+    }
+
+    public String getShortDescription() {
+        return "Fabric Manager command";
+    }
+
+    public String getUsage() {
+        return "Usage: fman <create|remove> 
<cluster|servicegroup|discovery|distribution|fabric> [...]\n";
+    }
+
+    public void execute(String s, PrintStream out, PrintStream err) {
+
+        if (m_fabricManagerService == null) {
+            out.println("FabricManagerService unavailable");
+            return;
+        }
+
+        StringTokenizer st = new StringTokenizer(s, " ");
+        st.nextToken(); // ignore command itself
+        if (st.countTokens() == 0) {
+            out.print(getUsage());
+            return;
+        }
+
+        String command = st.nextToken();
+        if (command.equals("create")) {
+            executeCreateCommand(rejoinRemainingTokens(st), out, err);
+            return;
+        }
+        if (command.equals("remove")) {
+            executeRemoveCommand(rejoinRemainingTokens(st), out, err);
+            return;
+        }
+        out.print(getUsage());
+    }
+
+    private void executeCreateCommand(String s, PrintStream out, PrintStream 
err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() < 1) {
+            out.print("fman create <cluster|discovery|distribution> [...]\n");
+            return;
+        }
+
+        String command = st.nextToken();
+        if (command.equals("cluster")) {
+            executeClusterMemberCreateCommand(rejoinRemainingTokens(st), out, 
err);
+            return;
+        }
+        if (command.equals("discovery")) {
+            executeDiscoveryCreateCommand(rejoinRemainingTokens(st), out, err);
+            return;
+        }
+        if (command.equals("distribution")) {
+            executeDistributionCreateCommand(rejoinRemainingTokens(st), out, 
err);
+            return;
+        }
+        if (command.equals("fabric")) {
+            executeFabricCreateCommand(rejoinRemainingTokens(st), out, err);
+            return;
+        }
+        if (command.equals("servicegroup")) {
+            executeServiceGroupCreateCommand(rejoinRemainingTokens(st), out, 
err);
+            return;
+        }
+        out.print("fman create <cluster|discovery|distribution> [...]\n");
+        return;
+    }
+
+    private void executeRemoveCommand(String s, PrintStream out, PrintStream 
err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() < 2) {
+            out.print("fman remove <cluster|discovery|distribution> 
<fabricId>\n");
+            return;
+        }
+
+        String command = st.nextToken();
+        if (command.equals("cluster")) {
+            executeClusterMemberRemoveCommand(rejoinRemainingTokens(st), out, 
err);
+            return;
+        }
+        if (command.equals("discovery")) {
+            executeDiscoveryRemoveCommand(rejoinRemainingTokens(st), out, err);
+            return;
+        }
+        if (command.equals("distribution")) {
+            executeDistributionRemoveCommand(rejoinRemainingTokens(st), out, 
err);
+            return;
+        }
+        if (command.equals("fabric")) {
+            executeFabricRemoveCommand(rejoinRemainingTokens(st), out, err);
+            return;
+        }
+        if (command.equals("servicegroup")) {
+            executeServiceGroupRemoveCommand(rejoinRemainingTokens(st), out, 
err);
+            return;
+        }
+        out.print("fman remove <cluster|discovery|distribution>\n");
+        return;
+    }
+
+    private void executeClusterMemberCreateCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() < 1) {
+            out.print("fman create cluster <clusterGroup> <clusterMember> 
[options]\n");
+            return;
+        }
+        String clusterGroupId = st.nextToken();
+        String clusterMemberId = st.nextToken();
+
+        int argc = st.countTokens();
+        String[] args = new String[argc];
+        int index = 0;
+        while (st.hasMoreTokens()) {
+            args[index++] = st.nextToken();
+        }
+
+        Dictionary<String, Object> props = new Hashtable<String, Object>();
+        props.put(ClusterMemberService.CLUSTER_CLUSTERGROUP_PROP, 
clusterGroupId);
+        props.put(ClusterMemberService.CLUSTER_CLUSTERMEMBER_PROP, 
clusterMemberId);
+        props.put(TribesClusterMemberServiceImpl.CLUSTER_TRIBES_ARGS_PROP, 
args);
+        if (m_fabricManagerService.createClusterMember(clusterGroupId, 
clusterMemberId, props)) {
+            out.println("New cluster created: " + clusterGroupId + "/" + 
clusterMemberId);
+            return;
+        }
+        out.println("Failed to create cluster: " + clusterGroupId + "/" + 
clusterMemberId);
+    }
+
+    private void executeClusterMemberRemoveCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 1) {
+            out.print("fman remove cluster <clusterGroup> <clusterMember>\n");
+        }
+        String clusterGroupId = st.nextToken();
+        String clusterMemberId = st.nextToken();
+
+        if (m_fabricManagerService.removeClusterMember(clusterGroupId, 
clusterMemberId)) {
+            out.println("Cluster removed: " + clusterGroupId + "/" + 
clusterMemberId);
+            return;
+        }
+        out.println("Failed to remove cluster: " + clusterGroupId + "/" + 
clusterMemberId);
+
+    }
+
+    private void executeFabricCreateCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() < 3) {
+            out.print("fman create fabric <clusterGroup> <clusterMember> 
<serviceGroup> [options]\n");
+            return;
+        }
+        String clusterGroupId = st.nextToken();
+        String clusterMemberId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        int argc = st.countTokens();
+        String[] args = new String[argc];
+        int index = 0;
+        while (st.hasMoreTokens()) {
+            args[index++] = st.nextToken();
+        }
+
+        Dictionary<String, Object> props = new Hashtable<String, Object>();
+        props.put(ClusterMemberService.CLUSTER_CLUSTERGROUP_PROP, 
clusterGroupId);
+        props.put(ClusterMemberService.CLUSTER_CLUSTERMEMBER_PROP, 
clusterMemberId);
+        props.put(TribesClusterMemberServiceImpl.CLUSTER_TRIBES_ARGS_PROP, 
args);
+        if (m_fabricManagerService.createClusterMember(clusterGroupId, 
clusterMemberId, props)
+                        && 
m_fabricManagerService.createDistribution(clusterGroupId, serviceGroupId)
+                        && 
m_fabricManagerService.createDiscovery(clusterGroupId, serviceGroupId)) {
+            out.println("New fabric created: " + clusterGroupId + "/" + 
clusterMemberId + "/" + serviceGroupId);
+            return;
+        }
+        m_fabricManagerService.removeDiscovery(clusterGroupId, serviceGroupId);
+        m_fabricManagerService.removeDistribution(clusterGroupId, 
serviceGroupId);
+        m_fabricManagerService.removeClusterMember(clusterGroupId, 
clusterMemberId);
+        out.println("Failed to create fabric: " + clusterGroupId + "/" + 
clusterMemberId + "/" + serviceGroupId);
+    }
+
+    private void executeFabricRemoveCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 3) {
+            out.print("fman remove fabric <clusterGroup> <clusterMember> 
<serviceGroup>\n");
+            return;
+        }
+        String clusterGroupId = st.nextToken();
+        String clusterMemberId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        if (m_fabricManagerService.removeDiscovery(clusterGroupId, 
serviceGroupId)
+                        && 
m_fabricManagerService.removeDistribution(clusterGroupId, serviceGroupId)
+                        && 
m_fabricManagerService.removeClusterMember(clusterGroupId, clusterMemberId)) {
+            out.println("Fabric removed: " + clusterGroupId + "/" + 
clusterMemberId + "/" + serviceGroupId);
+            return;
+        }
+        m_fabricManagerService.removeDiscovery(clusterGroupId, serviceGroupId);
+        m_fabricManagerService.removeDistribution(clusterGroupId, 
serviceGroupId);
+        m_fabricManagerService.removeClusterMember(clusterGroupId, 
clusterMemberId);
+    }
+
+    private void executeServiceGroupCreateCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 2) {
+            out.print("fman create servicegroup <clusterGroup> 
<serviceGroup>\n");
+            return;
+        }
+        String clusterGroupId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        if (m_fabricManagerService.createDistribution(clusterGroupId, 
serviceGroupId)
+                        && 
m_fabricManagerService.createDiscovery(clusterGroupId, serviceGroupId)) {
+            out.println("Servicegroup created: " + clusterGroupId + "/" + 
serviceGroupId);
+            return;
+        }
+        m_fabricManagerService.removeDiscovery(clusterGroupId, serviceGroupId);
+        m_fabricManagerService.removeDistribution(clusterGroupId, 
serviceGroupId);
+        out.println("Failed to create servicegroup: " + clusterGroupId + "/" + 
serviceGroupId);
+    }
+
+    private void executeServiceGroupRemoveCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 2) {
+            out.print("fman remove servicegroup <clusterGroup> 
<serviceGroup>\n");
+            return;
+        }
+        String clusterGroupId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        if (m_fabricManagerService.removeDiscovery(clusterGroupId, 
serviceGroupId)
+                        && 
m_fabricManagerService.removeDistribution(clusterGroupId, serviceGroupId)) {
+            out.println("Servicegroup removed: " + clusterGroupId + "/" + 
serviceGroupId);
+            return;
+        }
+        m_fabricManagerService.removeDiscovery(clusterGroupId, serviceGroupId);
+        m_fabricManagerService.removeDistribution(clusterGroupId, 
serviceGroupId);
+    }
+
+    private void executeDiscoveryCreateCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 2) {
+            out.print("fman create discovery <clusterGroup> <serviceGroup>");
+            return;
+        }
+        String clusterGroupId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        if (m_fabricManagerService.createDiscovery(clusterGroupId, 
serviceGroupId)) {
+            out.println("New discovery created: " + clusterGroupId + "/" + 
serviceGroupId);
+            return;
+        }
+        out.println("Failed to create discovery: " + clusterGroupId + "/" + 
serviceGroupId);
+    }
+
+    private void executeDiscoveryRemoveCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 3) {
+            out.print("fman remove discovery <clusterGroup> <serviceGroup>");
+        }
+        String clusterGroupId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        if (m_fabricManagerService.removeDiscovery(clusterGroupId, 
serviceGroupId)) {
+            out.println("Discovery removed: " + clusterGroupId + "/" + 
serviceGroupId);
+            return;
+        }
+        out.println("Failed to remove discovery: " + clusterGroupId + "/" + 
serviceGroupId);
+
+    }
+
+    private void executeDistributionCreateCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 3) {
+            out.print("fman create distribution <clusterGroup> 
<serviceGroup>");
+            return;
+        }
+        String clusterGroupId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        if (m_fabricManagerService.createDistribution(clusterGroupId, 
serviceGroupId)) {
+            out.println("New distribution created: " + clusterGroupId + "/" + 
serviceGroupId);
+            return;
+        }
+        out.println("Failed to create distribution: " + clusterGroupId + "/" + 
serviceGroupId);
+    }
+
+    private void executeDistributionRemoveCommand(String s, PrintStream out, 
PrintStream err) {
+        StringTokenizer st = new StringTokenizer(s, " ");
+        if (st.countTokens() != 3) {
+            out.print("fman remove distribution <clusterGroup> 
<serviceGroup>");
+        }
+        String clusterGroupId = st.nextToken();
+        String serviceGroupId = st.nextToken();
+
+        if (m_fabricManagerService.removeDiscovery(clusterGroupId, 
serviceGroupId)) {
+            out.println("Distribution removed: " + clusterGroupId + "/" + 
serviceGroupId);
+            return;
+        }
+        out.println("Failed to remove distribution: " + clusterGroupId + "/" + 
serviceGroupId);
+    }
+
+    private static String rejoinRemainingTokens(StringTokenizer st) {
+        StringBuilder sb = new StringBuilder();
+        while (st.hasMoreTokens()) {
+            sb.append(st.nextToken());
+            if (st.hasMoreTokens()) {
+                sb.append(" ");
+            }
+        }
+        return sb.toString();
+    }
+}

Modified: 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/shell/FabricTestCommand.java
==============================================================================
--- 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/shell/FabricTestCommand.java
 (original)
+++ 
sandbox/bdekruijff/fabrictest/src/main/java/org/amdatu/core/fabrictest/shell/FabricTestCommand.java
 Fri Dec 31 17:15:19 2010
@@ -22,10 +22,8 @@
 import java.util.Random;
 import java.util.StringTokenizer;
 import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 import org.amdatu.core.fabrictest.FabricTestService;
@@ -77,8 +75,6 @@
 
     public void execute(String s, PrintStream out, PrintStream err) {
 
-        String serviceName = FabricTestService.class.getName();
-
         StringTokenizer st = new StringTokenizer(s, " ");
         st.nextToken(); // ignore command itself
 
@@ -104,14 +100,13 @@
 
             Random r = new Random();
             String[] names = new String[] { "Bram", "Ivo", "Mark", "Marcel", 
"Angelo", "Martijn", "Hans" };
-            for (int i = 0; i < 1000; i++) {
+            for (int i = 0; i < 100; i++) {
                 for (String name : names) {
                     m_remotableServicesLock.readLock().lock();
                     try {
                         if (m_remotableServices.size() > 0) {
                             int q = r.nextInt(m_remotableServices.size());
-                            String anwser = 
m_remotableServices.get(q).hello(name);
-                            out.println("got: " + anwser);
+                            m_remotableServices.get(q).hello(name);
                         }
                     }
                     finally {
@@ -131,7 +126,7 @@
             String[] names = new String[] { "Bram", "Ivo", "Mark", "Marcel", 
"Angelo", "Martijn", "Hans" };
             m_remotableServicesLock.readLock().lock();
             try {
-                for (int i = 0; i < 1000; i++) {
+                for (int i = 0; i < 100; i++) {
                     for (String name : names) {
                         if (m_remotableServices.size() > 0) {
                             int q = r.nextInt(m_remotableServices.size());
@@ -147,19 +142,10 @@
             ExecutorService exe = Executors.newFixedThreadPool(4);
             long startTime = System.currentTimeMillis();
             try {
-                List<Future<String>> helloFutures = 
exe.invokeAll(helloCallables);
+                exe.invokeAll(helloCallables);
                 exe.shutdown();
-
-                for (Future<String> helloFuture : helloFutures) {
-                    out.println("got: " + helloFuture.get());
-                }
             }
             catch (InterruptedException e) {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
-            }
-            catch (ExecutionException e) {
-                // TODO Auto-generated catch block
                 e.printStackTrace();
             }
             out.println("Benchmark 2: " + (System.currentTimeMillis() - 
startTime) + " ms");

Reply via email to