[jboss-svn-commits] JBL Code SVN: r33647 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-distributed-dir-rio and 21 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jun 25 14:29:56 EDT 2010


Author: salaboy21
Date: 2010-06-25 14:29:55 -0400 (Fri, 25 Jun 2010)
New Revision: 33647

Added:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/manager-config.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/start-monitor.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/test-config.groovy
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java
Removed:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DirectoryNodeServiceImpl.java
Modified:
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java
   labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml
Log:
adding drools-grid-distributed-directory-rio.


Property changes on: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio
___________________________________________________________________
Name: svn:ignore
   + target


Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/pom.xml	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>drools-grid</artifactId>
+        <groupId>org.drools</groupId>
+        <version>5.1.0.SNAPSHOT</version>
+    </parent>
+  
+    <artifactId>drools-grid-distributed-dir-rio</artifactId>
+    <name>Drools :: Grid :: Distributed Directory :: Rio</name>
+    <packaging>oar</packaging>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-api</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-distributed-api</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+        </dependency>
+
+     <!-- RIO Runtime -->
+        <dependency>
+            <groupId>org.rioproject</groupId>
+            <artifactId>rio</artifactId>
+            <version>4.1-SNAPSHOT</version>
+        </dependency>
+
+        <!-- RIO Test framework -->
+        <dependency>
+            <groupId>org.rioproject</groupId>
+            <artifactId>rio-test</artifactId>
+            <version>4.1-SNAPSHOT</version>
+            <scope>test</scope>
+        </dependency>
+
+        <!-- RIO Gnostic -->
+        <dependency>
+            <groupId>org.rioproject</groupId>
+            <artifactId>gnostic</artifactId>
+            <version>4.1-SNAPSHOT</version>
+
+        </dependency>
+
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.8.1</version>
+            <scope>test</scope>
+        </dependency>
+
+       
+
+    </dependencies>
+
+      <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-rio-plugin</artifactId>
+                <extensions>true</extensions>
+                <configuration>
+                    <opstring>src/main/resources/org/drools/directoryNodeService.groovy</opstring>
+                    <createJar>
+                        <classifier>dl</classifier>
+                        <ins>
+                            <in>org.drools.grid</in>
+                            <!--in>org.rioproject.gnostic</in-->
+                        </ins>
+                        <topclasses>
+                            <!--topclass>org.drools.grid.ExecutionNodeService</topclass-->
+                            <topclass>org.drools.grid.DirectoryNodeService</topclass>
+                            <topclass>org.drools.grid.distributed.RioNodeConnector</topclass>
+                            <topclass>org.drools.grid.distributed.util.IDEntry</topclass>
+                            <topclass>org.drools.grid.distributed.command.NewStatefulKnowledgeSessionGridCommand</topclass>
+                            <topclass>org.drools.impl.SystemEventListenerServiceImpl</topclass>
+                            <!--topclass>org.rioproject.gnostic.Gnostic</topclass-->
+                        </topclasses>
+                    </createJar>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <excludes>
+                        <exclude>**/*IT*.java</exclude>
+                    </excludes>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>failsafe-maven-plugin</artifactId>
+                <version>2.4.3-alpha-1</version>
+                <configuration>
+                    <forkMode>always</forkMode>
+                    <argLine>-DRIO_TEST_ATTACH</argLine>
+                    <systemProperties>
+
+                        <property>
+                            <name>opstring</name>
+                            <value>src/main/resources/org/drools/directoryNodeService.groovy</value>
+                        </property>
+                        <property>
+                            <name>org.rioproject.test.config</name>
+                            <value>src/test/conf/test-config.groovy</value>
+                        </property>
+
+                        <property>
+                            <name>org.rioproject.test.manager.config</name>
+                            <value>src/test/conf/manager-config.groovy</value>
+                        </property>
+                    </systemProperties>
+                </configuration>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>integration-test</goal>
+                            <goal>verify</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>

Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java (from rev 33642, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DirectoryNodeServiceImpl.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/java/org/drools/distributed/directory/impl/DirectoryNodeServiceImpl.java	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,168 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.drools.distributed.directory.impl;
+
+import java.rmi.RemoteException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+import org.drools.KnowledgeBase;
+import org.drools.command.KnowledgeContextResolveFromContextCommand;
+import org.drools.command.runtime.GetKnowledgeBaseCommand;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.ConnectorType;
+import org.drools.grid.GenericConnection;
+import org.drools.grid.internal.Message;
+import org.drools.grid.ExecutionNodeService;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GenericNodeConnector;
+
+
+/**
+ *
+ * @author salaboy
+ */
+public class DirectoryNodeServiceImpl implements DirectoryNodeService{
+
+    private String id;
+
+    private Map<String, String> directoryMap = new HashMap<String, String>();
+
+    private Map<String, String> kbaseDirectoryMap = new HashMap<String, String>();
+
+    private Iterable<ExecutionNodeService> executionNodes;
+
+    public DirectoryNodeServiceImpl() {
+        executionNodes = new ArrayList<ExecutionNodeService>();
+        this.id = "Distributed:Directory";
+    }
+
+    
+    @Override
+    public String getId() {
+        return id;
+    }
+    
+    
+    @Override
+    public void register(String sessionId, String nodeServiceId) throws ConnectorException, RemoteException  {
+        //System.out.println("Registering: "+  sessionId + " -- "+nodeServiceId);
+        directoryMap.put(sessionId, nodeServiceId);
+        for(ExecutionNodeService node : executionNodes){
+            if(node.getId().equals(nodeServiceId)){
+                node.incrementKsessionCounter();
+            }
+        }
+    }
+
+    
+    @Override
+    public GenericNodeConnector lookup(String sessionId) throws ConnectorException, RemoteException {
+        ExecutionNodeService nodeService = null;
+        String sessionServiceId = (String)directoryMap.get(sessionId);
+        //System.out.println("Registry = "+ directoryMap.toString());
+        //System.out.println("Nodes Services = "+nodeServices);
+        for(ExecutionNodeService ss : executionNodes){
+            //System.out.println("Session Service id = "+ss.getId() + "needs to match with ="+sessionServiceId);
+            if(ss.getId().equals(sessionServiceId)){
+                nodeService = ss;
+            }
+        }     
+
+        return nodeService;
+    }
+
+
+    public void setExecutionNodes(Iterable<ExecutionNodeService> executionNodes) {
+        this.executionNodes = executionNodes;
+    }
+
+    @Override
+    public void registerKBase(String kbaseId, String nodeServiceId) throws ConnectorException {
+        //System.out.println("Registering KnowledgeBase = "+kbaseId +" -in NS=" +nodeServiceId);
+        kbaseDirectoryMap.put(kbaseId, nodeServiceId);
+    }
+
+    @Override
+    public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException{
+        ExecutionNodeService executionNode = null;
+        String nodeServiceId = (String)kbaseDirectoryMap.get(kbaseId);
+        //System.out.println("Kbase Registry = "+ kbaseDirectoryMap.toString());
+        //System.out.println("Session Services = "+nodeService);
+        for(ExecutionNodeService ns : executionNodes){
+            //System.out.println("Node Service id = "+ns.getId() + "needs to match with ="+nodeServiceId);
+            if(ns.getId().equals(nodeServiceId)){
+                executionNode = ns;
+            }
+        }
+        //System.out.println("Node Service = "+nodeService);
+        
+        try {
+            //@TODO: This is a bad hack.. I need to improve this a lot
+            Message msg = executionNode.write(new Message(999,1000,false, new KnowledgeContextResolveFromContextCommand( new GetKnowledgeBaseCommand(), null, kbaseId, null, null)));
+            //System.out.println("MSG returned by nodeService = "+msg);
+            if (msg.getPayload() instanceof KnowledgeBase) {
+                //System.out.println("Kbase in the payload: "+(KnowledgeBase)msg.getPayload());
+                return (KnowledgeBase)msg.getPayload();
+            }
+            return null;
+        } catch ( Exception e ) {
+            throw new RuntimeException( "Unable to execute message",
+                                        e );
+        }
+    }
+
+   
+
+    @Override
+    public Map<String, String> getDirectoryMap()  throws ConnectorException{
+        return directoryMap;
+    }
+
+    @Override
+    public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public String lookupId(String resourceId) throws ConnectorException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void dispose() throws ConnectorException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void connect() throws ConnectorException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public void disconnect() throws ConnectorException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public DirectoryNodeService getDirectoryNodeService() throws ConnectorException {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public GenericConnection getConnection() {
+        throw new UnsupportedOperationException("Not supported yet.");
+    }
+
+    @Override
+    public ConnectorType getConnectorType() {
+        return ConnectorType.DISTRIBUTED;
+    }
+
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/main/resources/org/drools/directoryNodeService.groovy	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,80 @@
+import org.rioproject.config.Constants
+import java.util.logging.Level
+
+import org.rioproject.resources.servicecore.Service
+
+deployment(name:'executionNodeService',  debug: 'true') {
+
+    logging {
+        logger 'org.rioproject.resolver', Level.ALL
+        logger 'org.rioproject.associsations' , Level.ALL
+    }
+    /* Configuration for the discovery group that the service should join.
+     * This first checks if the org.rioproject.groups property is set, if not
+     * the user name is used */
+    groups System.getProperty(Constants.GROUPS_PROPERTY_NAME,
+                              System.getProperty('user.name'))
+
+    /* Declares the artifacts required for deployment. Note the 'dl'
+     * classifier used for the 'download' jar */
+    artifact id:'service', 'org.drools:drools-grid-distributed-rio:5.1.0.SNAPSHOT'
+    artifact id:'service-dl', 'org.drools:drools-grid-distributed-rio:dl:5.1.0.SNAPSHOT'
+
+    /*
+     * Declare the service to be deployed. The number of instances deployed
+     * defaults to 1. If you require > 1 instances change as needed
+     */
+//    service(name: 'ExecutionNodeService') {
+//        interfaces {
+//            classes 'org.drools.grid.ExecutionNodeService'
+//            artifact ref:'service-dl'
+//        }
+//        implementation(class:'org.drools.grid.distributed.impl.ExecutionNodeServiceImpl') {
+//            artifact ref:'service'
+//        }
+//        /*sla(id:'load', low:10, high: 30) {
+//            rule resource: 'ScalingRuleHandler', max:5
+//        }*/
+////        sla(id:'ksessionCounter', low:1, high: 4) {
+////            rule resource: 'ScalingRuleHandlerCounter', max:5
+////        }
+//        maintain 2
+//    }
+    service(name: 'DirectoryNodeService') {
+        interfaces {
+            classes 'org.drools.grid.DirectoryNodeService'
+            artifact ref:'service-dl'
+        }
+        implementation(class:'org.drools.grid.distributed.impl.DirectoryNodeServiceImpl') {
+            artifact ref:'service'
+        }
+
+        association (name:'ExecutionNodeService', type:'uses', property:'nodeServices')
+
+        maintain 1
+    }
+
+//    service(name: 'Gnostic') {
+//        interfaces {
+//            classes 'org.rioproject.gnostic.Gnostic'
+//            artifact ref: 'service-dl'
+//        }
+//        implementation(class: 'org.rioproject.gnostic.GnosticImpl') {
+//            artifact ref: 'service'
+//        }
+//
+//        parameters {
+//            parameter name: "create-core-associations", value: "yes"
+//        }
+//
+//        associations {
+//            ['ExecutionNodeService'].each {
+//                association name: "$it",
+//                            type: 'uses', property: 'service',
+//                            serviceType: Service.name
+//            }
+//        }
+//        maintain 1
+//    }
+
+}
\ No newline at end of file

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/manager-config.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/manager-config.groovy	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/manager-config.groovy	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,53 @@
+/*
+ * Copyright to the original author or authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import org.rioproject.config.Constants
+
+/*
+* Configuration properties for the Gnostic
+*/
+manager {
+    execClassPath =
+        '${RIO_HOME}${/}lib${/}boot.jar${:}${RIO_HOME}${/}lib/${/}start.jar${:}${JAVA_HOME}${/}lib${/}tools.jar${:}${RIO_HOME}${/}lib${/}groovy-all.jar'
+
+    inheritOptions = true
+
+    jvmOptions = '''
+        -XX:+UseConcMarkSweepGC -XX:+AggressiveOpts
+        -Djava.security.policy=${RIO_HOME}${/}policy${/}policy.all
+        -DRIO_HOME=${RIO_HOME} -Dorg.rioproject.groups=${org.rioproject.groups}'''
+
+    mainClass = 'com.sun.jini.start.ServiceStarter'
+
+    /* The ${service} token will be replaced by the name of the starter file.
+     * For start-reggie the service name will be reggie, for start-monitor the
+     * service name will be monitor, etc ... */
+    String logExt = System.getProperty(Constants.GROUPS_PROPERTY_NAME,
+                                       System.getProperty('user.name'))
+    String logDir = '/tmp/logs/rio/'
+    String opSys = System.getProperty('os.name')
+    if(opSys.startsWith("Windows"))
+        logDir = '${java.io.tmpdir}/logs/rio/'
+    log = logDir + logExt + '/${service}.log'
+
+    /*
+    * Remove any previously created service log files
+    */
+    cleanLogs = true
+
+    monitorStarter = '${user.dir}${/}src${/}test${/}conf${/}start-monitor.groovy'
+    cybernodeStarter = '${RIO_HOME}/config/start-cybernode.groovy'
+}
\ No newline at end of file

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/start-monitor.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/start-monitor.groovy	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/start-monitor.groovy	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,38 @@
+/*
+ * This configuration is used by the com.sun.jini.start utility to start a
+ * ProvisionMonitor, including an embedded Webster
+ */
+
+import org.rioproject.config.Component
+
+import org.rioproject.boot.ServiceDescriptorUtil;
+import com.sun.jini.start.ServiceDescriptor;
+
+ at Component('com.sun.jini.start')
+class StartMonitorConfig {
+
+    ServiceDescriptor[] getServiceDescriptors() {
+        String m2Home = "${System.getProperty("user.home")}/.m2"
+        String rioHome = System.getProperty('RIO_HOME')
+        String cwd = System.getProperty('user.dir')
+        println "\n********\n$cwd\n********"
+        
+        def websterRoots = [rioHome+'/lib-dl', ';',
+                            rioHome+'/lib',     ';',
+                            m2Home+'/repository', ';',
+                            cwd+'/target/']
+
+        String policyFile = rioHome+'/policy/policy.all'
+        String monitorConfig = rioHome+'/config/monitor.groovy'
+        String reggieConfig = rioHome+'/config/reggie.groovy'
+
+        def serviceDescriptors = [
+            ServiceDescriptorUtil.getWebster(policyFile, '0', (String[])websterRoots),
+            ServiceDescriptorUtil.getLookup(policyFile, reggieConfig),
+            ServiceDescriptorUtil.getMonitor(policyFile, monitorConfig)
+        ]
+
+        return (ServiceDescriptor[])serviceDescriptors
+    }
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/test-config.groovy
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/test-config.groovy	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/conf/test-config.groovy	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,13 @@
+/*
+ * Configuration file for integration test cases
+ */
+ITGridExecutionTest {
+    groups = "ITGridExecutionTest"
+    numCybernodes = 1
+    numMonitors = 1
+    //numLookups = 1
+    opstring = 'src/main/resources/org/drools/directoryNodeService.groovy'
+    autoDeploy = true
+    //harvest = true
+}
+

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ExecutionNodeBaseTest.java	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,53 @@
+/*
+ *  Copyright 2010 salaboy.
+ * 
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ * 
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *  under the License.
+ */
+
+package org.drools.distributed.directory;
+
+
+import java.rmi.RemoteException;
+import junit.framework.Assert;
+import org.drools.grid.ConnectorException;
+import org.drools.grid.DirectoryNodeService;
+import org.drools.grid.GridConnection;
+import org.junit.Test;
+/**
+ *
+ * @author salaboy
+ */
+
+public abstract class ExecutionNodeBaseTest {
+
+    protected DirectoryNodeService directory;
+    protected GridConnection connection = new GridConnection();
+    public ExecutionNodeBaseTest() {
+        
+    }
+
+
+    @Test
+    public void directoryTest() throws ConnectorException, RemoteException{
+        directory.register("blah","blash");
+
+        Assert.assertEquals("blash", directory.lookupId("blah"));
+
+        
+    }
+
+   
+
+
+}

Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java	                        (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-dir-rio/src/test/java/org/drools/distributed/directory/ITGridExecutionTest.java	2010-06-25 18:29:55 UTC (rev 33647)
@@ -0,0 +1,62 @@
+package org.drools.distributed.directory;
+
+import org.drools.grid.ConnectorException;
+import org.drools.grid.AcceptorService;
+import junit.framework.Assert;
+
+import org.drools.grid.DirectoryNodeService;
+import org.junit.After;
+
+
+
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.rioproject.test.RioTestRunner;
+import org.rioproject.test.SetTestManager;
+import org.rioproject.test.TestManager;
+
+ at RunWith(RioTestRunner.class)
+public class ITGridExecutionTest extends ExecutionNodeBaseTest {
+
+    AcceptorService server;
+    @SetTestManager
+    static TestManager testManager;
+
+    @Before
+    public void setUp() throws Exception {
+        
+        Assert.assertNotNull(testManager);
+//        //setup all the services using the Rio Test Framework
+//        //In real scenarios all this code will happen inside the connection.connect() method
+//
+        DirectoryNodeService directoryService = (DirectoryNodeService) testManager.waitForService(DirectoryNodeService.class);
+        Assert.assertNotNull(directoryService);
+        //Gnostic service = (Gnostic)testManager.waitForService(Gnostic.class);
+
+        connection.addDirectoryNode(directoryService);
+
+//        ExecutionNodeService executionNode = (ExecutionNodeService) testManager.waitForService(ExecutionNodeService.class);
+//        ServiceItem[] nodeServiceItems = testManager.getServiceItems(ExecutionNodeService.class);
+//        System.out.println("ExecutionNodes Items =" + nodeServiceItems.length);
+//
+//        for (int i = 0; i < nodeServiceItems.length; i++) {
+//            if (nodeServiceItems[i].service instanceof ExecutionNodeService) {
+//                connection.addExecutionNode((ExecutionNodeService) nodeServiceItems[i].service);
+//            }
+//        }
+//
+//        //Get an execution node using the default/round robin strategy
+//        node = connection.getExecutionNode();
+//        System.out.println("ExecutionNode = "+ node);
+
+        directory = connection.getDirectoryNode();
+        System.out.println("Directory Node = "+directory);
+
+
+    }
+    @After
+    public void tearDown() throws ConnectorException  {
+        connection.dispose();
+    }
+}

Deleted: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DirectoryNodeServiceImpl.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DirectoryNodeServiceImpl.java	2010-06-25 16:43:06 UTC (rev 33646)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-distributed-rio/src/main/java/org/drools/grid/distributed/impl/DirectoryNodeServiceImpl.java	2010-06-25 18:29:55 UTC (rev 33647)
@@ -1,168 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package org.drools.grid.distributed.impl;
-
-import java.rmi.RemoteException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-import org.drools.KnowledgeBase;
-import org.drools.command.KnowledgeContextResolveFromContextCommand;
-import org.drools.command.runtime.GetKnowledgeBaseCommand;
-import org.drools.grid.ConnectorException;
-import org.drools.grid.ConnectorType;
-import org.drools.grid.GenericConnection;
-import org.drools.grid.internal.Message;
-import org.drools.grid.ExecutionNodeService;
-import org.drools.grid.DirectoryNodeService;
-import org.drools.grid.GenericNodeConnector;
-
-
-/**
- *
- * @author salaboy
- */
-public class DirectoryNodeServiceImpl implements DirectoryNodeService{
-
-    private String id;
-
-    private Map<String, String> directoryMap = new HashMap<String, String>();
-
-    private Map<String, String> kbaseDirectoryMap = new HashMap<String, String>();
-
-    private Iterable<ExecutionNodeService> executionNodes;
-
-    public DirectoryNodeServiceImpl() {
-        executionNodes = new ArrayList<ExecutionNodeService>();
-        this.id = "Distributed:Directory";
-    }
-
-    
-    @Override
-    public String getId() {
-        return id;
-    }
-    
-    
-    @Override
-    public void register(String sessionId, String nodeServiceId) throws ConnectorException, RemoteException  {
-        //System.out.println("Registering: "+  sessionId + " -- "+nodeServiceId);
-        directoryMap.put(sessionId, nodeServiceId);
-        for(ExecutionNodeService node : executionNodes){
-            if(node.getId().equals(nodeServiceId)){
-                node.incrementKsessionCounter();
-            }
-        }
-    }
-
-    
-    @Override
-    public GenericNodeConnector lookup(String sessionId) throws ConnectorException, RemoteException {
-        ExecutionNodeService nodeService = null;
-        String sessionServiceId = (String)directoryMap.get(sessionId);
-        //System.out.println("Registry = "+ directoryMap.toString());
-        //System.out.println("Nodes Services = "+nodeServices);
-        for(ExecutionNodeService ss : executionNodes){
-            //System.out.println("Session Service id = "+ss.getId() + "needs to match with ="+sessionServiceId);
-            if(ss.getId().equals(sessionServiceId)){
-                nodeService = ss;
-            }
-        }     
-
-        return nodeService;
-    }
-
-
-    public void setExecutionNodes(Iterable<ExecutionNodeService> executionNodes) {
-        this.executionNodes = executionNodes;
-    }
-
-    @Override
-    public void registerKBase(String kbaseId, String nodeServiceId) throws ConnectorException {
-        //System.out.println("Registering KnowledgeBase = "+kbaseId +" -in NS=" +nodeServiceId);
-        kbaseDirectoryMap.put(kbaseId, nodeServiceId);
-    }
-
-    @Override
-    public KnowledgeBase lookupKBase(String kbaseId) throws ConnectorException, RemoteException{
-        ExecutionNodeService executionNode = null;
-        String nodeServiceId = (String)kbaseDirectoryMap.get(kbaseId);
-        //System.out.println("Kbase Registry = "+ kbaseDirectoryMap.toString());
-        //System.out.println("Session Services = "+nodeService);
-        for(ExecutionNodeService ns : executionNodes){
-            //System.out.println("Node Service id = "+ns.getId() + "needs to match with ="+nodeServiceId);
-            if(ns.getId().equals(nodeServiceId)){
-                executionNode = ns;
-            }
-        }
-        //System.out.println("Node Service = "+nodeService);
-        
-        try {
-            //@TODO: This is a bad hack.. I need to improve this a lot
-            Message msg = executionNode.write(new Message(999,1000,false, new KnowledgeContextResolveFromContextCommand( new GetKnowledgeBaseCommand(), null, kbaseId, null, null)));
-            //System.out.println("MSG returned by nodeService = "+msg);
-            if (msg.getPayload() instanceof KnowledgeBase) {
-                //System.out.println("Kbase in the payload: "+(KnowledgeBase)msg.getPayload());
-                return (KnowledgeBase)msg.getPayload();
-            }
-            return null;
-        } catch ( Exception e ) {
-            throw new RuntimeException( "Unable to execute message",
-                                        e );
-        }
-    }
-
-   
-
-    @Override
-    public Map<String, String> getDirectoryMap()  throws ConnectorException{
-        return directoryMap;
-    }
-
-    @Override
-    public void register(String executorId, GenericNodeConnector resourceConnector) throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public String lookupId(String resourceId) throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public void dispose() throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public void connect() throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public void disconnect() throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public DirectoryNodeService getDirectoryNodeService() throws ConnectorException {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public GenericConnection getConnection() {
-        throw new UnsupportedOperationException("Not supported yet.");
-    }
-
-    @Override
-    public ConnectorType getConnectorType() {
-        return ConnectorType.DISTRIBUTED;
-    }
-
-
-}

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml	2010-06-25 16:43:06 UTC (rev 33646)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml	2010-06-25 18:29:55 UTC (rev 33647)
@@ -40,6 +40,13 @@
             <type>jar</type>
         </dependency>
 
+         <dependency>
+            <groupId>org.drools</groupId>
+            <artifactId>drools-grid-remote-dir-mina</artifactId>
+            <version>5.1.0.SNAPSHOT</version>
+            <type>jar</type>
+        </dependency>
+
         <dependency>
             <groupId>org.drools</groupId>
             <artifactId>drools-grid-task</artifactId>
@@ -54,13 +61,7 @@
             <version>4.8.1</version>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.drools</groupId>
-            <artifactId>drools-grid-remote-dir-mina</artifactId>
-            <version>5.1.0.SNAPSHOT</version>
-            <type>jar</type>
-            <scope>test</scope>
-        </dependency>
+       
     </dependencies>
 
 </project>
\ No newline at end of file

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java	2010-06-25 16:43:06 UTC (rev 33646)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/factory/DirectoryInstanceFactory.java	2010-06-25 18:29:55 UTC (rev 33647)
@@ -21,6 +21,7 @@
 import org.drools.grid.DirectoryNodeLocalImpl;
 import org.drools.grid.local.LocalDirectoryConnector;
 import org.drools.grid.remote.directory.RemoteMinaDirectoryConnector;
+
 import org.drools.grid.services.DirectoryInstance;
 import org.drools.grid.services.GenericProvider;
 import org.drools.grid.services.remote.MinaProvider;

Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml	2010-06-25 16:43:06 UTC (rev 33646)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/pom.xml	2010-06-25 18:29:55 UTC (rev 33647)
@@ -20,6 +20,7 @@
         <module>drools-grid-task</module>
     <module>drools-grid-distributed-rio</module>
     <module>drools-grid-distributed-api</module>
+    <module>drools-grid-distributed-dir-rio</module>
   </modules>
 
 



More information about the jboss-svn-commits mailing list