[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