Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Nick2013-11-06 12:00:35 +0000
committerJudith Gull2013-11-11 08:27:19 +0000
commit96a3bcac2d010764a2eafe99f8cf8a49766f0e14 (patch)
tree82d2ee573955e549c1f005f345991d753a44c9f6
parentd52a606c0ad8a00c21d0bb3b78027232a35d77f9 (diff)
downloadorg.eclipse.scout.rt-96a3bcac2d010764a2eafe99f8cf8a49766f0e14.tar.gz
org.eclipse.scout.rt-96a3bcac2d010764a2eafe99f8cf8a49766f0e14.tar.xz
org.eclipse.scout.rt-96a3bcac2d010764a2eafe99f8cf8a49766f0e14.zip
bug 420783: Scheduler.getRunningJobs() returns all jobs instead of only the running ones
https://bugs.eclipse.org/bugs/show_bug.cgi?id=420783 m_runningJobs is used instead of m_availableJobs Change-Id: Iaef60e251b5b7f10c5d37cb39b39f6c61c4ec4ee Signed-off-by: Matthias Nick <Matthias.Nick@bsiag.com> Reviewed-on: https://git.eclipse.org/r/18128 Tested-by: Hudson CI Reviewed-by: Judith Gull <jgu@bsiag.com> IP-Clean: Judith Gull <jgu@bsiag.com>
-rw-r--r--org.eclipse.scout.commons/src/org/eclipse/scout/commons/StoppableThread.java4
-rw-r--r--org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/scheduler/SchedulerTest.java85
-rw-r--r--org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/scheduler/AbstractScheduler.java2
3 files changed, 88 insertions, 3 deletions
diff --git a/org.eclipse.scout.commons/src/org/eclipse/scout/commons/StoppableThread.java b/org.eclipse.scout.commons/src/org/eclipse/scout/commons/StoppableThread.java
index aefa8742c8..5a6531fe16 100644
--- a/org.eclipse.scout.commons/src/org/eclipse/scout/commons/StoppableThread.java
+++ b/org.eclipse.scout.commons/src/org/eclipse/scout/commons/StoppableThread.java
@@ -4,7 +4,7 @@
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
- *
+ *
* Contributors:
* BSI Business Systems Integration AG - initial API and implementation
******************************************************************************/
@@ -40,7 +40,7 @@ public class StoppableThread extends Thread {
}
public void setStopSignal() {
- m_stopSignal = true;// cannot be set back agoin once it is set
+ m_stopSignal = true;// cannot be set back again once it is set
interrupt();
}
diff --git a/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/scheduler/SchedulerTest.java b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/scheduler/SchedulerTest.java
new file mode 100644
index 0000000000..fa4378e1eb
--- /dev/null
+++ b/org.eclipse.scout.rt.server.test/src/org/eclipse/scout/rt/server/scheduler/SchedulerTest.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 2013 BSI Business Systems Integration AG.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * BSI Business Systems Integration AG - initial API and implementation
+ ******************************************************************************/
+package org.eclipse.scout.rt.server.scheduler;
+
+import java.util.Calendar;
+
+import javax.security.auth.Subject;
+
+import org.eclipse.scout.commons.exception.ProcessingException;
+import org.eclipse.scout.rt.server.testenvironment.TestEnvironmentServerSession;
+import org.eclipse.scout.rt.testing.server.runner.ScoutServerTestRunner;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+/**
+ * Tests for IScheduler
+ */
+@RunWith(ScoutServerTestRunner.class)
+public class SchedulerTest {
+ @Test
+ public void testRunningJobCount() throws ProcessingException, InterruptedException {
+ IScheduler scheduler = new Scheduler(new Subject(), TestEnvironmentServerSession.class, new Ticker(Calendar.SECOND));
+ scheduler.addJob(new JobAcceptTick("groupId", "jobIdAccept"));
+ scheduler.addJob(new JobDontAcceptTick("groupId", "jobIdDontAccept"));
+ Assert.assertEquals("JobCount must be 2", 2, scheduler.getJobCount());
+ scheduler.start();
+
+ Thread.sleep(1500); //now, JobAcceptTick should be running
+ Assert.assertEquals("JobAcceptTick should be running only", 1, scheduler.getRunningJobCount());
+ Assert.assertEquals("JobAcceptTick should be running only", 1, scheduler.getRunningJobs(null, null).size());
+ Assert.assertEquals("2 Jobs should be in the Scheduler", 2, scheduler.getAllJobs().size());
+ Assert.assertEquals("2 Jobs should be in the Scheduler", 2, scheduler.getJobCount());
+
+ Thread.sleep(1000); //now JobAcceptTick should be finished
+ Assert.assertEquals("No running job left", 0, scheduler.getRunningJobCount());
+ Assert.assertEquals("No running job left", 0, scheduler.getRunningJobs(null, null).size());
+ Assert.assertEquals("jobDontAccept should be in the Scheduler", 1, scheduler.getAllJobs().size());
+ Assert.assertEquals("jobDontAccept should be in the Scheduler", 1, scheduler.getJobCount());
+ scheduler.stop();
+ }
+}
+
+class JobAcceptTick extends AbstractSchedulerJob {
+
+ public JobAcceptTick(String groupId, String jobId) {
+ super(groupId, jobId);
+ }
+
+ @Override
+ public void run(IScheduler scheduler, TickSignal signal) throws ProcessingException {
+ try {
+ //wait 2 seconds
+ Thread.sleep(2000);
+ }
+ catch (InterruptedException e) {
+ e.printStackTrace();
+ }
+ setDisposed(true);
+ }
+
+ @Override
+ public boolean acceptTick(TickSignal signal) {
+ return true;
+ }
+}
+
+class JobDontAcceptTick extends AbstractSchedulerJob {
+ public JobDontAcceptTick(String groupId, String jobId) {
+ super(groupId, jobId);
+ }
+
+ @Override
+ public boolean acceptTick(TickSignal signal) {
+ return false;
+ }
+}
diff --git a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/scheduler/AbstractScheduler.java b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/scheduler/AbstractScheduler.java
index af800939df..f7f12114e5 100644
--- a/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/scheduler/AbstractScheduler.java
+++ b/org.eclipse.scout.rt.server/src/org/eclipse/scout/rt/server/scheduler/AbstractScheduler.java
@@ -248,7 +248,7 @@ public abstract class AbstractScheduler implements IScheduler {
public Collection<ISchedulerJob> getRunningJobs(String groupId, String jobId) {
synchronized (m_queueLock) {
ArrayList<ISchedulerJob> jobs = new ArrayList<ISchedulerJob>();
- for (ISchedulerJob job : m_availableJobs) {
+ for (ISchedulerJob job : m_runningJobs) {
if (matches(job, groupId, jobId)) {
jobs.add(job);
}

Back to the top