From 34bf63d7be7e95d234b9ab72e51907920845f68a Mon Sep 17 00:00:00 2001 From: OZGCloud <ozgcloud@mgm-tp.com> Date: Fri, 26 Jan 2024 18:28:04 +0100 Subject: [PATCH] Add parameter for performing user sync on start up. --- .../de/ozgcloud/user/sync/SyncScheduler.java | 15 +++++++++- .../src/main/resources/application.yaml | 3 +- .../ozgcloud/user/sync/SyncSchedulerTest.java | 28 +++++++++++++++++++ 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java b/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java index 0fe18bc2..251bf289 100644 --- a/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java +++ b/user-manager-server/src/main/java/de/ozgcloud/user/sync/SyncScheduler.java @@ -25,10 +25,14 @@ package de.ozgcloud.user.sync; import static io.quarkus.scheduler.Scheduled.ConcurrentExecution.*; -import de.ozgcloud.user.common.lock.LockService; import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.event.Observes; import jakarta.inject.Inject; +import org.eclipse.microprofile.config.inject.ConfigProperty; + +import de.ozgcloud.user.common.lock.LockService; +import io.quarkus.runtime.StartupEvent; import io.quarkus.scheduler.Scheduled; import lombok.extern.log4j.Log4j2; @@ -41,6 +45,15 @@ public class SyncScheduler { @Inject LockService syncLockService; + @ConfigProperty(name = "ozgcloud.usersync.onstart") + boolean syncUsers; + + void onStart(@Observes StartupEvent event) { + if (syncUsers) { + start(); + } + } + @Scheduled(every = "{ozgcloud.usersync.period}", concurrentExecution = SKIP) public void start() { if (syncLockService.isNotLocked()) { diff --git a/user-manager-server/src/main/resources/application.yaml b/user-manager-server/src/main/resources/application.yaml index 2b4d4d46..66db5ca6 100644 --- a/user-manager-server/src/main/resources/application.yaml +++ b/user-manager-server/src/main/resources/application.yaml @@ -46,4 +46,5 @@ ozgcloud: realm: by-kiel-dev client: alfa usersync: - period: "6h" \ No newline at end of file + period: "6h" + onstart: false \ No newline at end of file diff --git a/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java b/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java index 9d20a7e2..20accec4 100644 --- a/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java +++ b/user-manager-server/src/test/java/de/ozgcloud/user/sync/SyncSchedulerTest.java @@ -38,6 +38,7 @@ import org.mockito.Spy; import de.ozgcloud.user.common.lock.Lock; import de.ozgcloud.user.common.lock.LockService; +import io.quarkus.runtime.StartupEvent; class SyncSchedulerTest { @@ -124,4 +125,31 @@ class SyncSchedulerTest { verify(syncLockService).unlock(); } } + + @Nested + class OnStartTest { + + @Test + void shouldSyncUsers() { + doNothing().when(scheduler).start(); + scheduler.syncUsers = true; + + callScheduler(); + + verify(scheduler).start(); + } + + @Test + void shouldNOTSyncUsers() { + scheduler.syncUsers = false; + + callScheduler(); + + verify(scheduler, never()).start(); + } + + private void callScheduler() { + scheduler.onStart(new StartupEvent()); + } + } } \ No newline at end of file -- GitLab