Arik Hadas has uploaded a new change for review.

Change subject: core: executing squartz job immediately
......................................................................

core: executing squartz job immediately

This patch adds an option in the SchedulerUtil API to execute
scheduled job immediately.

SchedulerUtil#triggerJob method, that executes immediately the job with
the given id, was added.

Relevant unit test was added and set to be disabled like the rest of
the similar tests which already exists.

Change-Id: I4661691ae970e7517a4e3a43ae87736ebd1cc15f
Signed-off-by: Arik Hadas <[email protected]>
---
M 
backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java
M 
backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
M 
backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
3 files changed, 54 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/36/11636/1

diff --git 
a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java
 
b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java
index 61f9abb..d55d0ad 100644
--- 
a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java
+++ 
b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtil.java
@@ -100,6 +100,14 @@
     public void resumeJob(String jobId);
 
     /**
+     * Execute immediately the job with the given jobId
+     *
+     * @param jobId
+     *            - the id of the job to be triggered
+     */
+    public void triggerJob(String jobId);
+
+    /**
      * Halts the Scheduler, and cleans up all resources associated with the
      * Scheduler. The scheduler cannot be re-started.
      */
diff --git 
a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
 
b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
index 135ceed..590fe2c 100644
--- 
a/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
+++ 
b/backend/manager/modules/beans/scheduler/src/main/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartzImpl.java
@@ -378,6 +378,15 @@
 
     }
 
+    @Override
+    public void triggerJob(String jobId) {
+        try {
+            sched.triggerJob(jobKey(jobId, Scheduler.DEFAULT_GROUP));
+        } catch (SchedulerException se) {
+            log.error("failed to trigger a job with id=" + jobId, se);
+        }
+    }
+
     /**
      * Halts the Scheduler, and cleans up all resources associated with the
      * Scheduler. The scheduler cannot be re-started.
diff --git 
a/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
 
b/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
index 0cce2cd..d1e3014 100644
--- 
a/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
+++ 
b/backend/manager/modules/beans/scheduler/src/test/java/org/ovirt/engine/core/utils/timer/SchedulerUtilQuartsImplTest.java
@@ -224,6 +224,43 @@
         assertEquals("Number of scheduled jobs after resume should be higher 
than before", true, testResume);
     }
 
+    /*
+     * test periodic job remain periodic after triggering it to be executed 
immediately
+     */
+    // @Test
+    public void testTriggerJob() {
+        PrintJob pj = new PrintJob();
+        long startTestDate = System.currentTimeMillis();
+        System.out.println("Start Time=" + startTestDate);
+        String jobId =
+                scheduler.scheduleAFixedDelayJob(pj,
+                        "onTimer11",
+                        new Class[0],
+                        new Object[0],
+                        5,
+                        8,
+                        TimeUnit.MILLISECONDS);
+        try {
+            Thread.sleep(30);
+        } catch (InterruptedException ie) {
+            // log.error("sleep was interrupted", ie);
+        }
+        int numberOfRunBeforeTriggerting = messages.size();
+
+        scheduler.triggerJob(jobId);
+        try {
+            Thread.sleep(30);
+        } catch (InterruptedException ie) {
+            // log.error("sleep was interrupted", ie);
+        }
+        int numberOfRunLongAfterTriggering = messages.size();
+
+        // test if during resume the job was executed again
+        int diff = numberOfRunLongAfterTriggering - 
numberOfRunBeforeTriggerting;
+        boolean testTrigger = diff >= 2;
+        assertEquals("Number of messages should be at least 2  but was " + 
diff, true, testTrigger);
+    }
+
     // @Test
     @SuppressWarnings("unchecked")
     public void tryReflection() {


--
To view, visit http://gerrit.ovirt.org/11636
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I4661691ae970e7517a4e3a43ae87736ebd1cc15f
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Arik Hadas <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to