diff --git a/simulation/src/main/java/com/palantir/dialogue/core/ExternalDeterministicScheduler.java b/simulation/src/main/java/com/palantir/dialogue/core/ExternalDeterministicScheduler.java index 43c3d5f6e..80d19ffb9 100644 --- a/simulation/src/main/java/com/palantir/dialogue/core/ExternalDeterministicScheduler.java +++ b/simulation/src/main/java/com/palantir/dialogue/core/ExternalDeterministicScheduler.java @@ -26,15 +26,15 @@ import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.jmock.lib.concurrent.DeterministicScheduler; final class ExternalDeterministicScheduler implements ListeningScheduledExecutorService { - private final DeterministicScheduler deterministicExecutor; + private final NanosecondPrecisionDeterministicScheduler deterministicExecutor; private final ListeningScheduledExecutorService delegate; private final TestCaffeineTicker ticker; - ExternalDeterministicScheduler(DeterministicScheduler deterministicExecutor, TestCaffeineTicker ticker) { + ExternalDeterministicScheduler( + NanosecondPrecisionDeterministicScheduler deterministicExecutor, TestCaffeineTicker ticker) { this.deterministicExecutor = deterministicExecutor; this.delegate = MoreExecutors.listeningDecorator(deterministicExecutor); this.ticker = ticker; diff --git a/simulation/src/main/java/com/palantir/dialogue/core/NanosecondPrecisionDeterministicScheduler.java b/simulation/src/main/java/com/palantir/dialogue/core/NanosecondPrecisionDeterministicScheduler.java new file mode 100644 index 000000000..190cbf0fc --- /dev/null +++ b/simulation/src/main/java/com/palantir/dialogue/core/NanosecondPrecisionDeterministicScheduler.java @@ -0,0 +1,342 @@ +/* + * (c) Copyright 2020 Palantir Technologies Inc. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.palantir.dialogue.core; + +import java.util.Collection; +import java.util.List; +import java.util.concurrent.Callable; +import java.util.concurrent.Delayed; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executor; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; +import org.jmock.lib.concurrent.DeterministicExecutor; +import org.jmock.lib.concurrent.UnsupportedSynchronousOperationException; +import org.jmock.lib.concurrent.internal.DeltaQueue; + +/** + * Modified from https://github.com/jmock-developers/jmock-library/blob/498d09a015205f1370bf3855d59db033cf541c3c/jmock/src/main/java/org/jmock/lib/concurrent/DeterministicScheduler.java + * Modification is proposed upstream: + * https://github.com/jmock-developers/jmock-library/issues/172 + * https://github.com/jmock-developers/jmock-library/pull/173 + * + * Copyright (c) 2000-2017, jMock.org + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. Redistributions + * in binary form must reproduce the above copyright notice, this list of + * conditions and the following disclaimer in the documentation and/or + * other materials provided with the distribution. + * + * Neither the name of jMock nor the names of its contributors may be + * used to endorse or promote products derived from this software without + * specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * A {@link ScheduledExecutorService} that executes commands on the thread that calls + * {@link #runNextPendingCommand() runNextPendingCommand}, {@link #runUntilIdle() runUntilIdle} or + * {@link #tick(long, TimeUnit) tick}. Objects of this class can also be used + * as {@link Executor}s or {@link ExecutorService}s if you just want to control background execution + * and don't need to schedule commands, but it may be simpler to use a {@link DeterministicExecutor}. + * + * @author nat + */ +public final class NanosecondPrecisionDeterministicScheduler implements ScheduledExecutorService { + private final DeltaQueue> deltaQueue = new DeltaQueue<>(); + + /** + * Runs time forwards by a given duration, executing any commands scheduled for + * execution during that time period, and any background tasks spawned by the + * scheduled tasks. Therefore, when a call to tick returns, the executor + * will be idle. + */ + public void tick(long duration, TimeUnit timeUnit) { + long remaining = toTicks(duration, timeUnit); + + do { + remaining = deltaQueue.tick(remaining); + runUntilIdle(); + + } while (deltaQueue.isNotEmpty() && remaining > 0); + } + + /** + * Runs all commands scheduled to be executed immediately but does + * not tick time forward. + */ + public void runUntilIdle() { + while (!isIdle()) { + runNextPendingCommand(); + } + } + + /** + * Runs the next command scheduled to be executed immediately. + */ + public void runNextPendingCommand() { + ScheduledTask scheduledTask = deltaQueue.pop(); + + scheduledTask.run(); + + if (!scheduledTask.isCancelled() && scheduledTask.repeats()) { + deltaQueue.add(scheduledTask.repeatDelay, scheduledTask); + } + } + + /** + * Reports whether scheduler is "idle": has no commands pending immediate execution. + * + * @return true if there are no commands pending immediate execution, + * false if there are commands pending immediate execution. + */ + public boolean isIdle() { + return deltaQueue.isEmpty() || deltaQueue.delay() > 0; + } + + @Override + @SuppressWarnings("FutureReturnValueIgnored") + public void execute(Runnable command) { + schedule(command, 0, TimeUnit.SECONDS); + } + + @Override + public ScheduledFuture schedule(Runnable command, long delay, TimeUnit unit) { + ScheduledTask task = new ScheduledTask<>(command); + deltaQueue.add(toTicks(delay, unit), task); + return task; + } + + @Override + public ScheduledFuture schedule(Callable callable, long delay, TimeUnit unit) { + ScheduledTask task = new ScheduledTask(callable); + deltaQueue.add(toTicks(delay, unit), task); + return task; + } + + @Override + public ScheduledFuture scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) { + return scheduleWithFixedDelay(command, initialDelay, period, unit); + } + + @Override + public ScheduledFuture scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) { + ScheduledTask task = new ScheduledTask<>(toTicks(delay, unit), command); + deltaQueue.add(toTicks(initialDelay, unit), task); + return task; + } + + @Override + public boolean awaitTermination(long _timeout, TimeUnit _unit) { + throw blockingOperationsNotSupported(); + } + + @Override + public List> invokeAll(Collection> _tasks) { + throw blockingOperationsNotSupported(); + } + + @Override + public List> invokeAll(Collection> _tasks, long _timeout, TimeUnit _unit) + throws InterruptedException { + throw blockingOperationsNotSupported(); + } + + @Override + public T invokeAny(Collection> _tasks) { + throw blockingOperationsNotSupported(); + } + + @Override + public T invokeAny(Collection> _tasks, long _timeout, TimeUnit _unit) { + throw blockingOperationsNotSupported(); + } + + @Override + public boolean isShutdown() { + throw shutdownNotSupported(); + } + + @Override + public boolean isTerminated() { + throw shutdownNotSupported(); + } + + @Override + public void shutdown() { + throw shutdownNotSupported(); + } + + @Override + public List shutdownNow() { + throw shutdownNotSupported(); + } + + @Override + public Future submit(Callable callable) { + return schedule(callable, 0, TimeUnit.SECONDS); + } + + @Override + public Future submit(Runnable command) { + return submit(command, null); + } + + @Override + public Future submit(Runnable command, T result) { + return submit(new CallableRunnableAdapter(command, result)); + } + + private static final class CallableRunnableAdapter implements Callable { + private final Runnable runnable; + private final T result; + + CallableRunnableAdapter(Runnable runnable, T result) { + this.runnable = runnable; + this.result = result; + } + + @Override + public String toString() { + return runnable.toString(); + } + + @Override + public T call() { + runnable.run(); + return result; + } + } + + private final class ScheduledTask implements ScheduledFuture, Runnable { + private final long repeatDelay; + private final Callable command; + private boolean isCancelled = false; + private boolean isDone = false; + private T futureResult; + private Exception failure = null; + + ScheduledTask(Callable command) { + this.repeatDelay = -1; + this.command = command; + } + + ScheduledTask(Runnable command) { + this(-1, command); + } + + ScheduledTask(long repeatDelay, Runnable command) { + this.repeatDelay = repeatDelay; + this.command = new CallableRunnableAdapter(command, null); + } + + @Override + public String toString() { + return command.toString() + " repeatDelay=" + repeatDelay; + } + + public boolean repeats() { + return repeatDelay >= 0; + } + + @Override + public long getDelay(TimeUnit unit) { + return unit.convert(deltaQueue.delay(this), TimeUnit.NANOSECONDS); + } + + @Override + public int compareTo(Delayed _object) { + throw new UnsupportedOperationException("not supported"); + } + + @Override + public boolean cancel(boolean _mayInterruptIfRunning) { + isCancelled = true; + return deltaQueue.remove(this); + } + + @Override + public T get() throws ExecutionException { + if (!isDone) { + throw blockingOperationsNotSupported(); + } + + if (failure != null) { + throw new ExecutionException(failure); + } + + return futureResult; + } + + @Override + public T get(long _timeout, TimeUnit _unit) throws InterruptedException, ExecutionException, TimeoutException { + return get(); + } + + @Override + public boolean isCancelled() { + return isCancelled; + } + + @Override + public boolean isDone() { + return isDone; + } + + @Override + public void run() { + try { + futureResult = command.call(); + } catch (Exception e) { + failure = e; + } + isDone = true; + } + } + + private long toTicks(long duration, TimeUnit timeUnit) { + return TimeUnit.NANOSECONDS.convert(duration, timeUnit); + } + + private UnsupportedSynchronousOperationException blockingOperationsNotSupported() { + return new UnsupportedSynchronousOperationException("cannot perform blocking wait on a task scheduled on a " + + NanosecondPrecisionDeterministicScheduler.class.getName()); + } + + private UnsupportedOperationException shutdownNotSupported() { + return new UnsupportedOperationException("shutdown not supported"); + } +} diff --git a/simulation/src/main/java/com/palantir/dialogue/core/Simulation.java b/simulation/src/main/java/com/palantir/dialogue/core/Simulation.java index 6902483ac..22899ba21 100644 --- a/simulation/src/main/java/com/palantir/dialogue/core/Simulation.java +++ b/simulation/src/main/java/com/palantir/dialogue/core/Simulation.java @@ -21,7 +21,6 @@ import java.time.Duration; import java.util.Optional; import java.util.concurrent.TimeUnit; -import org.jmock.lib.concurrent.DeterministicScheduler; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -29,7 +28,8 @@ final class Simulation { private static final Logger log = LoggerFactory.getLogger(Simulation.class); - private final DeterministicScheduler deterministicExecutor = new DeterministicScheduler(); + private final NanosecondPrecisionDeterministicScheduler deterministicExecutor = + new NanosecondPrecisionDeterministicScheduler(); private final ListeningScheduledExecutorService listenableExecutor; private final TestCaffeineTicker ticker = new TestCaffeineTicker(); diff --git a/simulation/src/main/java/com/palantir/dialogue/core/TestCaffeineTicker.java b/simulation/src/main/java/com/palantir/dialogue/core/TestCaffeineTicker.java index b73879218..8092d9183 100644 --- a/simulation/src/main/java/com/palantir/dialogue/core/TestCaffeineTicker.java +++ b/simulation/src/main/java/com/palantir/dialogue/core/TestCaffeineTicker.java @@ -16,12 +16,10 @@ package com.palantir.dialogue.core; import com.github.benmanes.caffeine.cache.Ticker; -import java.util.concurrent.TimeUnit; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import com.palantir.logsafe.SafeArg; +import com.palantir.logsafe.exceptions.SafeIllegalStateException; final class TestCaffeineTicker implements Ticker { - private static final Logger log = LoggerFactory.getLogger(TestCaffeineTicker.class); private long nanos = 0; @@ -33,14 +31,8 @@ public long read() { void advanceTo(long newNanos) { if (newNanos < nanos) { long difference = nanos - newNanos; - // Preconditions.checkState( - // difference < Duration.ofMillis(1).toNanos(), - // "Large time rewind - this is likely a bug in the test harness", - // SafeArg.of("difference", difference)); - log.debug( - "Tried to rewind time by {} micros - no-op as this is deterministic and harmless", - TimeUnit.MICROSECONDS.convert(difference, TimeUnit.NANOSECONDS)); - return; + throw new SafeIllegalStateException( + "Time rewind - this is likely a bug in the test harness", SafeArg.of("difference", difference)); } nanos = newNanos; diff --git a/simulation/src/test/resources/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].png b/simulation/src/test/resources/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].png index 15548019a..38b8e58ef 100644 --- a/simulation/src/test/resources/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].png +++ b/simulation/src/test/resources/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:495ee0b778a0968cff0b286ac24b2898abf679b5eb61f0563578348900bbfa0e -size 101987 +oid sha256:544590651814f24731c8b20b934a035f45ec8edcf4e183b259b35bad2622b90c +size 92355 diff --git a/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png b/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png index e953d4d23..0f4cc4110 100644 --- a/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png +++ b/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:0481e5bd8e72cd0f4b378229197d6dcc1f9df52b662f19b4d6182163f4e8c764 -size 99213 +oid sha256:6ba167cc1d3d2f5480e6b89b70e6a9de004a01097e7518d6deb91a5e5203d2a4 +size 87967 diff --git a/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].png b/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].png index 7fc476523..5d63356e6 100644 --- a/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].png +++ b/simulation/src/test/resources/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1a29c87e19b3f08c8d659fada1fd6e12bbea1261074681c3ed14d64f534e47c3 -size 102242 +oid sha256:8af189fa9d39507830dd4f6deb52853a4f7b652cbb564046c8e5946af214824b +size 91691 diff --git a/simulation/src/test/resources/drastic_slowdown[UNLIMITED_ROUND_ROBIN].png b/simulation/src/test/resources/drastic_slowdown[UNLIMITED_ROUND_ROBIN].png index 06881d168..700ba8571 100644 --- a/simulation/src/test/resources/drastic_slowdown[UNLIMITED_ROUND_ROBIN].png +++ b/simulation/src/test/resources/drastic_slowdown[UNLIMITED_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b39bcf627f1b8902764dca84a2dc25526be77a9e56696c51d04b7e0d466c3a2b -size 100524 +oid sha256:12130d3d8abdf0be69b0ac380ab1186553641a62100c4aea2bfd5c6a1189f6eb +size 91230 diff --git a/simulation/src/test/resources/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png b/simulation/src/test/resources/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png index ac63323b2..f2644b2e9 100644 --- a/simulation/src/test/resources/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png +++ b/simulation/src/test/resources/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2a1c0c3059be43f133bf131c63bac2eec216841a34138d428f9ec6a6683ad307 -size 92687 +oid sha256:163d4d5cb42433865f93c6659c3f8140d604c2784e3f1d03fa59fda4fce83e93 +size 83186 diff --git a/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png b/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png index 31fb9e7fb..38ad62345 100644 --- a/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png +++ b/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:309cae90e57ec2731a11c1e0766083d5d22dde1a942e91acf3e75f8e5132cd8f -size 130838 +oid sha256:5d03a771e2f6483114423da50ce0f10b334f95f29e083c86bea0da44139f0f4f +size 121089 diff --git a/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].png b/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].png index a5cf9e794..eb9adec03 100644 --- a/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].png +++ b/simulation/src/test/resources/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:974abd25a74149c68e105e8014d311fb7e404a41741f11b818996d38fa803d3f -size 123940 +oid sha256:f8e0b626f0c61926893b6aa3ab6886c46df2c57877f14571913f9ac453f198f1 +size 114273 diff --git a/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png b/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png index 16ff2cda4..8f2094e3c 100644 --- a/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png +++ b/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9200e06aa4d624746fec7bfda79dbf4baa6fbff207985b81fd70417c71fa0532 -size 158215 +oid sha256:339207650525c6bb4edd68e4bc4e6432f7b9a9e30d17359bb57554e16ca50e01 +size 166886 diff --git a/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].png b/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].png index 9cc53e11d..c7710a6d1 100644 --- a/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].png +++ b/simulation/src/test/resources/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:523413bd6c50bb03f1a08a58364aaa0b050a2df7ecdd6fb12e1a558e1da2efdb -size 138637 +oid sha256:cc6e4c1795337f6864177f8add31d8cf79967db07d29b172cb3ce6b59ccc2168 +size 136461 diff --git a/simulation/src/test/resources/one_big_spike[UNLIMITED_ROUND_ROBIN].png b/simulation/src/test/resources/one_big_spike[UNLIMITED_ROUND_ROBIN].png index f7e14eee9..3f10ac7e6 100644 --- a/simulation/src/test/resources/one_big_spike[UNLIMITED_ROUND_ROBIN].png +++ b/simulation/src/test/resources/one_big_spike[UNLIMITED_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3c60c63bd8e08bf54a3fa7b566ff91f7b96a07ca79e04b85239a514741a11f3d -size 105069 +oid sha256:b1b41002fbda2aacd9700ebcc39de1fc5bb03739cd27f6be4fdcba3ede859910 +size 94162 diff --git a/simulation/src/test/resources/report.md b/simulation/src/test/resources/report.md index 77079fd5f..ed92d0d7b 100644 --- a/simulation/src/test/resources/report.md +++ b/simulation/src/test/resources/report.md @@ -5,33 +5,33 @@ all_nodes_500[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=50.0% client_mean=PT0.6S server_cpu=PT20M client_received=2000/2000 server_resps=2000 codes={200=1000, 500=1000} all_nodes_500[UNLIMITED_ROUND_ROBIN].txt: success=50.0% client_mean=PT0.6S server_cpu=PT20M client_received=2000/2000 server_resps=2000 codes={200=1000, 500=1000} black_hole[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=88.7% client_mean=PT0.600741433S server_cpu=PT17M43.8S client_received=1773/2000 server_resps=1773 codes={200=1773} - black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=89.9% client_mean=PT0.60015385S server_cpu=PT17M58.200391644S client_received=1797/2000 server_resps=1797 codes={200=1797} + black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=89.9% client_mean=PT0.600153632S server_cpu=PT17M58.2S client_received=1797/2000 server_resps=1797 codes={200=1797} black_hole[UNLIMITED_ROUND_ROBIN].txt: success=65.0% client_mean=PT0.6S server_cpu=PT12M59.4S client_received=1299/2000 server_resps=1299 codes={200=1299} - drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=100.0% client_mean=PT2.053277999S server_cpu=PT2H16M53.111999959S client_received=4000/4000 server_resps=4000 codes={200=4000} - drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=100.0% client_mean=PT2.069939083S server_cpu=PT2H17M59.756333311S client_received=4000/4000 server_resps=4000 codes={200=4000} - drastic_slowdown[UNLIMITED_ROUND_ROBIN].txt: success=100.0% client_mean=PT8.353421749S server_cpu=PT9H16M53.686999978S client_received=4000/4000 server_resps=4000 codes={200=4000} - fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=99.7% client_mean=PT0.080628355S server_cpu=PT5M2.35633333S client_received=3750/3750 server_resps=3750 codes={200=3739, 500=11} + drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=100.0% client_mean=PT2.053273999S server_cpu=PT2H16M53.095999975S client_received=4000/4000 server_resps=4000 codes={200=4000} + drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=100.0% client_mean=PT2.069938583S server_cpu=PT2H17M59.754333313S client_received=4000/4000 server_resps=4000 codes={200=4000} + drastic_slowdown[UNLIMITED_ROUND_ROBIN].txt: success=100.0% client_mean=PT8.353421333S server_cpu=PT9H16M53.685333313S client_received=4000/4000 server_resps=4000 codes={200=4000} + fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=99.7% client_mean=PT0.080628266S server_cpu=PT5M2.355999997S client_received=3750/3750 server_resps=3750 codes={200=3739, 500=11} fast_500s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=76.7% client_mean=PT0.055463644S server_cpu=PT3M27.988666346S client_received=3750/3750 server_resps=3750 codes={200=2876, 500=874} fast_500s_then_revert[UNLIMITED_ROUND_ROBIN].txt: success=76.7% client_mean=PT0.055463644S server_cpu=PT3M27.988666346S client_received=3750/3750 server_resps=3750 codes={200=2876, 500=874} - live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=52.7% client_mean=PT2.966949889S server_cpu=PT1H44M42.293598132S client_received=2500/2500 server_resps=2219 codes={200=1317, 500=902, Failed to make a request=281} - live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=52.4% client_mean=PT2.948137228S server_cpu=PT1H43M36.158312739S client_received=2500/2500 server_resps=2205 codes={200=1309, 500=896, Failed to make a request=295} + live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=52.6% client_mean=PT2.955154974S server_cpu=PT1H44M23.1S client_received=2500/2500 server_resps=2214 codes={200=1314, 500=900, Failed to make a request=286} + live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=52.2% client_mean=PT2.945905483S server_cpu=PT1H43M25S client_received=2500/2500 server_resps=2202 codes={200=1306, 500=896, Failed to make a request=298} live_reloading[UNLIMITED_ROUND_ROBIN].txt: success=58.4% client_mean=PT2.8396S server_cpu=PT1H58M19S client_received=2500/2500 server_resps=2500 codes={200=1461, 500=1039} one_big_spike[CONCURRENCY_LIMITER_BLACKLIST_ROUND_ROBIN].txt: success=79.0% client_mean=PT1.478050977S server_cpu=PT1M59.71393673S client_received=1000/1000 server_resps=790 codes={200=790, Failed to make a request=210} - one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=81.5% client_mean=PT1.513189645S server_cpu=PT2M3.201278067S client_received=1000/1000 server_resps=815 codes={200=815, Failed to make a request=185} - one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=81.5% client_mean=PT1.522597206S server_cpu=PT2M3.304362213S client_received=1000/1000 server_resps=815 codes={200=815, Failed to make a request=185} - one_big_spike[UNLIMITED_ROUND_ROBIN].txt: success=99.7% client_mean=PT1.237475329S server_cpu=PT6M58.999629008S client_received=1000/1000 server_resps=2775 codes={200=997, 429=3} + one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=81.6% client_mean=PT1.512223628S server_cpu=PT2M2.4S client_received=1000/1000 server_resps=816 codes={200=816, Failed to make a request=184} + one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=81.6% client_mean=PT1.51102737S server_cpu=PT2M2.4S client_received=1000/1000 server_resps=816 codes={200=816, Failed to make a request=184} + one_big_spike[UNLIMITED_ROUND_ROBIN].txt: success=99.4% client_mean=PT1.219659027S server_cpu=PT6M55.5S client_received=1000/1000 server_resps=2770 codes={200=994, 429=6} one_endpoint_dies_on_each_server[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=63.8% client_mean=PT0.6S server_cpu=PT25M client_received=2500/2500 server_resps=2500 codes={200=1594, 500=906} one_endpoint_dies_on_each_server[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=65.5% client_mean=PT0.6S server_cpu=PT25M client_received=2500/2500 server_resps=2500 codes={200=1638, 500=862} one_endpoint_dies_on_each_server[UNLIMITED_ROUND_ROBIN].txt: success=65.5% client_mean=PT0.6S server_cpu=PT25M client_received=2500/2500 server_resps=2500 codes={200=1638, 500=862} - simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=100.0% client_mean=PT1.000005994S server_cpu=PT3H40M0.07912201S client_received=13200/13200 server_resps=13200 codes={200=13200} - simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=100.0% client_mean=PT0.799939398S server_cpu=PT2H55M59.2000635S client_received=13200/13200 server_resps=13200 codes={200=13200} - simplest_possible_case[UNLIMITED_ROUND_ROBIN].txt: success=100.0% client_mean=PT0.799939398S server_cpu=PT2H55M59.2000635S client_received=13200/13200 server_resps=13200 codes={200=13200} - slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=100.0% client_mean=PT0.347163228S server_cpu=PT16M51.979778103S client_received=3000/3000 server_resps=3197 codes={200=3000} - slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=100.0% client_mean=PT0.750350226S server_cpu=PT36M25.214531422S client_received=3000/3000 server_resps=3411 codes={200=3000} - slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].txt: success=100.0% client_mean=PT1.429390697S server_cpu=PT1H9M30.062962081S client_received=3000/3000 server_resps=3798 codes={200=3000} -slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=1.2% client_mean=PT3.031938285S server_cpu=PT4H39M53.243529487S client_received=10000/10000 server_resps=4382 codes={200=120, 500=4262, Failed to make a request=5618} - slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=1.2% client_mean=PT3.028826999S server_cpu=PT4H42M11.906913053S client_received=10000/10000 server_resps=4436 codes={200=120, 500=4316, Failed to make a request=5564} - slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].txt: success=1.2% client_mean=PT3.974129199S server_cpu=PT11H2M21.291999888S client_received=10000/10000 server_resps=10000 codes={200=120, 500=9880} + simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=100.0% client_mean=PT1S server_cpu=PT3H40M client_received=13200/13200 server_resps=13200 codes={200=13200} + simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=100.0% client_mean=PT0.799939393S server_cpu=PT2H55M59.2S client_received=13200/13200 server_resps=13200 codes={200=13200} + simplest_possible_case[UNLIMITED_ROUND_ROBIN].txt: success=100.0% client_mean=PT0.799939393S server_cpu=PT2H55M59.2S client_received=13200/13200 server_resps=13200 codes={200=13200} + slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=100.0% client_mean=PT0.347088579S server_cpu=PT16M51.784999975S client_received=3000/3000 server_resps=3197 codes={200=3000} + slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=100.0% client_mean=PT0.751829432S server_cpu=PT36M29.478333313S client_received=3000/3000 server_resps=3412 codes={200=3000} + slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].txt: success=100.0% client_mean=PT1.430751581S server_cpu=PT1H9M34.321333313S client_received=3000/3000 server_resps=3799 codes={200=3000} +slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=1.2% client_mean=PT3.035744585S server_cpu=PT4H39M8.19999998S client_received=10000/10000 server_resps=4387 codes={200=120, 500=4267, Failed to make a request=5613} + slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=1.2% client_mean=PT3.000206742S server_cpu=PT4H39M51.19999998S client_received=10000/10000 server_resps=4417 codes={200=120, 500=4297, Failed to make a request=5583} + slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].txt: success=1.2% client_mean=PT3.974119999S server_cpu=PT11H2M21.19999998S client_received=10000/10000 server_resps=10000 codes={200=120, 500=9880} uncommon_flakes[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt: success=99.0% client_mean=PT0.000001S server_cpu=PT0.01S client_received=10000/10000 server_resps=10000 codes={200=9902, 500=98} uncommon_flakes[CONCURRENCY_LIMITER_ROUND_ROBIN].txt: success=99.0% client_mean=PT0.000001S server_cpu=PT0.01S client_received=10000/10000 server_resps=10000 codes={200=9900, 500=100} uncommon_flakes[UNLIMITED_ROUND_ROBIN].txt: success=99.0% client_mean=PT0.000001S server_cpu=PT0.01S client_received=10000/10000 server_resps=10000 codes={200=9900, 500=100} diff --git a/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png b/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png index 17fe7e64a..b505576e9 100644 --- a/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png +++ b/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:fde37bfa6507876e4d001355e433aa0f7418623c7397a104e0e52129bebba218 -size 86654 +oid sha256:6d5fba6e270dcb78db261dce55ee916b841a36a63773f6699c846acb20bca333 +size 73981 diff --git a/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].png b/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].png index 1844d7ec5..b4bdb8138 100644 --- a/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].png +++ b/simulation/src/test/resources/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf795f11c93288599a6d3a545dd0eaf13b90e95b7110173bef3379c4dd147ad5 -size 199959 +oid sha256:ddded0d7cfa5179e009cf92ad6ecce87b3475b15c810c9b2e537182bd32e76f1 +size 190215 diff --git a/simulation/src/test/resources/simplest_possible_case[UNLIMITED_ROUND_ROBIN].png b/simulation/src/test/resources/simplest_possible_case[UNLIMITED_ROUND_ROBIN].png index 3a513bccd..019dd584b 100644 --- a/simulation/src/test/resources/simplest_possible_case[UNLIMITED_ROUND_ROBIN].png +++ b/simulation/src/test/resources/simplest_possible_case[UNLIMITED_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:318efe90517b445e430050122ebed400b5551b7f139597a2e9ef3c6a4de31c7d -size 199412 +oid sha256:d83e8e97518be237d7142aa25b2861259db7a65a772d020deb932e6a2e60c518 +size 189884 diff --git a/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png b/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png index bddb18585..7ad851f4d 100644 --- a/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png +++ b/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:b12ce58f6003e38fdc5501419defb739aa0bfae8f5e233bd8b08882cfa788458 -size 96440 +oid sha256:3279316dd25c0d54b4a814db38f3cafe9363286fd40618f6b71d91b34e1509b1 +size 86308 diff --git a/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].png b/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].png index c515767ab..e39bf0631 100644 --- a/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].png +++ b/simulation/src/test/resources/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4c64b86e6235f8cef362cedc360bdf9d45fb89e5f0998cf6c7db287fe6c0e469 -size 100493 +oid sha256:62d8dc4cfcd3fa3ae9aa5fd4d48a25784c63b0a5c4e4ca1379fadb6a2dd18ad4 +size 91682 diff --git a/simulation/src/test/resources/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].png b/simulation/src/test/resources/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].png index 9260c772e..490e6b059 100644 --- a/simulation/src/test/resources/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].png +++ b/simulation/src/test/resources/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:bf67020574a90d7162cbfd12e6da737543b7bca0162bd9f1f889b71356918204 -size 97078 +oid sha256:a5e6a827b9aa6c0a959d71c76020b53251445786834705415afb6224642af0dc +size 89080 diff --git a/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png b/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png index b991abc5d..895581260 100644 --- a/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png +++ b/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:137428646083b6a7b4bfaaf34bf8cba0f7f055aeb7bfac96b293d8bedac31dd7 -size 129805 +oid sha256:11327d54b56a141c35ff2f549808fefc09de6b627d6b46ad63d17e1cf926c087 +size 120295 diff --git a/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].png b/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].png index 7999d954e..1d68db0ec 100644 --- a/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].png +++ b/simulation/src/test/resources/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3a9c8262245fba9d51ee5f1ec23ef644cdc9d4c784ad2629ce2aebb82c096931 -size 118132 +oid sha256:cc3d32c8af291eb80e72eccee828e6f8554b55cb75d687a18e596b61a1d514f3 +size 107985 diff --git a/simulation/src/test/resources/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].png b/simulation/src/test/resources/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].png index a616ab864..4e676e93f 100644 --- a/simulation/src/test/resources/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].png +++ b/simulation/src/test/resources/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].png @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:46ffa38dc90006b00254b71a6ffc7bef5710d0d2b8f9281a30c5938649604368 -size 110267 +oid sha256:259a3b4fdc0817e3ac71b1fd7252a158675b3f2ac84a2c6c9d27b467c9c83a65 +size 101462 diff --git a/simulation/src/test/resources/txt/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].txt index 016b0a1dc..c4f9ffaa6 100644 --- a/simulation/src/test/resources/txt/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/black_hole[CONCURRENCY_LIMITER_ROUND_ROBIN].txt @@ -1 +1 @@ -success=89.9% client_mean=PT0.60015385S server_cpu=PT17M58.200391644S client_received=1797/2000 server_resps=1797 codes={200=1797} \ No newline at end of file +success=89.9% client_mean=PT0.600153632S server_cpu=PT17M58.2S client_received=1797/2000 server_resps=1797 codes={200=1797} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt b/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt index 59465c642..d7c644087 100644 --- a/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt +++ b/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt @@ -1 +1 @@ -success=100.0% client_mean=PT2.053277999S server_cpu=PT2H16M53.111999959S client_received=4000/4000 server_resps=4000 codes={200=4000} \ No newline at end of file +success=100.0% client_mean=PT2.053273999S server_cpu=PT2H16M53.095999975S client_received=4000/4000 server_resps=4000 codes={200=4000} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].txt index 6812e4deb..c7d41e1dc 100644 --- a/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/drastic_slowdown[CONCURRENCY_LIMITER_ROUND_ROBIN].txt @@ -1 +1 @@ -success=100.0% client_mean=PT2.069939083S server_cpu=PT2H17M59.756333311S client_received=4000/4000 server_resps=4000 codes={200=4000} \ No newline at end of file +success=100.0% client_mean=PT2.069938583S server_cpu=PT2H17M59.754333313S client_received=4000/4000 server_resps=4000 codes={200=4000} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/drastic_slowdown[UNLIMITED_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/drastic_slowdown[UNLIMITED_ROUND_ROBIN].txt index a129c4e00..6e1fec3e3 100644 --- a/simulation/src/test/resources/txt/drastic_slowdown[UNLIMITED_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/drastic_slowdown[UNLIMITED_ROUND_ROBIN].txt @@ -1 +1 @@ -success=100.0% client_mean=PT8.353421749S server_cpu=PT9H16M53.686999978S client_received=4000/4000 server_resps=4000 codes={200=4000} \ No newline at end of file +success=100.0% client_mean=PT8.353421333S server_cpu=PT9H16M53.685333313S client_received=4000/4000 server_resps=4000 codes={200=4000} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt b/simulation/src/test/resources/txt/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt index 5fa650be6..8077268c6 100644 --- a/simulation/src/test/resources/txt/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt +++ b/simulation/src/test/resources/txt/fast_500s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt @@ -1 +1 @@ -success=99.7% client_mean=PT0.080628355S server_cpu=PT5M2.35633333S client_received=3750/3750 server_resps=3750 codes={200=3739, 500=11} \ No newline at end of file +success=99.7% client_mean=PT0.080628266S server_cpu=PT5M2.355999997S client_received=3750/3750 server_resps=3750 codes={200=3739, 500=11} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt b/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt index d5ff6ce77..461c96f09 100644 --- a/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt +++ b/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt @@ -1 +1 @@ -success=52.7% client_mean=PT2.966949889S server_cpu=PT1H44M42.293598132S client_received=2500/2500 server_resps=2219 codes={200=1317, 500=902, Failed to make a request=281} \ No newline at end of file +success=52.6% client_mean=PT2.955154974S server_cpu=PT1H44M23.1S client_received=2500/2500 server_resps=2214 codes={200=1314, 500=900, Failed to make a request=286} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].txt index 7920564ec..dc8015707 100644 --- a/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/live_reloading[CONCURRENCY_LIMITER_ROUND_ROBIN].txt @@ -1 +1 @@ -success=52.4% client_mean=PT2.948137228S server_cpu=PT1H43M36.158312739S client_received=2500/2500 server_resps=2205 codes={200=1309, 500=896, Failed to make a request=295} \ No newline at end of file +success=52.2% client_mean=PT2.945905483S server_cpu=PT1H43M25S client_received=2500/2500 server_resps=2202 codes={200=1306, 500=896, Failed to make a request=298} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt b/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt index 009160660..005182b7a 100644 --- a/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt +++ b/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt @@ -1 +1 @@ -success=81.5% client_mean=PT1.513189645S server_cpu=PT2M3.201278067S client_received=1000/1000 server_resps=815 codes={200=815, Failed to make a request=185} \ No newline at end of file +success=81.6% client_mean=PT1.512223628S server_cpu=PT2M2.4S client_received=1000/1000 server_resps=816 codes={200=816, Failed to make a request=184} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].txt index bc5ea68e5..ec19e63d7 100644 --- a/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/one_big_spike[CONCURRENCY_LIMITER_ROUND_ROBIN].txt @@ -1 +1 @@ -success=81.5% client_mean=PT1.522597206S server_cpu=PT2M3.304362213S client_received=1000/1000 server_resps=815 codes={200=815, Failed to make a request=185} \ No newline at end of file +success=81.6% client_mean=PT1.51102737S server_cpu=PT2M2.4S client_received=1000/1000 server_resps=816 codes={200=816, Failed to make a request=184} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/one_big_spike[UNLIMITED_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/one_big_spike[UNLIMITED_ROUND_ROBIN].txt index 2cf5f2f31..cfbd9a749 100644 --- a/simulation/src/test/resources/txt/one_big_spike[UNLIMITED_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/one_big_spike[UNLIMITED_ROUND_ROBIN].txt @@ -1 +1 @@ -success=99.7% client_mean=PT1.237475329S server_cpu=PT6M58.999629008S client_received=1000/1000 server_resps=2775 codes={200=997, 429=3} \ No newline at end of file +success=99.4% client_mean=PT1.219659027S server_cpu=PT6M55.5S client_received=1000/1000 server_resps=2770 codes={200=994, 429=6} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt b/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt index d3e8c5024..3d6476b6e 100644 --- a/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt +++ b/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt @@ -1 +1 @@ -success=100.0% client_mean=PT1.000005994S server_cpu=PT3H40M0.07912201S client_received=13200/13200 server_resps=13200 codes={200=13200} \ No newline at end of file +success=100.0% client_mean=PT1S server_cpu=PT3H40M client_received=13200/13200 server_resps=13200 codes={200=13200} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].txt index 71f58f138..68dc39802 100644 --- a/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/simplest_possible_case[CONCURRENCY_LIMITER_ROUND_ROBIN].txt @@ -1 +1 @@ -success=100.0% client_mean=PT0.799939398S server_cpu=PT2H55M59.2000635S client_received=13200/13200 server_resps=13200 codes={200=13200} \ No newline at end of file +success=100.0% client_mean=PT0.799939393S server_cpu=PT2H55M59.2S client_received=13200/13200 server_resps=13200 codes={200=13200} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/simplest_possible_case[UNLIMITED_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/simplest_possible_case[UNLIMITED_ROUND_ROBIN].txt index 71f58f138..68dc39802 100644 --- a/simulation/src/test/resources/txt/simplest_possible_case[UNLIMITED_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/simplest_possible_case[UNLIMITED_ROUND_ROBIN].txt @@ -1 +1 @@ -success=100.0% client_mean=PT0.799939398S server_cpu=PT2H55M59.2000635S client_received=13200/13200 server_resps=13200 codes={200=13200} \ No newline at end of file +success=100.0% client_mean=PT0.799939393S server_cpu=PT2H55M59.2S client_received=13200/13200 server_resps=13200 codes={200=13200} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt b/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt index d03e06e71..3d6498dfa 100644 --- a/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt +++ b/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt @@ -1 +1 @@ -success=100.0% client_mean=PT0.347163228S server_cpu=PT16M51.979778103S client_received=3000/3000 server_resps=3197 codes={200=3000} \ No newline at end of file +success=100.0% client_mean=PT0.347088579S server_cpu=PT16M51.784999975S client_received=3000/3000 server_resps=3197 codes={200=3000} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].txt index 5c835361f..a82f80b11 100644 --- a/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/slow_503s_then_revert[CONCURRENCY_LIMITER_ROUND_ROBIN].txt @@ -1 +1 @@ -success=100.0% client_mean=PT0.750350226S server_cpu=PT36M25.214531422S client_received=3000/3000 server_resps=3411 codes={200=3000} \ No newline at end of file +success=100.0% client_mean=PT0.751829432S server_cpu=PT36M29.478333313S client_received=3000/3000 server_resps=3412 codes={200=3000} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].txt index d8a239836..190577253 100644 --- a/simulation/src/test/resources/txt/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/slow_503s_then_revert[UNLIMITED_ROUND_ROBIN].txt @@ -1 +1 @@ -success=100.0% client_mean=PT1.429390697S server_cpu=PT1H9M30.062962081S client_received=3000/3000 server_resps=3798 codes={200=3000} \ No newline at end of file +success=100.0% client_mean=PT1.430751581S server_cpu=PT1H9M34.321333313S client_received=3000/3000 server_resps=3799 codes={200=3000} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt b/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt index dae6b3f34..3db40be0e 100644 --- a/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt +++ b/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_PIN_UNTIL_ERROR].txt @@ -1 +1 @@ -success=1.2% client_mean=PT3.031938285S server_cpu=PT4H39M53.243529487S client_received=10000/10000 server_resps=4382 codes={200=120, 500=4262, Failed to make a request=5618} \ No newline at end of file +success=1.2% client_mean=PT3.035744585S server_cpu=PT4H39M8.19999998S client_received=10000/10000 server_resps=4387 codes={200=120, 500=4267, Failed to make a request=5613} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].txt index d2ea3b4b9..6d60347ed 100644 --- a/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/slowdown_and_error_thresholds[CONCURRENCY_LIMITER_ROUND_ROBIN].txt @@ -1 +1 @@ -success=1.2% client_mean=PT3.028826999S server_cpu=PT4H42M11.906913053S client_received=10000/10000 server_resps=4436 codes={200=120, 500=4316, Failed to make a request=5564} \ No newline at end of file +success=1.2% client_mean=PT3.000206742S server_cpu=PT4H39M51.19999998S client_received=10000/10000 server_resps=4417 codes={200=120, 500=4297, Failed to make a request=5583} \ No newline at end of file diff --git a/simulation/src/test/resources/txt/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].txt b/simulation/src/test/resources/txt/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].txt index 92b1cdc70..319ba6acb 100644 --- a/simulation/src/test/resources/txt/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].txt +++ b/simulation/src/test/resources/txt/slowdown_and_error_thresholds[UNLIMITED_ROUND_ROBIN].txt @@ -1 +1 @@ -success=1.2% client_mean=PT3.974129199S server_cpu=PT11H2M21.291999888S client_received=10000/10000 server_resps=10000 codes={200=120, 500=9880} \ No newline at end of file +success=1.2% client_mean=PT3.974119999S server_cpu=PT11H2M21.19999998S client_received=10000/10000 server_resps=10000 codes={200=120, 500=9880} \ No newline at end of file