Package org.acemq.workloads.endurance
Class Endurance
java.lang.Object
org.acemq.workloads.endurance.Endurance
The leak drill: standing loads in every language, and every connection torn out from under all
of them, over and over, while the run watches what each process is holding rather than what it
is publishing.
Repetition rather than hours. What finds a leak is the number of times the leaking path runs, and in an AMQP client that path is connection recovery: a channel not closed, a consumer tag not forgotten, a reader thread left parked. A day of calm publishing runs it approximately never; this runs it every cycle.
The run: start or adopt the loads, warm up, take baseline readings, close every connection
once a cycle and read on a timer, cool down, take final readings, and judge with
Verdict. The report and readings are written as scripts/soak.sh wrote them, plus
a JSON report for the console.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceThe repeated recovery fault, and the connection count that proves it did something.static interfaceWhat the run is doing, for a console or a terminal.static final recordWhat the run found and where it wrote it. -
Constructor Summary
ConstructorsConstructorDescriptionEndurance(EnduranceConfig config, ProcessSampler sampler, Endurance.Fault fault, Endurance.Listener listener) -
Method Summary
Modifier and TypeMethodDescriptionstatic Endurance.FaultmanagementFault(EnduranceConfig config) run()Runs the soak.
-
Constructor Details
-
Endurance
public Endurance(EnduranceConfig config, ProcessSampler sampler, Endurance.Fault fault, Endurance.Listener listener)
-
-
Method Details
-
managementFault
- Returns:
- the fault through the management API: every connection the broker lists, closed.
rabbitmqctl close_all_connections --globaldid the same from inside a container; the API needs no container and no node name, and reaches the whole cluster from one.
-
run
public Endurance.Result run() throws ClientLauncher.LaunchException, InterruptedException, IOExceptionRuns the soak. Interrupting the calling thread stops it: the loads it started are stopped and the interrupt is rethrown.- Returns:
- the verdict and where it was written
- Throws:
ClientLauncher.LaunchException- if a load could not be startedInterruptedExceptionIOException
-