From 2c4fc6a0d4e3457508965006fa9f69f24c74c6cd Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Tue, 12 Mar 2024 13:49:10 -0500 Subject: [PATCH] CE-936 - Update start method to actually start schedulers; add stop & stopAsync --- .../core/scheduler/QScheduleManager.java | 26 ++++++++++++++++++- .../scheduler/simple/SimpleSchedulerTest.java | 14 +++++----- 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/QScheduleManager.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/QScheduleManager.java index 34302e23..3978def0 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/QScheduleManager.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/scheduler/QScheduleManager.java @@ -127,6 +127,31 @@ public class QScheduleManager // ensure that everything which should be scheduled is scheduled, in the appropriate scheduler // ///////////////////////////////////////////////////////////////////////////////////////////////// QContext.withTemporaryContext(new CapturedContext(qInstance, systemUserSessionSupplier.get()), () -> setupSchedules()); + + ////////////////////////// + // start each scheduler // + ////////////////////////// + schedulers.values().forEach(s -> s.start()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public void stop() + { + schedulers.values().forEach(s -> s.stop()); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public void stopAsync() + { + schedulers.values().forEach(s -> s.stopAsync()); } @@ -274,5 +299,4 @@ public class QScheduleManager return (scheduler); } - } diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/simple/SimpleSchedulerTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/simple/SimpleSchedulerTest.java index fca2dfaa..392cbac8 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/simple/SimpleSchedulerTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/scheduler/simple/SimpleSchedulerTest.java @@ -110,18 +110,18 @@ class SimpleSchedulerTest extends BaseTest BasicStep.counter = 0; - QScheduleManager qScheduleManager = QScheduleManager.initInstance(qInstance, () -> QContext.getQSession()); + QSession qSession = QContext.getQSession(); + QScheduleManager qScheduleManager = QScheduleManager.initInstance(qInstance, () -> qSession); qScheduleManager.start(); - SimpleScheduler simpleScheduler = SimpleScheduler.getInstance(qInstance); - simpleScheduler.setSchedulerName(TestUtils.SIMPLE_SCHEDULER_NAME); - simpleScheduler.setSessionSupplier(QSession::new); - simpleScheduler.start(); + ////////////////////////////////////////////////// + // give a moment for the job to run a few times // + ////////////////////////////////////////////////// SleepUtils.sleep(50, TimeUnit.MILLISECONDS); - simpleScheduler.stopAsync(); + qScheduleManager.stopAsync(); System.out.println("Ran: " + BasicStep.counter + " times"); - assertTrue(BasicStep.counter > 1, "Scheduled process should have ran at least twice"); + assertTrue(BasicStep.counter > 1, "Scheduled process should have ran at least twice (but only ran [" + BasicStep.counter + "] time(s)."); }