Skip to content

Commit

Permalink
Remove race condition in test
Browse files Browse the repository at this point in the history
Because the scheduler runs on a different thread than the test, we must
ensure that we deliver the promise *after* the job has been deleted. We
do that by registering another trigger handler that runs *after* the
housekeeper registered in the default QuartzScheduling instance.
  • Loading branch information
jcrossley3 committed Mar 10, 2015
1 parent af7549f commit 51856eb
Showing 1 changed file with 13 additions and 3 deletions.
Expand Up @@ -16,6 +16,7 @@
(:require [clojure.test :refer :all])
(:import [org.projectodd.wunderboss Option WunderBoss]
[org.projectodd.wunderboss.scheduling Scheduling Scheduling$ScheduleOption]
org.quartz.listeners.TriggerListenerSupport
org.quartz.TriggerUtils
java.util.Date))

Expand Down Expand Up @@ -221,7 +222,16 @@
(is (empty? (.scheduledJobs default)))
(let [p (promise)
id "auto-unschedule"]
(.schedule default id #(deliver p :success) {})
(-> (.scheduler default)
.getListenerManager
(.addTriggerListener (proxy [TriggerListenerSupport] []
(getName [] id)
(triggerComplete [_ _ _]
(deliver p :success)))))
(.schedule default id #() {})
(is (= :success (deref p 1000 :failure)))
(is (false? (.unschedule default id))))
(is (empty? (.scheduledJobs default))))
(is (false? (.unschedule default id)))
(is (empty? (.scheduledJobs default)))
(-> (.scheduler default)
.getListenerManager
(.removeTriggerListener id))))

0 comments on commit 51856eb

Please sign in to comment.