[jboss-svn-commits] JBL Code SVN: r35801 - in labs/jbossrules/trunk: drools-grid/drools-grid-impl2/src/main/java/org/drools/grid and 4 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Oct 29 11:58:19 EDT 2010
Author: salaboy21
Date: 2010-10-29 11:58:18 -0400 (Fri, 29 Oct 2010)
New Revision: 35801
Added:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/MultiJobHandle.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServiceConfiguration.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ServiceConfiguration.java
Modified:
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/resources/META-INF/orm.xml
labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java
Log:
JBRULES-2747: Drools Grid Scheduler Impl
- Adding ServiceConfiguration to the SchedulerService.
- The schedulerclient now get the service configuration and use a hash to decide where the job will be scheduled
Copied: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/MultiJobHandle.java (from rev 35787, labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/DefaultJobHandle.java)
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/MultiJobHandle.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/time/impl/MultiJobHandle.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -0,0 +1,45 @@
+/**
+ * Copyright 2010 JBoss Inc
+ *
+ * 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.
+ */
+
+package org.drools.time.impl;
+
+import java.util.List;
+import org.drools.time.JobHandle;
+
+
+/**
+ * A JobHandle container for scheduling multiple jobs
+ *
+ * @author salaboy
+ */
+public class MultiJobHandle
+ implements
+ JobHandle {
+
+ private static final long serialVersionUID = 510l;
+
+ private final List<JobHandle> jobHandles;
+
+ public MultiJobHandle(List<JobHandle> jobHandles) {
+ this.jobHandles = jobHandles;
+ }
+
+ public Object getJobHandles() {
+ return jobHandles;
+ }
+
+
+}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/GridServiceDescription.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -1,5 +1,6 @@
package org.drools.grid;
+import java.io.Serializable;
import java.util.Map;
@@ -18,5 +19,7 @@
public void removeAddress(String transport);
- // public Object getData();
+ public Serializable getData();
+
+ public void setData(Serializable data);
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionClient.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -1,5 +1,6 @@
package org.drools.grid.service.directory.impl;
+import java.io.Serializable;
import java.net.InetSocketAddress;
import java.util.Arrays;
import java.util.Collections;
@@ -24,6 +25,7 @@
private GridServiceDescription detachedLocal;
+
public GridServiceDescriptionClient(GridServiceDescription detachedLocal,
GridServiceDescription whitePagesGsd,
ConversationManager conversationManager) {
@@ -82,17 +84,7 @@
whitePagesGsd.getId(),
cmd );
}
-
- public Object getData() {
- InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
- CommandImpl cmd = new CommandImpl( "GridServiceDescription.getData",
- null );
- Object data = (Object) sendMessage( this.conversationManager,
- sockets,
- whitePagesGsd.getId(),
- cmd );
- return data;
- }
+
@Override
@@ -117,7 +109,29 @@
return hash;
}
+ public Serializable getData() {
+ InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+ CommandImpl cmd = new CommandImpl( "GridServiceDescription.getData",
+ null );
+ Serializable data = (Serializable) sendMessage( this.conversationManager,
+ sockets,
+ whitePagesGsd.getId(),
+ cmd );
+ return data;
+ }
+ public void setData(Serializable data) {
+ InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) whitePagesGsd.getAddresses().get( "socket" )).getObject();
+ CommandImpl cmd = new CommandImpl( "GridServiceDescription.setData",
+ Arrays.asList( new Object[]{ data } ) );
+ sendMessage( this.conversationManager,
+ sockets,
+ whitePagesGsd.getId(),
+ cmd );
+
+ }
+
+
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionImpl.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -21,7 +21,7 @@
private Map<String, Address> addresses = new HashMap<String, Address>();
- //private Object data;
+ private Serializable data;
public GridServiceDescriptionImpl() {
@@ -104,9 +104,13 @@
return result;
}
-// public Object getData() {
-// return data;
-// }
+ public Serializable getData() {
+ return data;
+ }
+
+ public void setData(Serializable data) {
+ this.data = data;
+ }
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/service/directory/impl/GridServiceDescriptionJpa.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -1,9 +1,5 @@
package org.drools.grid.service.directory.impl;
-import java.io.Externalizable;
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
import java.io.ObjectStreamException;
import java.io.Serializable;
import java.util.Collections;
@@ -83,15 +79,15 @@
return this.detached;
}
-// public Object getData() {
-// EntityManager em = this.emf.createEntityManager();
-// em.getTransaction().begin();
-// this.detached = em.find( GridServiceDescriptionImpl.class, this.detached.getId() );
-// Object data = this.detached.getData();
-// em.getTransaction().commit();
-// em.close();
-// return data;
-// }
+ public Serializable getData() {
+ EntityManager em = this.emf.createEntityManager();
+ em.getTransaction().begin();
+ this.detached = em.find( GridServiceDescriptionImpl.class, this.detached.getId() );
+ Serializable data = this.detached.getData();
+ em.getTransaction().commit();
+ em.close();
+ return data;
+ }
@Override
@@ -111,6 +107,15 @@
return hash;
}
+ public void setData(Serializable data) {
+ EntityManager em = this.emf.createEntityManager();
+ em.getTransaction().begin();
+ this.detached = em.find( GridServiceDescriptionImpl.class, this.detached.getId() );
+ this.detached.setData(data);
+ em.getTransaction().commit();
+ em.close();
+ }
+
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerClient.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -19,8 +19,10 @@
import java.io.Serializable;
import java.net.InetSocketAddress;
+import java.util.ArrayList;
import java.util.Arrays;
-import org.drools.SystemEventListenerFactory;
+import java.util.List;
+import org.drools.grid.Grid;
import org.drools.grid.GridServiceDescription;
import org.drools.grid.MessageReceiverHandlerFactoryService;
import org.drools.grid.internal.responsehandlers.BlockingMessageResponseHandler;
@@ -28,14 +30,13 @@
import org.drools.grid.io.ConversationManager;
import org.drools.grid.io.MessageReceiverHandler;
import org.drools.grid.io.impl.CommandImpl;
-import org.drools.grid.io.impl.ConversationManagerImpl;
-import org.drools.grid.remote.mina.MinaConnector;
import org.drools.grid.service.directory.Address;
import org.drools.time.Job;
import org.drools.time.JobContext;
import org.drools.time.JobHandle;
import org.drools.time.SchedulerService;
import org.drools.time.Trigger;
+import org.drools.time.impl.MultiJobHandle;
/**
*
@@ -48,32 +49,13 @@
private ConversationManager conversationManager;
- private String id;
-
- public SchedulerClient(String id, GridServiceDescription schedulerGsd) {
- this.id = id;
+ private Grid grid;
+ public SchedulerClient(Grid grid, GridServiceDescription schedulerGsd, ConversationManager conversationManager) {
+ this.grid = grid;
this.schedulerGsd = schedulerGsd;
- this.conversationManager = new ConversationManagerImpl(id, new MinaConnector(), SystemEventListenerFactory.getSystemEventListener());
- }
-
- public SchedulerClient(String id, GridServiceDescription schedulerGsd, ConversationManager conversationManager) {
- this.id = id;
- this.schedulerGsd = schedulerGsd;
this.conversationManager = conversationManager;
}
-
- public void scheduleJob(ScheduledJob job, Serializable addr) {
- CommandImpl cmd = new CommandImpl( "Scheduler.scheduleJob",
- Arrays.asList( new Object[]{ job } ) );
-
- sendMessage( this.conversationManager,
- addr,
- this.schedulerGsd.getId(),
- cmd );
- }
-
-
public static Object sendMessage(ConversationManager conversationManager,
Serializable addr,
String id,
@@ -121,18 +103,27 @@
return new SchedulerServer( this );
}
- public String getId() {
- return this.id;
- }
public JobHandle scheduleJob(Job job, JobContext ctx, Trigger trigger) {
- InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) schedulerGsd.getAddresses().get( "socket" )).getObject();
- CommandImpl cmd = new CommandImpl( "Scheduler.scheduleJob",
- Arrays.asList( new Object[]{ new ScheduledJob(new UuidJobHandle(), job, ctx, trigger, null) } ) );
- return (UuidJobHandle) sendMessage( this.conversationManager,
- sockets,
+ SchedulerServiceConfiguration conf = (SchedulerServiceConfiguration) schedulerGsd.getData();
+ List<JobHandle> jobHandles = new ArrayList<JobHandle>();
+ UuidJobHandle jobhandle = new UuidJobHandle();
+ for( int i = 0; i < conf.getRedundancy(); i ++){
+ int bucket = (int)jobhandle.hashCode() % conf.getServices(grid).length;
+ //InetSocketAddress[] sockets = (InetSocketAddress[]) ((Address) schedulerGsd.getAddresses().get( "socket" )).getObject();
+ InetSocketAddress socket = conf.getServices(grid)[bucket];
+ CommandImpl cmd = new CommandImpl( "Scheduler.scheduleJob",
+ Arrays.asList( new Object[]{ new ScheduledJob(jobhandle, job, ctx, trigger, null) } ) );
+ UuidJobHandle handle = (UuidJobHandle) sendMessage( this.conversationManager,
+ socket,
this.schedulerGsd.getId(),
- cmd );
+ cmd );
+
+ jobHandles.add(handle);
+ }
+
+ return new MultiJobHandle(jobHandles);
+
}
public boolean removeJob(JobHandle jobHandle) {
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerRemoteConfiguration.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -28,7 +28,7 @@
GridServiceDescriptionImpl gsd = (GridServiceDescriptionImpl) coreServices.lookup( SchedulerService.class );
- SchedulerService scheduler = new SchedulerClient(gsd.getId(), gsd,
+ SchedulerService scheduler = new SchedulerClient(grid, gsd,
cm );
((GridImpl) grid).addService( SchedulerService.class,
scheduler );
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServiceConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServiceConfiguration.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerServiceConfiguration.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -0,0 +1,49 @@
+/*
+ * 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.timer.impl;
+
+import java.net.InetSocketAddress;
+import org.drools.grid.Grid;
+
+/**
+ *
+ * @author salaboy
+ */
+public class SchedulerServiceConfiguration implements ServiceConfiguration{
+ private int redundancy = 1; //Default 1, 0 all
+ private InetSocketAddress[] addresses;
+
+ public SchedulerServiceConfiguration(InetSocketAddress[] addresses) {
+ this.addresses = addresses;
+ }
+
+ public InetSocketAddress[] getServices(Grid grid) {
+ //get addresses from the grid.. or whatever
+ return addresses;
+ }
+
+ public int getRedundancy(){
+ return this.redundancy;
+ }
+
+ public void setRedundancy(int redundancy){
+ this.redundancy = redundancy;
+ }
+
+
+}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/SchedulerSocketConfiguration.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -54,18 +54,38 @@
address = service.addAddress( "socket" );
}
InetSocketAddress[] addresses = (InetSocketAddress[])address.getObject();
- int newAddressesLenght = 1;
- if(addresses != null){
- newAddressesLenght = addresses.length + 1;
+ if(addresses != null && addresses.length >= 1){
+ InetSocketAddress[] newAddresses = new InetSocketAddress[addresses.length+1];
+ if(addresses !=null){
+ System.arraycopy(addresses, 0, newAddresses, 0, addresses.length);
+ }
+ newAddresses[addresses.length]= new InetSocketAddress( mss.getIp(),
+ this.port);
+ ServiceConfiguration conf = new SchedulerServiceConfiguration(newAddresses);
+ service.setData(conf);
+ }else{
+ InetSocketAddress[] newAddress = new InetSocketAddress[1];
+ newAddress[0]= new InetSocketAddress( mss.getIp(),
+ this.port);
+ address.setObject( newAddress );
+ ServiceConfiguration conf = new SchedulerServiceConfiguration(newAddress);
+ service.setData(conf);
}
- InetSocketAddress[] newAddresses = new InetSocketAddress[newAddressesLenght];
- if(addresses !=null){
- System.arraycopy(addresses, 0, newAddresses, 0, addresses.length);
- }
- newAddresses[newAddressesLenght-1]= new InetSocketAddress( mss.getIp(),
- this.port);
- address.setObject( newAddresses );
+
+// int newAddressesLenght = 1;
+// if(addresses != null){
+// newAddressesLenght = addresses.length + 1;
+// }
+// InetSocketAddress[] newAddresses = new InetSocketAddress[newAddressesLenght];
+// if(addresses !=null){
+// System.arraycopy(addresses, 0, newAddresses, 0, addresses.length);
+// }
+// newAddresses[newAddressesLenght-1]= new InetSocketAddress( mss.getIp(),
+// this.port);
+// address.setObject( newAddresses );
+
+
mss.addService( this.port,
SchedulerService.class.getName(),
Added: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ServiceConfiguration.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ServiceConfiguration.java (rev 0)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/ServiceConfiguration.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -0,0 +1,30 @@
+/*
+ * 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.timer.impl;
+
+import java.io.Serializable;
+import java.net.InetSocketAddress;
+import org.drools.grid.Grid;
+
+/**
+ *
+ * @author salaboy
+ */
+public interface ServiceConfiguration extends Serializable{
+ public InetSocketAddress[] getServices(Grid grid);
+}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/java/org/drools/grid/timer/impl/UuidJobHandle.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -26,6 +26,9 @@
final int prime = 31;
int result = 1;
result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
+ if(result < 0){
+ result *= -1;
+ }
return result;
}
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/resources/META-INF/orm.xml
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/resources/META-INF/orm.xml 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/main/resources/META-INF/orm.xml 2010-10-29 15:58:18 UTC (rev 35801)
@@ -25,7 +25,7 @@
<cascade-all/>
</cascade>
</one-to-many>
-
+
</attributes>
</entity>
Modified: labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java 2010-10-29 15:18:46 UTC (rev 35800)
+++ labs/jbossrules/trunk/drools-grid/drools-grid-impl2/src/test/java/org/drools/grid/time/impl/DistributedSchedulerTest.java 2010-10-29 15:58:18 UTC (rev 35801)
@@ -46,9 +46,11 @@
import org.drools.grid.service.directory.impl.WhitePagesSocketConfiguration;
import org.drools.grid.timer.impl.CoreServicesSchedulerConfiguration;
import org.drools.grid.timer.impl.ScheduledJobConfiguration;
+import org.drools.grid.timer.impl.SchedulerClient;
import org.drools.grid.timer.impl.SchedulerImpl;
import org.drools.grid.timer.impl.SchedulerLocalConfiguration;
import org.drools.grid.timer.impl.SchedulerRemoteConfiguration;
+import org.drools.grid.timer.impl.SchedulerServiceConfiguration;
import org.drools.grid.timer.impl.SchedulerSocketConfiguration;
import org.drools.time.SchedulerService;
@@ -201,16 +203,59 @@
GridServiceDescription gsd = corewp.lookup(SchedulerService.class);
- Assert.assertEquals(2, ((InetSocketAddress[])gsd.getAddresses().values().iterator().next().getObject()).length);
+ Assert.assertEquals(1, ((InetSocketAddress[])gsd.getAddresses().values().iterator().next().getObject()).length);
+ Assert.assertEquals(2, ((InetSocketAddress[])((SchedulerServiceConfiguration)gsd.getData()).getServices(grid3)).length);
+
conn.close();
grid1.get(MultiplexSocketService.class).close();
grid2.get(MultiplexSocketService.class).close();
}
+ public void testGetDataFromCoreServices(){
+
+ coreServicesMap = new HashMap<String, GridServiceDescription>();//Hazelcast.newHazelcastInstance( null ).getMap( CoreServicesWhitePages.class.getName() );
+
+ //Grid View
+ GridImpl grid1 = new GridImpl(new ConcurrentHashMap<String, Object>());
+ configureGrid1(grid1, 5012);
+
+ GridImpl grid2 = new GridImpl(new ConcurrentHashMap<String, Object>());
+ configureGrid1(grid2, 5013);
+
+ CoreServicesWhitePages corewp = grid1.get(CoreServicesWhitePages.class);
+
+ //Get Scheduler Service
+ GridServiceDescription gsd = corewp.lookup(SchedulerService.class);
+
+
+ Assert.assertEquals(1, ((InetSocketAddress[])gsd.getAddresses().values().iterator().next().getObject()).length);
+
+ Assert.assertEquals(2, ((InetSocketAddress[])((SchedulerServiceConfiguration)gsd.getData()).getServices(grid1)).length);
+
+
+ Connector conn = new MinaConnector();
+ ConversationManager cm = new ConversationManagerImpl("s1",
+ conn,
+ l);
+
+
+ SchedulerClient schedulerClient = new SchedulerClient(grid1,gsd, cm);
+
+
+ JobHandle handle = schedulerClient.scheduleJob(new MockJob(), new MockJobContext("xxx"), new MockTrigger(new Date(1000)));
+
+
+ conn.close();
+ grid1.get(MultiplexSocketService.class).close();
+ grid2.get(MultiplexSocketService.class).close();
+
+ }
+
+
public static class MockJobContext implements JobContext, Serializable {
private String text;
More information about the jboss-svn-commits
mailing list