diff --git a/sleepingBarber/src/main/kotlin/ac/at/uibk/dps/dapr/barber/customer/CustomerActorImpl.kt b/sleepingBarber/src/main/kotlin/ac/at/uibk/dps/dapr/barber/customer/CustomerActorImpl.kt index 35211ef..566323f 100644 --- a/sleepingBarber/src/main/kotlin/ac/at/uibk/dps/dapr/barber/customer/CustomerActorImpl.kt +++ b/sleepingBarber/src/main/kotlin/ac/at/uibk/dps/dapr/barber/customer/CustomerActorImpl.kt @@ -6,7 +6,9 @@ import io.dapr.actors.runtime.AbstractActor import io.dapr.actors.runtime.ActorRuntimeContext import io.dapr.client.DaprClient import io.dapr.client.DaprClientBuilder +import java.security.SecureRandom import java.util.concurrent.TimeUnit +import kotlin.random.Random import kotlin.time.Clock class CustomerActorImpl(runtimeContext: ActorRuntimeContext, id: ActorId) : @@ -15,6 +17,14 @@ class CustomerActorImpl(runtimeContext: ActorRuntimeContext, val client: DaprClient? = DaprClientBuilder().build() + private val seedGenerator = SecureRandom() + private val threadRng = + object : ThreadLocal() { + override fun initialValue(): Random { + return Random(seedGenerator.nextLong()) + } + } + var count = 0 override fun request() { @@ -23,6 +33,7 @@ class CustomerActorImpl(runtimeContext: ActorRuntimeContext, override fun full(data: Map) { measureEventTime(data) + Thread.sleep(randomAround(10, 2).toLong()) request() } @@ -53,4 +64,8 @@ class CustomerActorImpl(runtimeContext: ActorRuntimeContext, .timer("event.latency")!! .update((deltaNanos), TimeUnit.NANOSECONDS) } + + private fun randomAround(base: Int, delta: Int): Int { + return (base - delta..base + delta).random(threadRng.get()) + } }