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 0fe18bc239a37c83b2b93c4c9bfc44ee913a55fd..251bf2896c82e6d6a4ead04ad10945a1d2d64439 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 2b4d4d46bbb8454c3a07367095923d2b59921254..66db5ca619d83538ae468aca8bf70474d8ad3e0a 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 9d20a7e2cfd3850669d10b185304cb7f2bb2f43c..20accec4f976e0defdf4f52c41a31bb1f9140d65 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