/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.wordpress.salaboy.grid;
import java.util.HashMap;
import java.util.Map;
import org.drools.SystemEventListenerFactory;
import org.drools.grid.ConnectionFactoryService;
import org.drools.grid.Grid;
import org.drools.grid.GridConnection;
import org.drools.grid.GridNode;
import org.drools.grid.GridServiceDescription;
import org.drools.grid.SocketService;
import org.drools.grid.conf.GridPeerServiceConfiguration;
import org.drools.grid.conf.impl.GridPeerConfiguration;
import org.drools.grid.impl.GridImpl;
import org.drools.grid.impl.MultiplexSocketServerImpl;
import org.drools.grid.io.impl.MultiplexSocketServiceCongifuration;
import org.drools.grid.remote.mina.MinaAcceptorFactoryService;
import org.drools.grid.service.directory.WhitePages;
import org.drools.grid.service.directory.impl.CoreServicesLookupConfiguration;
import org.drools.grid.service.directory.impl.WhitePagesLocalConfiguration;
import org.drools.grid.timer.impl.CoreServicesSchedulerConfiguration;
/**
*
* @author salaboy
*/
public abstract class GridBaseTest {
protected Map<String, GridServiceDescription> coreServicesMap;
protected Grid grid1;
protected GridNode remoteN1;
protected void createRemoteNode() {
grid1 = new GridImpl(new HashMap<String, Object>());
configureGrid1(grid1,
8000,
null);
Grid grid2 = new GridImpl(new HashMap<String, Object>());
configureGrid1(grid2,
-1,
grid1.get(WhitePages.class));
GridNode n1 = grid1.createGridNode("n1");
grid1.get(SocketService.class).addService("n1", 8000, n1);
GridServiceDescription<GridNode> n1Gsd = grid2.get(WhitePages.class).lookup("n1");
GridConnection<GridNode> conn = grid2.get(ConnectionFactoryService.class).createConnection(n1Gsd);
remoteN1 = conn.connect();
}
private void configureGrid1(Grid grid,
int port,
WhitePages wp) {
//Local Grid Configuration, for our client
GridPeerConfiguration conf = new GridPeerConfiguration();
//Configuring the Core Services White Pages
GridPeerServiceConfiguration coreSeviceWPConf = new CoreServicesLookupConfiguration(coreServicesMap);
conf.addConfiguration(coreSeviceWPConf);
//Configuring the Core Services Scheduler
GridPeerServiceConfiguration coreSeviceSchedulerConf = new CoreServicesSchedulerConfiguration();
conf.addConfiguration(coreSeviceSchedulerConf);
//Configuring the WhitePages
WhitePagesLocalConfiguration wplConf = new WhitePagesLocalConfiguration();
wplConf.setWhitePages(wp);
conf.addConfiguration(wplConf);
if (port >= 0) {
//Configuring the SocketService
MultiplexSocketServiceCongifuration socketConf = new MultiplexSocketServiceCongifuration(new MultiplexSocketServerImpl("127.0.0.1",
new MinaAcceptorFactoryService(),
SystemEventListenerFactory.getSystemEventListener(),
grid));
socketConf.addService(WhitePages.class.getName(), wplConf.getWhitePages(), port);
conf.addConfiguration(socketConf);
}
conf.configure(grid);
}
}