[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