[jboss-svn-commits] JBL Code SVN: r33132 - in labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid: drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina and 6 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu May 27 15:23:30 EDT 2010
Author: salaboy21
Date: 2010-05-27 15:23:29 -0400 (Thu, 27 May 2010)
New Revision: 33132
Added:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
Modified:
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
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/EnvironmentProvider.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java
labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
Log:
remove deps in MinaEnvironmentProvider
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-local/src/main/java/org/drools/grid/local/LocalNodeConnector.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,51 @@
+/*
+ * 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.grid.local;
+
+import java.rmi.RemoteException;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.internal.Message;
+import org.drools.grid.internal.MessageResponseHandler;
+
+/**
+ *
+ * @author salaboy
+ */
+public class LocalNodeConnector implements GenericNodeConnector {
+
+ public boolean connect() throws RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void disconnect() throws RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public Message write(Message msg) throws RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public String getId() throws RemoteException {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ public void write(Message msg, MessageResponseHandler responseHandler) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java 2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-remote-mina/src/main/java/org/drools/grid/remote/mina/MinaNodeConnector.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -1,5 +1,6 @@
package org.drools.grid.remote.mina;
+import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.concurrent.atomic.AtomicInteger;
@@ -18,25 +19,23 @@
import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
public class MinaNodeConnector
- implements
- GenericNodeConnector,
- GenericIoWriter {
+ implements
+ GenericNodeConnector,
+ GenericIoWriter {
-
- protected IoSession session;
-
- protected final String name;
- protected AtomicInteger counter;
- protected SocketConnector connector;
- protected SocketAddress address;
+ protected IoSession session;
+ protected final String name;
+ protected AtomicInteger counter;
+ protected SocketConnector connector;
+ protected SocketAddress address;
protected SystemEventListener eventListener;
public MinaNodeConnector(String name,
- SocketConnector connector,
- SocketAddress address,
- SystemEventListener eventListener) {
- if ( name == null ) {
- throw new IllegalArgumentException( "Name can not be null" );
+ SocketConnector connector,
+ SocketAddress address,
+ SystemEventListener eventListener) {
+ if (name == null) {
+ throw new IllegalArgumentException("Name can not be null");
}
this.name = name;
this.counter = new AtomicInteger();
@@ -46,18 +45,19 @@
}
- public MinaNodeConnector(String name,
- SocketAddress address,
- SystemEventListener eventListener) {
+ public MinaNodeConnector(String name,
+ String providerAddress, int providerPort,
+ SystemEventListener eventListener) {
+
SocketConnector minaconnector = new NioSocketConnector();
minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
- if ( name == null ) {
- throw new IllegalArgumentException( "Name can not be null" );
+ if (name == null) {
+ throw new IllegalArgumentException("Name can not be null");
}
this.name = name;
this.counter = new AtomicInteger();
- this.address = address;
+ this.address = new InetSocketAddress(providerAddress, providerPort);
this.connector = minaconnector;
this.eventListener = eventListener;
}
@@ -67,24 +67,24 @@
* @see org.drools.vsm.mina.Messenger#connect()
*/
public boolean connect() {
- if ( session != null && session.isConnected() ) {
- throw new IllegalStateException( "Already connected. Disconnect first." );
+ if (session != null && session.isConnected()) {
+ throw new IllegalStateException("Already connected. Disconnect first.");
}
try {
- this.connector.getFilterChain().addLast( "codec",
- new ProtocolCodecFilter( new ObjectSerializationCodecFactory() ) );
+ this.connector.getFilterChain().addLast("codec",
+ new ProtocolCodecFilter(new ObjectSerializationCodecFactory()));
- ConnectFuture future1 = this.connector.connect( this.address );
- future1.await( 2000 );
- if ( !future1.isConnected() ) {
- eventListener.info( "unable to connect : " + address + " : " + future1.getException() );
+ ConnectFuture future1 = this.connector.connect(this.address);
+ future1.await(2000);
+ if (!future1.isConnected()) {
+ eventListener.info("unable to connect : " + address + " : " + future1.getException());
return false;
}
- eventListener.info( "connected : " + address );
+ eventListener.info("connected : " + address);
this.session = future1.getSession();
return true;
- } catch ( Exception e ) {
+ } catch (Exception e) {
e.printStackTrace();
return false;
}
@@ -94,38 +94,38 @@
* @see org.drools.vsm.mina.Messenger#disconnect()
*/
public void disconnect() {
- if ( session != null && session.isConnected() ) {
+ if (session != null && session.isConnected()) {
session.close();
session.getCloseFuture().join();
}
}
private void addResponseHandler(int id,
- MessageResponseHandler responseHandler) {
- ((MinaIoHandler) this.connector.getHandler()).addResponseHandler( id,
- responseHandler );
+ MessageResponseHandler responseHandler) {
+ ((MinaIoHandler) this.connector.getHandler()).addResponseHandler(id,
+ responseHandler);
}
public void write(Message msg,
- MessageResponseHandler responseHandler) {
- if ( responseHandler != null ) {
- addResponseHandler( msg.getResponseId(),
- responseHandler );
+ MessageResponseHandler responseHandler) {
+ if (responseHandler != null) {
+ addResponseHandler(msg.getResponseId(),
+ responseHandler);
}
- this.session.write( msg );
+ this.session.write(msg);
}
public Message write(Message msg) {
BlockingMessageResponseHandler responseHandler = new BlockingMessageResponseHandler();
- if ( responseHandler != null ) {
- addResponseHandler( msg.getResponseId(),
- responseHandler );
+ if (responseHandler != null) {
+ addResponseHandler(msg.getResponseId(),
+ responseHandler);
}
- this.session.write( msg );
+ this.session.write(msg);
Message returnMessage = responseHandler.getMessage();
- if ( responseHandler.getError() != null ) {
+ if (responseHandler.getError() != null) {
throw responseHandler.getError();
}
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-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/pom.xml 2010-05-27 19:23:29 UTC (rev 33132)
@@ -22,28 +22,24 @@
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-grid-api</artifactId>
- <version>5.1.0.SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-grid-local</artifactId>
- <version>5.1.0.SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-grid-remote-api</artifactId>
- <version>5.1.0.SNAPSHOT</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-grid-remote-mina</artifactId>
- <version>5.1.0.SNAPSHOT</version>
<type>jar</type>
</dependency>
@@ -51,7 +47,6 @@
<groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId>
<version>2.0.0-M6</version>
-
</dependency>
<!-- Test deps -->
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java 2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/EnvironmentProvider.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -4,17 +4,12 @@
import org.drools.grid.GenericNodeConnector;
/**
- * Created by IntelliJ IDEA.
- * User: salaboy
- * Date: May 17, 2010
- * Time: 11:10:44 AM
- * To change this template use File | Settings | File Templates.
+ * @author salaboy
*/
public interface EnvironmentProvider {
-
+
public GenericNodeConnector getNodeConnector();
public void setParameter(String name, Object value);
public Object getParameter(String name);
public Map<String, Object> getParameters();
-
}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java 2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/ExecutionEnvironmentTopology.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -1,11 +1,14 @@
package org.drools.grid.services;
+import java.util.HashMap;
+import java.util.Map;
import org.drools.grid.ExecutionNode;
import org.drools.grid.remote.RemoteConnection;
import org.drools.grid.GenericConnection;
import org.drools.grid.GenericNodeConnector;
import org.drools.grid.remote.mina.MinaNodeConnector;
-import java.util.*;
+import org.drools.grid.local.LocalConnection;
+import org.drools.grid.local.LocalNodeConnector;
import org.drools.grid.services.directory.DirectoryInstance;
import org.drools.grid.services.strategies.ExecutionEnvironmentSelectionStrategy;
import org.drools.grid.strategies.ReturnAlwaysTheFirstSelectionStrategy;
@@ -20,14 +23,13 @@
*/
public class ExecutionEnvironmentTopology {
- private String id;
+
private String name;
private Map<String, ExecutionEnvironment> environments = new HashMap<String, ExecutionEnvironment>();
private Map<String, DirectoryInstance> directories = new HashMap<String, DirectoryInstance>();
private Map<String, GenericConnection> connections = new HashMap<String, GenericConnection>();
public ExecutionEnvironmentTopology(String name) {
- this.id = UUID.randomUUID().toString();
this.name = name;
}
@@ -39,10 +41,13 @@
if (connector instanceof MinaNodeConnector) {
RemoteConnection connection = new RemoteConnection();
connection.addNodeConnector(connector);
-
connections.put(name, connection);
-
}
+ if (connector instanceof LocalNodeConnector){
+ LocalConnection connection = new LocalConnection();
+ connection.addNodeConnector(connector);
+ connections.put(name, connection);
+ }
environments.put(name, executionEnvironment);
@@ -63,9 +68,9 @@
return new DirectoryInstance();
}
- public Map<String, GenericConnection> getConnections() {
- return this.connections;
- }
+// public Map<String, GenericConnection> getConnections() {
+// return this.connections;
+// }
public ExecutionEnvironment getExecutionEnvironment(String name) {
return this.environments.get(name);
@@ -92,4 +97,11 @@
return connection.getExecutionNode(new ReturnAlwaysTheFirstSelectionStrategy(connection));
}
+
+ public String getName() {
+ return name;
+ }
+
+
+
}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/local/LocalEnvironmentProvider.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,65 @@
+/*
+ * 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.grid.services.local;
+
+import java.util.HashMap;
+import java.util.Map;
+import org.drools.grid.GenericNodeConnector;
+import org.drools.grid.local.LocalNodeConnector;
+import org.drools.grid.services.EnvironmentProvider;
+
+/**
+ *
+ * @author salaboy
+ */
+public class LocalEnvironmentProvider implements EnvironmentProvider{
+ private Map<String, Object> parameters = new HashMap<String, Object>();
+ private transient GenericNodeConnector connector;
+
+ public LocalEnvironmentProvider() {
+ init();
+ }
+
+ public LocalEnvironmentProvider(Map<String, Object> parameters) {
+ this.parameters = parameters;
+ init();
+ }
+
+
+
+ public GenericNodeConnector getNodeConnector() {
+ return this.connector;
+ }
+
+ public void setParameter(String name, Object value) {
+ this.parameters.put(name, value);
+ }
+
+ public Object getParameter(String name) {
+ return this.parameters.get(name);
+ }
+
+ public Map<String, Object> getParameters() {
+ return this.parameters;
+ }
+
+ private void init() {
+ connector = new LocalNodeConnector();
+ }
+
+}
Modified: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java 2010-05-27 17:38:32 UTC (rev 33131)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/remote/MinaEnvironmentProvider.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -1,16 +1,11 @@
package org.drools.grid.services.remote;
+import java.util.HashMap;
+import java.util.Map;
import org.drools.SystemEventListenerFactory;
import org.drools.grid.GenericNodeConnector;
import org.drools.grid.remote.mina.MinaNodeConnector;
-import java.net.InetSocketAddress;
-import java.net.SocketAddress;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.mina.transport.socket.SocketConnector;
-import org.apache.mina.transport.socket.nio.NioSocketConnector;
-import org.drools.grid.remote.mina.MinaIoHandler;
import org.drools.grid.services.EnvironmentProvider;
/**
@@ -21,26 +16,19 @@
private transient GenericNodeConnector connector;
public MinaEnvironmentProvider() {
- init();
-
+
}
-
-
public MinaEnvironmentProvider(Map<String, Object> parameters) {
this.parameters = parameters;
- init();
- }
-
- private void init() {
- String providerName = (String) parameters.get("providerName");
+ String providerName = (String) parameters.get("providerName");
String providerAddress = (String) parameters.get("providerAddress");
int providerPort = (Integer) parameters.get("providerPort");
- SocketAddress address = new InetSocketAddress(providerAddress, providerPort);
- SocketConnector minaconnector = new NioSocketConnector();
- minaconnector.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener()));
- connector = new MinaNodeConnector(providerName, address, SystemEventListenerFactory.getSystemEventListener());
+ connector = new MinaNodeConnector(providerName,providerAddress, providerPort,
+ SystemEventListenerFactory.getSystemEventListener());
}
+
+
public void setParameter(String name, Object value) {
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/main/java/org/drools/grid/services/strategies/TopologyPrioritySelectionStrategy.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,72 @@
+/*
+ * 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.grid.services.strategies;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import org.drools.grid.services.EnvironmentProvider;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.local.LocalEnvironmentProvider;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+
+/**
+ *
+ * @author salaboy
+ */
+public class TopologyPrioritySelectionStrategy implements ExecutionEnvironmentSelectionStrategy {
+
+ private Map<String, ExecutionEnvironment> environments;
+
+ public ExecutionEnvironment getBestExecutionEnvironment() {
+ List<EnvironmentProvider> providers = new ArrayList<EnvironmentProvider>();
+ for(ExecutionEnvironment ee : environments.values()){
+ providers.add(ee.getProvider());
+ }
+
+ Collections.sort(providers, new Comparator<EnvironmentProvider>() {
+
+ private Map<Class<? extends EnvironmentProvider> , Integer> priorities
+ = new HashMap<Class<? extends EnvironmentProvider>, Integer>() {
+ {
+ put(LocalEnvironmentProvider.class, 1);
+ // put("RioEnvironmentProvider", 2);
+ // put("HornetQEnvironmentProvider", 3);
+ put(MinaEnvironmentProvider.class, 4);
+ }
+ };
+
+ public int compare(EnvironmentProvider o1, EnvironmentProvider o2) {
+ return priorities.get(o2.getClass()).compareTo(priorities.get(o1.getClass()));
+ }
+ });
+
+ return environments.values().iterator().next();
+ }
+
+ public void setEnvironments(Map<String, ExecutionEnvironment> environments) {
+ this.environments = environments;
+ }
+
+ public ExecutionEnvironment getBestExecutionEnvironment(Map<String, ExecutionEnvironment> environments) {
+ this.environments = environments;
+ return getBestExecutionEnvironment();
+ }
+}
Copied: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java (from rev 33122, labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITest.java)
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/BasicAPITestWithMina.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,341 @@
+package org.drools.services;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import java.rmi.RemoteException;
+import java.util.HashMap;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.ExecutionEnvironmentTopology;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+import org.drools.grid.ExecutionNode;
+import org.junit.Test;
+
+import java.util.Map;
+import junit.framework.Assert;
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
+import org.drools.grid.internal.NodeData;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.strategies.RandomEnvironmentSelectionStrategy;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.junit.After;
+import org.junit.Before;
+
+/**
+ * @author: salaboy
+ */
+public class BasicAPITestWithMina {
+
+ private MinaAcceptor server1;
+ private MinaAcceptor server2;
+ private ExecutionEnvironmentTopology eet;
+
+ @Before
+ public void setUp() throws IOException {
+
+ System.out.println("Server 1 Starting!");
+ // the servers should be started in a different machine (jvm or physical) or in another thread
+ SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+ NodeData nodeData = new NodeData();
+ // setup Server
+ SocketAcceptor acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(nodeData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ server1 = new MinaAcceptor(acceptor, address);
+ server1.start();
+ System.out.println("Server 1 Started! at = " + address.toString());
+
+
+ System.out.println("Server 2 Starting!");
+ // the servers should be started in a different machine (jvm or physical) or in another thread
+ address = new InetSocketAddress("127.0.0.1", 9124);
+ nodeData = new NodeData();
+ // setup Server
+ acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(nodeData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ server2 = new MinaAcceptor(acceptor, address);
+ server2.start();
+ System.out.println("Server 2 Started! at = " + address.toString());
+
+
+ }
+
+ @After
+ public void stop() {
+ for (String key : eet.getExecutionEnvironments().keySet()) {
+ try {
+ eet.getExecutionEnvironment(key).getConnector().disconnect();
+ } catch (RemoteException ex) {
+ Logger.getLogger(BasicAPITestWithMina.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }
+
+ server1.stop();
+ System.out.println("Server 1 Stopped!");
+
+ server2.stop();
+ System.out.println("Server 2 Stopped!");
+
+
+
+
+ }
+
+ @Test
+ public void singleMinaProvider() {
+
+ //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+ //will be used for a specific situation/use case.
+
+ //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the
+ //topology in case of failure or restarting
+ eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+ //Specific paramters for this specific provider
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put("providerName", "Mina1");
+ parameters.put("providerAddress", "127.0.0.1");
+ parameters.put("providerPort", 9123);
+ //Create the provider
+ MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+ //Register the provider into the topology
+ eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider);
+
+ //Then we can get the registered Execution Environments by Name
+
+ ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+ Assert.assertNotNull(ee);
+
+ // Give me an ExecutionNode in the selected environment
+ // For the Mina we have just one Execution Node per server instance
+ ExecutionNode node = eet.getExecutionNode(ee);
+
+ Assert.assertNotNull(node);
+
+
+ // Do a basic Runtime Test that register a ksession and fire some rules.
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+
+ KnowledgeBuilder kbuilder =
+ node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+ kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes()),
+ ResourceType.DRL);
+
+ if (kbuilder.hasErrors()) {
+ System.out.println("Errors: " + kbuilder.getErrors());
+ }
+
+ KnowledgeBase kbase =
+ node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ Assert.assertNotNull(kbase);
+
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Assert.assertNotNull(ksession);
+
+ int fired = ksession.fireAllRules();
+ Assert.assertEquals(2, fired);
+
+
+
+ }
+
+ @Test
+ public void multiMinaProvider() {
+
+ //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+ //will be used for a specific situation/use case.
+
+ //The Execution Environment Topology will contain the Runtime state, persistent in time to be able to restore the
+ //topology in case of failure or restarting
+
+
+ eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+
+ //Specific paramters for this specific provider
+ Map<String, Object> parameters1 = new HashMap<String, Object>();
+ parameters1.put("providerName", "Mina1");
+ parameters1.put("providerAddress", "127.0.0.1");
+ parameters1.put("providerPort", 9123);
+ //Create the provider
+ MinaEnvironmentProvider provider1 = new MinaEnvironmentProvider(parameters1);
+ //Register the provider into the topology
+ eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider1);
+
+ //Specific paramters for this specific provider
+ Map<String, Object> parameters2 = new HashMap<String, Object>();
+ parameters2.put("providerName", "Mina1");
+ parameters2.put("providerAddress", "127.0.0.1");
+ parameters2.put("providerPort", 9124);
+ //Create the provider
+ MinaEnvironmentProvider provider2 = new MinaEnvironmentProvider(parameters2);
+ //Register the provider into the topology
+ eet.registerExecutionEnvironment("MyMinaExecutionEnv2", provider2);
+
+ //Then we can get the registered Execution Environments by Name
+ ExecutionEnvironment ee = eet.getBestExecutionEnvironment(new RandomEnvironmentSelectionStrategy());
+
+ Assert.assertNotNull(ee);
+ System.out.println("Selected Environment = " + ee.getName());
+
+ // Give me an ExecutionNode in the selected environment
+ // For the Mina we have just one Execution Node per server instance
+ ExecutionNode node = eet.getExecutionNode(ee);
+ Assert.assertNotNull(node);
+
+
+ // Do a basic Runtime Test that register a ksession and fire some rules.
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+
+ KnowledgeBuilder kbuilder =
+ node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+ kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes()),
+ ResourceType.DRL);
+
+ if (kbuilder.hasErrors()) {
+ System.out.println("Errors: " + kbuilder.getErrors());
+ }
+
+ KnowledgeBase kbase =
+ node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ Assert.assertNotNull(kbase);
+
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Assert.assertNotNull(ksession);
+
+ int fired = ksession.fireAllRules();
+ Assert.assertEquals(2, fired);
+
+ }
+//
+// @Test
+// public void basicMinaProviderTestOLD(){
+//
+// //This APIs are used to create the Execution Environment Topology that will define which logical set of nodes
+// //will be used for a specific situation/use case.
+//
+// //Runtime state, persistent
+// ExecutionEnvironmentTopology eet = new ExecutionEnvironmentTopology("MyCompanyTopology");
+// //Logical state and content of each execution environment
+// // DirectoryInstance directory = eet.registerDirectoryInstance("MyMainDirectory",new ZooKeeperDirectoryProvider());
+//
+// Map<String, Object> parameters = new HashMap<String,Object>();
+// parameters.put("providerName", "Mina1");
+// parameters.put("providerAddress", "127.0.0.1");
+// parameters.put("providerPort", 9123);
+//
+// MinaEnvironmentProvider provider = new MinaEnvironmentProvider(parameters);
+//
+// eet.registerExecutionEnvironment("MyMinaExecutionEnv1", provider );
+//
+//
+// //eet = ExecutionEnvironmentTopology.lookup("MyCompanyTopology");
+//
+// // directory = eem.getDirectoryInstance("MyMainDirectory");
+//
+// // List<DirectoryInstance> directories = eem.getAllDirectoryInstances();
+// // this should return the active list of Envs, then we can query for the status of each of them
+//// Map<String, ExecutionEnvironment> ees = eet.getExecutionEnvironments();
+//// ees.get("MyMinaExecutionEnv1").getInfo();
+//// ees.get("MyMinaExecutionEnv1").getStatus();
+////
+// ExecutionEnvironment ee = eet.getExecutionEnvironment("MyMinaExecutionEnv1");
+// Assert.assertNotNull(ee);
+// //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+//// ExecutionNode en = eet.getExecutionNode();
+//
+// //no matter the ExecutionEnvironment I wanna an ExecutionNode, you (grid) should choose one env
+// ExecutionNode node = eet.getExecutionNode(ee); // give me an ExecutionNode in that environment..
+//
+// Assert.assertNotNull(node);
+//
+// String str = "";
+// str += "package org.drools \n";
+// str += "global java.util.List list \n";
+// str += "rule rule1 \n";
+// str += " dialect \"java\" \n";
+// str += "when \n";
+// str += "then \n";
+// str += " System.out.println( \"hello1!!!\" ); \n";
+// str += "end \n";
+// str += "rule rule2 \n";
+// str += " dialect \"java\" \n";
+// str += "when \n";
+// str += "then \n";
+// str += " System.out.println( \"hello2!!!\" ); \n";
+// str += "end \n";
+//
+//
+// KnowledgeBuilder kbuilder =
+// node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+// kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+// ResourceType.DRL );
+//
+// if ( kbuilder.hasErrors() ) {
+// System.out.println( "Errors: " + kbuilder.getErrors() );
+// }
+//
+// KnowledgeBase kbase =
+// node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+// Assert.assertNotNull(kbase);
+//
+// kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+//
+// StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+// Assert.assertNotNull(ksession);
+//
+// int fired = ksession.fireAllRules();
+// Assert.assertEquals( 2, fired );
+//
+//
+//
+// }
+}
Added: labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java
===================================================================
--- labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java (rev 0)
+++ labs/jbossrules/branches/salaboy_drools_grid_api_separation/drools-grid/drools-grid-services/src/test/java/org/drools/services/ServiceAPITest.java 2010-05-27 19:23:29 UTC (rev 33132)
@@ -0,0 +1,160 @@
+/*
+ * 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.services;
+
+import java.io.IOException;
+import java.net.InetSocketAddress;
+import java.net.SocketAddress;
+import org.junit.Assert;
+import org.drools.grid.services.ExecutionEnvironment;
+import org.drools.grid.services.local.LocalEnvironmentProvider;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.mina.transport.socket.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactoryService;
+import org.drools.SystemEventListenerFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactoryService;
+import org.drools.builder.ResourceType;
+import org.drools.grid.ExecutionNode;
+import org.drools.grid.internal.GenericMessageHandlerImpl;
+import org.drools.grid.internal.NodeData;
+import org.drools.grid.remote.mina.MinaAcceptor;
+import org.drools.grid.remote.mina.MinaIoHandler;
+import org.drools.grid.services.EnvironmentProvider;
+import org.drools.grid.services.ExecutionEnvironmentTopology;
+import org.drools.grid.services.remote.MinaEnvironmentProvider;
+import org.drools.grid.services.strategies.TopologyPrioritySelectionStrategy;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ *
+ * @author salaboy
+ */
+public class ServiceAPITest {
+
+ private MinaAcceptor server1;
+
+ public ServiceAPITest() {
+ }
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {
+ }
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {
+ }
+
+ @Before
+ public void setUp() throws IOException {
+ System.out.println("Server 1 Starting!");
+ // the servers should be started in a different machine (jvm or physical) or in another thread
+ SocketAddress address = new InetSocketAddress("127.0.0.1", 9123);
+ NodeData nodeData = new NodeData();
+ // setup Server
+ SocketAcceptor acceptor = new NioSocketAcceptor();
+ acceptor.setHandler(new MinaIoHandler(SystemEventListenerFactory.getSystemEventListener(),
+ new GenericMessageHandlerImpl(nodeData,
+ SystemEventListenerFactory.getSystemEventListener())));
+ server1 = new MinaAcceptor(acceptor, address);
+ server1.start();
+ System.out.println("Server 1 Started! at = " + address.toString());
+
+ }
+
+ @After
+ public void tearDown() {
+ }
+
+
+ @Test
+ public void mixedTopologyMinaAndLocal() {
+ ExecutionEnvironmentTopology eet = new ExecutionEnvironmentTopology("MyBusinessUnit");
+ Map<String, Object> parameters = new HashMap<String, Object>();
+ parameters.put("providerName", "Mina1");
+ parameters.put("providerAddress", "127.0.0.1");
+ parameters.put("providerPort", 9123);
+ EnvironmentProvider minaProvider = new MinaEnvironmentProvider(parameters);
+ EnvironmentProvider localProvider = new LocalEnvironmentProvider(null);
+
+ eet.registerExecutionEnvironment("MyMinaEnv", minaProvider);
+
+ eet.registerExecutionEnvironment("MyLocalEnv", localProvider);
+
+ ExecutionEnvironment ee = eet.getBestExecutionEnvironment(new TopologyPrioritySelectionStrategy());
+ Assert.assertNotNull(ee);
+ System.out.println("EE Name = "+ee.getName());
+
+ ExecutionNode node = eet.getExecutionNode(ee);
+ Assert.assertNotNull(node);
+
+ // Do a basic Runtime Test that register a ksession and fire some rules.
+ String str = "";
+ str += "package org.drools \n";
+ str += "global java.util.List list \n";
+ str += "rule rule1 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello1!!!\" ); \n";
+ str += "end \n";
+ str += "rule rule2 \n";
+ str += " dialect \"java\" \n";
+ str += "when \n";
+ str += "then \n";
+ str += " System.out.println( \"hello2!!!\" ); \n";
+ str += "end \n";
+
+
+ KnowledgeBuilder kbuilder =
+ node.get(KnowledgeBuilderFactoryService.class).newKnowledgeBuilder();
+ kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes()),
+ ResourceType.DRL);
+
+ if (kbuilder.hasErrors()) {
+ System.out.println("Errors: " + kbuilder.getErrors());
+ }
+
+ KnowledgeBase kbase =
+ node.get(KnowledgeBaseFactoryService.class).newKnowledgeBase();
+ Assert.assertNotNull(kbase);
+
+ kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ Assert.assertNotNull(ksession);
+
+ int fired = ksession.fireAllRules();
+ Assert.assertEquals(2, fired);
+
+
+
+
+
+ }
+
+}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list