[jboss-svn-commits] JBL Code SVN: r16917 - in labs/jbossrules/contrib/benchmarks: src/java/benchmarks/dispatch and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 29 15:52:16 EST 2007


Author: shabino
Date: 2007-11-29 15:52:15 -0500 (Thu, 29 Nov 2007)
New Revision: 16917

Added:
   labs/jbossrules/contrib/benchmarks/lib/junit-4.3.1.jar
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchParameters.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchWrapper.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/EligibleWorker.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/MaxRadius.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/AbstractDispatchTest.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/DispatchTestSuite.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestDerivations.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestEligibilityExclusions.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestLogicalTopTier.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoreManagement.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoring.java
   labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestWorkerEligibility.java
Log:
Dispatch unit tests and new expanding radius heuristic

Added: labs/jbossrules/contrib/benchmarks/lib/junit-4.3.1.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbossrules/contrib/benchmarks/lib/junit-4.3.1.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchParameters.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchParameters.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchParameters.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,9 @@
+package benchmarks.dispatch;
+
+public class DispatchParameters {
+	public final static double INITIAL_SEARCH_RADIUS = 25D;
+	public final static double INCREMENTAL_SEARCH_RADIUS = 100D;
+	
+	public final static int MIN_SCORED_WORKERS = 50;
+	
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchParameters.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchWrapper.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchWrapper.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchWrapper.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,91 @@
+package benchmarks.dispatch;
+
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.drools.FactHandle;
+import org.drools.RuleBase;
+import org.drools.RuleBaseConfiguration;
+import org.drools.RuleBaseFactory;
+import org.drools.WorkingMemory;
+import org.drools.compiler.DrlParser;
+import org.drools.compiler.PackageBuilder;
+import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.lang.descr.PackageDescr;
+
+public class DispatchWrapper {
+	
+	public DispatchWrapper() throws Exception {
+		createWM();
+	}
+	
+	public WorkingMemory getWM(){
+		return wm;
+	}
+	
+	private static final Set<String> rules = new HashSet<String>();
+
+	static {
+		rules.add("/benchmarks/dispatch/Derivations.dslr");
+		rules.add("/benchmarks/dispatch/EligibilityExclusions.dslr");
+		rules.add("/benchmarks/dispatch/LogicalTopTier.dslr");
+		rules.add("/benchmarks/dispatch/Queries.drl");
+		rules.add("/benchmarks/dispatch/Scoring.dslr");
+		rules.add("/benchmarks/dispatch/ScoreManagement.dslr");
+		rules.add("/benchmarks/dispatch/WorkerEligibility.dslr");
+	}
+
+	private WorkingMemory wm;
+
+	public void createWM() throws Exception {
+
+		RuleBaseConfiguration conf = new RuleBaseConfiguration();
+
+		conf.setAssertBehaviour(RuleBaseConfiguration.AssertBehaviour.EQUALITY);
+		conf.setRemoveIdentities(true);
+		conf.setLogicalOverride(RuleBaseConfiguration.LogicalOverride.DISCARD);
+		conf.setMaintainTms(true);
+		conf.setShadowProxy(true);
+
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase(conf);
+
+		PackageBuilderConfiguration pbc = new PackageBuilderConfiguration();
+
+		pbc
+				.addAccumulateFunction("top_workers",
+						"benchmarks.dispatch.accumulator.TopWorkerAccumulator");
+
+		PackageBuilder builder = new PackageBuilder(pbc);
+
+		for (String ruleFile : rules) {
+			DrlParser parser = new DrlParser();
+			PackageDescr desc = parser.parse(getReader(ruleFile),
+					getReader("/benchmarks/dispatch/dispatch.dsl"));
+			builder.addPackage(desc);
+		}
+
+		ruleBase.addPackage(builder.getPackage());
+
+		wm = ruleBase.newStatefulSession();
+		
+		System.out.println("Created WM");
+
+	}
+	
+	public FactHandle insert(Object o) throws Exception {
+		return wm.insert(o);
+	}
+	
+	public void fireAllRules() throws Exception {
+		wm.fireAllRules();
+	}
+
+	private Reader getReader(String resourceName) {
+		return new InputStreamReader(getClass().getResourceAsStream(
+				resourceName));
+	}
+
+	
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/DispatchWrapper.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/EligibleWorker.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/EligibleWorker.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/EligibleWorker.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,52 @@
+package benchmarks.dispatch.fact.derived;
+
+import benchmarks.dispatch.fact.independent.Worker;
+
+public class EligibleWorker {
+	
+	private String            workerId;
+	
+	public EligibleWorker(Worker w){
+		this.workerId = w.getWorkerId();
+	}
+
+	public String getWorkerId() {
+		return workerId;
+	}
+
+	public void setWorkerId(String workerId) {
+		this.workerId = workerId;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result
+				+ ((workerId == null) ? 0 : workerId.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		final EligibleWorker other = (EligibleWorker) obj;
+		if (workerId == null) {
+			if (other.workerId != null)
+				return false;
+		} else if (!workerId.equals(other.workerId))
+			return false;
+		return true;
+	}
+	
+	
+	
+	
+	
+	
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/EligibleWorker.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/MaxRadius.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/MaxRadius.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/MaxRadius.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,59 @@
+package benchmarks.dispatch.fact.derived;
+
+import java.io.Serializable;
+
+import benchmarks.dispatch.fact.independent.Job;
+
+public class MaxRadius implements Serializable {
+	
+	private static final long serialVersionUID = 1L;
+	
+	private String jobId;
+	private Double maxRadius;
+
+	public MaxRadius(Job job) {
+		this.jobId = job.getJobId();
+	}
+
+	public String getJobId() {
+		return jobId;
+	}
+
+	public void setJobId(String jobId) {
+		this.jobId = jobId;
+	}
+
+	public Double getMaxRadius() {
+		return maxRadius;
+	}
+
+	public void setMaxRadius(Double maxRadius) {
+		this.maxRadius = maxRadius;
+	}
+
+	@Override
+	public int hashCode() {
+		final int prime = 31;
+		int result = 1;
+		result = prime * result + ((jobId == null) ? 0 : jobId.hashCode());
+		return result;
+	}
+
+	@Override
+	public boolean equals(Object obj) {
+		if (this == obj)
+			return true;
+		if (obj == null)
+			return false;
+		if (getClass() != obj.getClass())
+			return false;
+		final MaxRadius other = (MaxRadius) obj;
+		if (jobId == null) {
+			if (other.jobId != null)
+				return false;
+		} else if (!jobId.equals(other.jobId))
+			return false;
+		return true;
+	}
+
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/fact/derived/MaxRadius.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/AbstractDispatchTest.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/AbstractDispatchTest.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/AbstractDispatchTest.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,68 @@
+package benchmarks.dispatch.test;
+
+import java.util.Date;
+import java.util.Iterator;
+
+import junit.framework.TestCase;
+
+import org.drools.FactHandle;
+import org.drools.ObjectFilter;
+import org.drools.WorkingMemory;
+
+import benchmarks.dispatch.DispatchWrapper;
+import benchmarks.dispatch.fact.independent.DispatchState;
+
+public class AbstractDispatchTest extends TestCase {
+
+	protected WorkingMemory wm;
+	protected FactHandle dispatchStateFactHandle;
+	protected DispatchState ds;
+
+	public void setUp() throws Exception {
+		DispatchWrapper db = new DispatchWrapper();
+		wm = db.getWM();
+
+		ds = new DispatchState();
+		ds.setCurrentTime(new Date());
+		dispatchStateFactHandle = wm.insert(ds);
+		
+		wm.fireAllRules();
+	}
+
+	protected void incrementDSTime(int minutes) {
+		DispatchState ds = (DispatchState) wm
+				.getObject(dispatchStateFactHandle);
+		Date newTime = new Date(ds.getCurrentTime().getTime() + 1000 * 60
+				* minutes);
+		ds.setCurrentTime(newTime);
+		wm.update(dispatchStateFactHandle, ds);
+	}
+
+	protected void assertFactExists(Class factClass, String message) {
+		assertTrue(message, hasFact(factClass));
+	}
+
+	protected void assertFactAbsent(Class factClass, String message) {
+		assertFalse(message, hasFact(factClass));
+
+	}
+	
+	private boolean hasFact(Class factClass){
+		Iterator it = wm.iterateObjects(new TypeFilter(factClass));
+		return it.hasNext();
+	}
+
+	private static class TypeFilter implements ObjectFilter {
+
+		Class c;
+
+		public TypeFilter(Class c) {
+			this.c = c;
+		}
+
+		public boolean accept(Object object) {
+			return object.getClass().equals(c);
+		}
+
+	}
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/AbstractDispatchTest.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/DispatchTestSuite.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/DispatchTestSuite.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/DispatchTestSuite.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,18 @@
+package benchmarks.dispatch.test;
+
+import junit.framework.JUnit4TestAdapter;
+import junit.framework.Test;
+
+import org.junit.runner.RunWith;
+import org.junit.runners.AllTests;
+import org.junit.runners.Suite;
+
+
+ at RunWith(Suite.class)
+ at Suite.SuiteClasses({TestLogicalTopTier.class, TestEligibilityExclusions.class, TestDerivations.class, TestWorkerEligibility.class, TestScoring.class, TestScoreManagement.class})
+public class DispatchTestSuite {
+
+	public static Test suite() {
+		return new JUnit4TestAdapter(AllTests.class);
+		}
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/DispatchTestSuite.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestDerivations.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestDerivations.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestDerivations.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,180 @@
+package benchmarks.dispatch.test;
+
+import java.util.Date;
+
+import org.drools.FactHandle;
+import org.drools.QueryResult;
+import org.drools.QueryResults;
+
+import benchmarks.dispatch.fact.derived.DateWorkerInfo;
+import benchmarks.dispatch.fact.derived.DecimalInfo;
+import benchmarks.dispatch.fact.derived.Info;
+import benchmarks.dispatch.fact.derived.PositionWorkerInfo;
+import benchmarks.dispatch.fact.derived.WorkerInfo;
+import benchmarks.dispatch.fact.independent.Job;
+import benchmarks.dispatch.fact.independent.VehicleSize;
+import benchmarks.dispatch.fact.independent.Worker;
+import benchmarks.dispatch.fact.independent.WorkerPosition;
+import benchmarks.dispatch.function.Helper;
+
+public class TestDerivations extends AbstractDispatchTest {
+	public void testTimeAvailableWhenNotOnJob() throws Exception {
+		Worker w = new Worker();
+		w.setWorkerId("X");
+		w.setStatus(Worker.Status.WAITING_FOR_JOB);
+
+		FactHandle workerFactHandle = wm.insert(w);
+
+		wm.fireAllRules();
+
+		WorkerInfo wi = getWorkerInfo("X",
+				WorkerInfo.Type.TIME_AVAILABLE_FOR_DISPATCH);
+
+		assertNotNull(wi);
+
+		DateWorkerInfo dwi = (DateWorkerInfo) wi;
+
+		assertTrue(dwi.getValue().equals(ds.getCurrentTime()));
+
+		// Position
+		WorkerPosition wp = new WorkerPosition();
+		wp.setLatitude(-100D);
+		wp.setLongitude(-100D);
+		wp.setWorkerId("X");
+		wm.insert(wp);
+
+		wm.fireAllRules();
+
+		PositionWorkerInfo pwi = (PositionWorkerInfo) getWorkerInfo("X",
+				WorkerInfo.Type.POSITION_AVAILABLE_FOR_DISPATCH);
+
+		assertNotNull(pwi);
+		assertTrue(pwi.getLatitude().equals(-100D));
+		assertTrue(pwi.getLongitude().equals(-100D));
+
+		// Clean up
+		wm.retract(workerFactHandle);
+		// Position removed automatically
+		wm.fireAllRules();
+	}
+
+	public void testTimeAvailableWhenOnJob() throws Exception {
+		Worker w = new Worker();
+		w.setWorkerId("X");
+		w.setCurrentJobLatitude(-50D);
+		w.setCurrentJobLongitude(-50D);
+		Date avail = new Date(ds.getCurrentTime().getTime() + 1000 * 60 * 60
+				* 3);
+		w.setTimeAvailable(avail);
+		w.setStatus(Worker.Status.DISPATCHED_FOR_JOB);
+
+		FactHandle workerFactHandle = wm.insert(w);
+
+		wm.fireAllRules();
+
+		WorkerInfo wi = getWorkerInfo("X",
+				WorkerInfo.Type.TIME_AVAILABLE_FOR_DISPATCH);
+
+		assertNotNull(wi);
+
+		DateWorkerInfo dwi = (DateWorkerInfo) wi;
+
+		assertTrue(dwi.getValue().equals(avail));
+
+		// Position
+		WorkerPosition wp = new WorkerPosition();
+		wp.setLatitude(-100D);
+		wp.setLongitude(-100D);
+		wp.setWorkerId("X");
+		wm.insert(wp);
+
+		wm.fireAllRules();
+
+		PositionWorkerInfo pwi = (PositionWorkerInfo) getWorkerInfo("X",
+				WorkerInfo.Type.POSITION_AVAILABLE_FOR_DISPATCH);
+
+		assertNotNull(pwi);
+		assertTrue(pwi.getLatitude().equals(-50D));
+		assertTrue(pwi.getLongitude().equals(-50D));
+
+		// Clean up
+		wm.retract(workerFactHandle);
+		wm.fireAllRules();
+	}
+
+	public void testDistanceTimeMinutesLate() throws Exception {
+		Job job = new Job();
+		job.setJobId("X");
+		job.setStatus(Job.Status.PENDING);
+		job.setVehicleSizeRequired(VehicleSize.LARGE);
+		job.setStartTime(ds.getCurrentTime());
+		job.setLatitude(-99D);
+		job.setLongitude(-99D);
+
+		FactHandle jobHandle = wm.insert(job);
+
+		Worker w = new Worker();
+		w.setWorkerId("X");
+		w.setStatus(Worker.Status.WAITING_FOR_JOB);
+		w.setVehicleSize(VehicleSize.EXTRA_LARGE);
+
+		FactHandle workerFactHandle = wm.insert(w);
+
+		// Position
+		WorkerPosition wp = new WorkerPosition();
+		wp.setLatitude(-100D);
+		wp.setLongitude(-100D);
+		wp.setWorkerId("X");
+		wm.insert(wp);
+
+		wm.fireAllRules();
+
+		DecimalInfo distToJob = (DecimalInfo) getInfo("X", "X",
+				Info.Type.DISTANCE_TO_JOB_MILES);
+
+		// Should be 91.05578657535243
+		assertTrue(Math.abs(91.1 - distToJob.getValue()) < 0.1 );
+
+		DecimalInfo timeToJob = (DecimalInfo) getInfo("X", "X",
+				Info.Type.TIME_TO_JOB_MINUTES);
+
+		// TODO: What should this be?
+		assertTrue(Math.abs(121.4 - timeToJob.getValue()) < 0.1 );
+
+		DecimalInfo minLate = (DecimalInfo) getInfo("X", "X",
+				Info.Type.MINUTES_LATE_TO_JOB);
+	
+		// TODO: Should be same as minutesToJob
+		assertTrue(Math.abs(121.4 - minLate.getValue()) < 0.1 );
+
+		//TODO: Test the "already on job" case
+	}
+	
+	public void testOldPositions() throws Exception {
+		//TODO
+	}
+
+	private WorkerInfo getWorkerInfo(String workerId, WorkerInfo.Type type) {
+		QueryResults qrs = wm.getQueryResults("getWorkerInfo", new Object[] {
+				workerId, type });
+		if (qrs.size() == 0)
+			return null;
+		QueryResult qr = qrs.get(0);
+		if (qr.size() == 0)
+			return null;
+		return (WorkerInfo) qr.get(0);
+
+	}
+
+	private Info getInfo(String workerId, String jobId, Info.Type type) {
+		QueryResults qrs = wm.getQueryResults("getInfo", new Object[] {
+				workerId, jobId, type });
+		if (qrs.size() == 0)
+			return null;
+		QueryResult qr = qrs.get(0);
+		if (qr.size() == 0)
+			return null;
+		return (Info) qr.get(0);
+
+	}
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestDerivations.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestEligibilityExclusions.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestEligibilityExclusions.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestEligibilityExclusions.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,36 @@
+package benchmarks.dispatch.test;
+
+import java.util.Date;
+
+import org.drools.FactHandle;
+
+import benchmarks.dispatch.fact.derived.JobExclusion;
+import benchmarks.dispatch.fact.independent.Job;
+
+public class TestEligibilityExclusions extends AbstractDispatchTest {
+	public void testJobExclusion() throws Exception {
+		Job j = new Job();
+		j.setJobId("X");
+		j.setStatus(Job.Status.PENDING);
+		// Five days ahead
+		j
+				.setStartTime(new Date(new Date().getTime() + 1000 * 60 * 60
+						* 24 * 5));
+		FactHandle jobHandle = wm.insert(j);
+
+		wm.fireAllRules();
+
+		// Should have a JobExclusion
+		assertFactExists(JobExclusion.class, "Job Exclusion should exist");
+
+		j.setStatus(Job.Status.DISPATCHED);
+		// Should override exiting job since equals/hashtable based on jobId
+		wm.update(jobHandle, j);
+
+		wm.fireAllRules();
+
+		// Should not have a job exclusion
+		assertFactAbsent(JobExclusion.class,
+				"Job Exclusion should have been retracted");
+	}
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestEligibilityExclusions.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestLogicalTopTier.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestLogicalTopTier.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestLogicalTopTier.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,79 @@
+package benchmarks.dispatch.test;
+
+import java.util.Date;
+import java.util.Iterator;
+
+import org.drools.FactHandle;
+import org.drools.ObjectFilter;
+
+import benchmarks.dispatch.fact.derived.JobExclusion;
+import benchmarks.dispatch.fact.derived.MaxRadius;
+import benchmarks.dispatch.fact.independent.Job;
+import benchmarks.dispatch.fact.independent.Worker;
+import benchmarks.dispatch.fact.independent.WorkerPosition;
+
+public class TestLogicalTopTier extends AbstractDispatchTest {
+	
+
+	public void testJobLifecycle() throws Exception {
+		Job j = new Job();
+		j.setJobId("X");
+		j.setStatus(Job.Status.PENDING);
+		//Five days ahead
+		j.setStartTime(new Date());
+		FactHandle jobHandle = wm.insert(j);
+		
+		wm.fireAllRules();
+		
+		assertFactExists(Job.class, "Job should not have been retracted");
+		
+		//Should have a MaxRadius
+		assertFactExists(MaxRadius.class, "Should have a MaxRadius");
+	
+		j.setStatus(Job.Status.DISPATCHED);
+		wm.update(jobHandle, j);
+		wm.fireAllRules();
+		
+		
+		assertFactAbsent(Job.class, "Job should have been retracted");
+		assertFactAbsent(MaxRadius.class, "Max Radius should have been retracted");
+		
+		//This test should have cleaned up itself
+	}
+	
+	public void testWorkerLifecycle() throws Exception {
+		Worker w = new Worker();
+		w.setWorkerId("X");
+		w.setStatus(Worker.Status.WAITING_FOR_JOB);
+		
+		WorkerPosition wp = new WorkerPosition();
+		wp.setLatitude(-100D);
+		wp.setLongitude(-100D);
+		wp.setWorkerId("X");
+		
+		FactHandle workerFactHandle = wm.insert(w);
+		
+		wm.fireAllRules();
+		
+		assertFactExists(Worker.class, "Worker should not have been retracted");
+		
+		FactHandle positionFactHandle = wm.insert(wp);
+		
+		wm.fireAllRules();
+		
+		assertFactExists(WorkerPosition.class, "Worker position should not have been retracted");
+		
+		w.setStatus(Worker.Status.INACTIVE);
+		
+		wm.update(workerFactHandle, w);
+		
+		wm.fireAllRules();
+		
+		assertFactAbsent(Worker.class, "Worker should have been retracted");
+		
+		assertFactAbsent(WorkerPosition.class, "Worker position should have been retracted");
+		
+	}
+	
+	
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestLogicalTopTier.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoreManagement.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoreManagement.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoreManagement.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,5 @@
+package benchmarks.dispatch.test;
+
+public class TestScoreManagement extends AbstractDispatchTest {
+
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoreManagement.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoring.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoring.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoring.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,5 @@
+package benchmarks.dispatch.test;
+
+public class TestScoring extends AbstractDispatchTest {
+
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestScoring.java
___________________________________________________________________
Name: svn:eol-style
   + native

Added: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestWorkerEligibility.java
===================================================================
--- labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestWorkerEligibility.java	                        (rev 0)
+++ labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestWorkerEligibility.java	2007-11-29 20:52:15 UTC (rev 16917)
@@ -0,0 +1,5 @@
+package benchmarks.dispatch.test;
+
+public class TestWorkerEligibility extends AbstractDispatchTest {
+
+}


Property changes on: labs/jbossrules/contrib/benchmarks/src/java/benchmarks/dispatch/test/TestWorkerEligibility.java
___________________________________________________________________
Name: svn:eol-style
   + native




More information about the jboss-svn-commits mailing list