Are you testing distributed behavior – or just hammering endpoints?

Can your test suite catch what breaks between services – not just at the surface?
A 200 response confirms the API accepted the call — nothing more. Whether the message was consumed, the record written, or concurrent users corrupted shared state is a different question entirely.
Here’s how QALIPSIS helps QA engineers overcome the most critical testing challenges.
Why does your test suite stay green while the queue falls behind?
- The API accepts the request and returns 200. Meanwhile the message broker queue is backing up — the consumer service cannot keep pace under peak load. No test is watching the downstream side, so the queue keeps growing, processing falls further behind, and by the time someone notices, a large backlog has accumulated. The test suite showed green throughout.
- QALIPSIS models the message path as steps inside the scenario. The API call triggers first; then the Kafka or RabbitMQ plugin consumes the downstream message and a join operator correlates the original request with its observed outcome. If the message never arrives — or arrives outside the expected window — the assertion fails at the exact step, with an event recording when and why.
- Read more:
Which shared resource breaks when a thousand users write at the same time?
- The platform works correctly with one user. With hundreds of simultaneous writes to the same resource — inventory decrements, reservation commits, profile updates — silent data corruption appears. Race conditions only surface under concurrent load, and sequential test execution never reproduces them. They remain invisible until a promotional event brings them out in production against real customer data.
- QALIPSIS runs multiple minions through the same write path simultaneously under a realistic load profile. After each stage, the database plugin verifies that persisted records reflect the expected state — no duplicates, no dropped writes, no last-writer-wins overwrites. Join operators match each submitted request against its stored outcome, making divergences visible at the step level rather than in a post-incident audit.
- Read more:
Which step in the chain is silently eating your latency budget?
- Each individual service looks fast in isolation. But the user experience depends on a chain — authentication, entitlement check, content lookup, session creation — and the SLO applies to the whole sequence, not any single call. Without a scenario that exercises the chain under load, test coverage is a collection of unit benchmarks that says nothing about actual user experience at peak.
- QALIPSIS models the full journey as an ordered sequence of HTTP steps, reusing the same connection across steps within a single minion’s execution. Each step is instrumented with meters, and verify steps assert that time-to-last-byte stays within the SLO budget. Exported per-step latency distributions make it clear which step in the chain degrades first as load increases.
- Read more:
Did the last regression ship because the error rate stayed at zero?
- Load tests run in CI, the error rate stays at zero, and the build passes. A service degraded to ten times its normal latency on every request throughout the campaign, every call eventually resolved, and nothing failed the build. The regression shipped. Error rate is not a proxy for latency correctness or functional accuracy — it just means the server responded.
- QALIPSIS integrates into the build via the Gradle plugin. Assertion thresholds are defined per step — on latency percentiles, error rates, and functional outcome verification — and JUnit-style reports are exported for the pipeline to consume. Any breach fails the build with a report identifying the step, the failure type, and the violated assertion, giving the team an actionable signal rather than a binary exit code.
- Read more:
Why are your test results stuck inside the test tool?
- Test results live inside the test tool. The team’s dashboards run in Grafana over InfluxDB, or Kibana over Elasticsearch. After every campaign, someone manually extracts metrics or screenshots charts. Comparing performance across releases is guesswork, and overlaying test signals with infrastructure metrics to find correlations is simply not possible in that workflow.
- QALIPSIS exports step-level events and meters to the backends your team already operates — Graphite, Elasticsearch, Kafka, TimescaleDB/PostgreSQL, or InfluxDB. Every data point is tagged by campaign, scenario, step, and zone, making it possible to filter by test run, track regressions across releases, and correlate load test signals with infrastructure behaviour in the same dashboards your team uses every day.
- Read more:
Performance testing made for QA engineers
With QALIPSIS, you can:
Test event-driven, async architectures with ease
Scale load tests on demand
Simulate complete user journeys
Automate validation in every release cycle
What you need to know
- What QALIPSIS lets you do: A minion simulates a user/device and runs a complete scenario; you can define minion count in scenario configuration or override it at runtime.
Read more: QALIPSIS core concepts - Reference in the docs: Runtime override notes + autostart keys like
campaign.minions-count-per-scenarioandcampaign.minions-factor.
Read more: Execute QALIPSIS
- What QALIPSIS lets you do: Use plugin steps to produce/consume messages in scenarios (e.g., Kafka
kafka(), RabbitMQrabbitmq()and JMSjms()). - Reference in the docs: Check supported steps lists (
consume,produce) and example configurations (e.g.,concurrency()).
Read more: Apache Kafka plugin, RabbitMQ plugin and JMS plugin
- What QALIPSIS lets you do: Build scenarios as sequences of steps with dependencies and assertions that validate data exchanges, persistence, and durations; assertion failures are logged as QALIPSIS events.
Read more: QALIPSIS core concepts - Reference in the docs: Look for the “Scenarios / Steps / Assertions” sections and the operators list (including joining and error handling).
Read more: QALIPSIS core concepts
- What QALIPSIS lets you do: Reuse an HTTP or TCP connection across multiple steps using
httpWithortcpWith, where the same minions that ran the first HTTP/TCP step continue into the follow-up request step, with the same connection.
Read more: Testing a REST API with QALIPSIS - Reference in the docs: Look for
http+httpWith(...)in the REST quickstart, and the note that “the same minions” pass through thehttpWithstep.
Read more: Testing a REST API with QALIPSIS
- What QALIPSIS lets you do: Run campaigns via Gradle tasks (including custom
RunQalipsistasks) or trigger via CLI, REST API or GUI; docs include CI examples (Jenkins, GitHub Actions, GitLab CI, Travis). Be notified of the campaign results by Email or Slack notifications.
Read more: CI & CD and QALIPSIS Gradle plugin - Reference in the docs: Look for Gradle tasks like
qalipsisRunAllScenariosand the CI snippets showing./gradlew clean assemble ....
Read more:
- What QALIPSIS lets you do: Allocate scenario load across zones when triggering a campaign via REST API or GUI, using a per-scenario
zonesdistribution (percentages summing to 100%), and analyze exported data tagged by zone.
Read more: QALIPSIS REST API and Monitoring the test campaigns - Reference in the docs: Look for
zonesin the REST API campaign payload and “meters/events are tagged by … zone.”
Read more: QALIPSIS REST API
- What QALIPSIS lets you do: Get a default campaign report (results + messages) accessible via GUI or REST API; optionally enable live reporting in standalone mode; export JUnit-like reports for CI tooling. Optionally, export all the analytics data to systems you really know to integrate the results with your existing workflow.
Read more: Reporting and QALIPSIS core concepts - Reference in the docs: Look for REST endpoints like
GET /campaignsandGET /campaigns/{campaign-key}, and config flags likereport.export.console-live.enabledandreport.export.console.enabled.
Read more: Reporting
Can you stress-test distributed infrastructure and still see what is happening inside it?
Engineered for distributed load. Built for operational visibility.

Can you generate distributed load and observe your infrastructure while it is happening?
Frequent releases. Distributed systems. Complex integrations. In today’s fast-paced environments, testing can’t slow you down – but it can’t fall short either.
Here’s how QALIPSIS helps DevOps teams deliver reliable, high-performing software at scale.
Can your load generator keep up with the infrastructure it is supposed to stress?
- A single-machine load generator saturates its own network interface before it stresses the system under test. Running from one location also hides zone-level routing and latency differences that only appear when traffic arrives from multiple origins simultaneously — exactly the condition that causes degradation during a global traffic event.
- Deploy factories across the zones you control, assign each a
factory.zone, and trigger campaigns via the REST API with a per-scenario zone percentage split. The head orchestrates execution and collects results; factories inject load independently. Enable step-level monitoring on the steps that represent your critical service boundaries and export meters and events to your telemetry backend for live analysis during the run. - Read more:
What was your system doing at minute twelve of the load test?
- Most load tools produce an internal report you read when the run is over. But the questions that matter operationally — at what point did the queue start lagging, which zone saw latency diverge first, did the connection pool saturate before or after the error rate climbed — require time-series data correlated with your infrastructure metrics, in the same tool your team is already watching while the test runs.
- Enable monitoring per step —
monitoring { events = true },monitoring { meters = true }, ormonitoring { all() }— only where signal is needed, keeping data volume intentional. Export to Graphite, Elasticsearch, Kafka, TimescaleDB/PostgreSQL, or InfluxDB. Addfactory.tagsto carry environment, team, or project metadata through to every exported data point, so test runs are distinguishable in shared dashboards alongside production signals. - Read more:
How often does your infrastructure load test actually run?
- Infrastructure load tests that require manual setup and manual interpretation are not tests — they are experiments. They run infrequently, produce results no one has time to compare to the previous run, and get skipped entirely under release pressure. The value comes from running them repeatedly and automatically against a consistent baseline, exactly the way other pipeline stages work.
- Trigger campaigns programmatically via the REST API (
POST /campaigns) with parameterised payloads — minion counts, zone distributions, execution profiles — and retrieve results viaGET /campaigns/{campaign-key}to wire them into your pipeline logic. Schedule recurring campaigns (POST /campaigns/schedule) with time zone-aware recurrence for nightly or pre-release baseline runs. For Gradle-based pipelines, the Gradle plugin providesqalipsisRunAllScenariosor a customRunQalipsistask with JUnit report export alongside. - Read more:
QALIPSIS: Elevating software quality for DevOps teams
With QALIPSIS, your team can:
Detect bottlenecks
Database compatibility
Automate validation in your CI/CD
Release with confidence every
What you need to know
- What QALIPSIS lets you do:
- Choose a packaging and run mode that matches how you operate infra tests:
- Embed in a JVM project: embed QALIPSIS as a library and execute scenarios programmatically (standalone deployment only).
- Run as a Java archive (JAR): execute your assembled
*-qalipsis.jarwith Java. - Run from a distribution archive (ZIP): package a ZIP distribution (including scenarios/dependencies) and start via the
bin/launcher. - Run from a Docker image: package your project as an image and run with
docker runor in Kubernetes and OpenShift.
- Run as a Java archive (JAR): execute your assembled
- Independently of packaging, you can start QALIPSIS in standalone mode (single process), or cluster mode where nodes take a Head or Factory role. For cluster communication/synchronization, you can use low-latency messaging platforms such as Redis Pub/Sub and Kafka.
- Docs reference:
- Deployment Topologies: how to choose between standalone vs cluster, container vs host, and embedding in a JVM project.
Read more: Deployment topologies - Execute QALIPSIS: how to start from JAR, ZIP distribution, or Docker, and how to start head/factory roles.
Read more: Execute QALIPSIS - Core concepts: what head/factory nodes are and how factories can synchronize via Redis Pub/Sub and Kafka.
Read more: QALIPSIS core concepts
- Deployment Topologies: how to choose between standalone vs cluster, container vs host, and embedding in a JVM project.
- What QALIPSIS lets you do: Scale load horizontally while keeping a single orchestration and reporting control point. The Head orchestrates execution and reporting; Factory nodes host minions (simulated actors) that run scenarios; adding/removing factories expands capacity.
- Docs reference: The Core Concepts page explains the Head/Factory architecture, what minions are, and how scenarios relate to execution.
Read more: QALIPSIS core concepts
- What QALIPSIS lets you do: When you trigger a campaign via the REST API, you can provide a per-scenario zones distribution (percent-based split) so load is distributed and attributed by zone.
- Docs reference: The REST API page shows the campaign trigger payload, including how to set zones and other per-scenario runtime parameters.
Read more: QALIPSIS REST API
- What QALIPSIS lets you do: Stream monitoring data to your existing observability stack by enabling per-step monitoring (disabled by default, so you control volume) and activating one or more exporters. Supported export targets are:
- Elasticsearch
- Graphite
- InfluxDB
- TimescaleDB/PostgreSQL
- Apache Kafka
You can run zero to many simultaneously.
Each exporter lets you tune batching, publishing concurrency, and (for events) severity-level filtering. Custom factory tags (e.g. environment, team) are appended to all exported data for richer dashboard filtering. - Docs reference: The Monitoring Test Campaigns page covers enabling step-level monitoring, exporter activation, event-level filtering, and custom tagging. Each plugin page documents backend-specific configuration.
Read more: Monitoring Test Campaigns
- What QALIPSIS lets you do: Instrument runs as they happen by enabling monitoring per step (disabled by default per step, so you control volume). It supports two primitives:
- Meters: time-bucketed metrics (counters, timers, gauges, rates, throughputs) tagged by campaign/scenario/step/zone.
- Events: log-like records (timestamp, severity, name, values) tagged by campaign/scenario/step/zone.
- Docs reference: The Monitoring Test Campaigns page defines meters/events, how tags are applied, and how to enable monitoring on steps.
Read more: Monitoring the test campaigns
- What QALIPSIS lets you do: Export monitoring data to supported targets such as Graphite, Elasticsearch, Kafka, TimescaleDB/PostgreSQL, and InfluxDB. You can also add context via
factory.tagsso exported telemetry carries environment/team/project metadata. - Docs reference: The Monitoring Test Campaigns page lists supported exporters and shows how configuration and tagging works.
Read more: Monitoring the test campaigns
- What QALIPSIS lets you do: In standalone mode, QALIPSIS provides live reporting while tests run (enabled by default). You can disable it via
report.export.console-live.enabled: false. The GUI also provides a live-updated report with charts. - Docs reference: The Reporting page describes the default report and live console reporting options.
Read more: Reporting
- What QALIPSIS lets you do: Use the Head REST API (default port 8400) to run repeatable, parameterized campaigns without manual clicks:
- Trigger campaigns (
POST /campaigns) with runtime parameters like minion counts, optional zone splits, and execution profiles (e.g., staged ramps). - Schedule campaigns (
POST /campaigns/schedule) with hourly/daily/monthly recurrence and time zones. - Alternatively, the Gradle plugin lets you run scenarios directly as Gradle tasks, with ready-made examples for Jenkins and GitHub Actions.
An autostart mode stops all nodes after completion for clean CI/CD teardown.
- Trigger campaigns (
- Docs reference: The Automation, continuous integration and continuous deployment page documents endpoints, default port, request payloads, and scheduling options.
Read more: Automation, continuous integration and continuous deployment
- What QALIPSIS lets you do: Retrieve a default report including test results, execution time, and errors. Reports are accessible via GUI or REST API, and campaigns can be listed/retrieved via endpoints like
GET /campaignsandGET /campaigns/{campaign-key}. - Docs reference:
- The Reporting page describes what’s included in the default report and how reporting behaves.
Read more: Reporting - The REST API page shows how to query campaign runs and retrieve details.
Read more: QALIPSIS REST API
- The Reporting page describes what’s included in the default report and how reporting behaves.
How do you protect revenue and reputation when your platform is under pressure?
Turn performance risk into evidence: run repeatable load campaigns, quantify supported load vs. infrastructure size, and forecast operational cost with confidence – without “guess-and-overprovision.”

Can you make a go/no-go release decision with confidence?
Platforms fail under load in ways that only appear when every layer is stressed at once. By the time a peak event exposes the gap, the cost is real — and already paid.
Poor performance isn’t just technical – it’s a business liability. Here’s how QALIPSIS helps leaders make smarter, faster, and safer decisions.
What will your platform do when a million users arrive at once?
- A salary-day surge, a flash sale, a product launch — every predictable high-traffic event can expose weaknesses invisible at normal volumes. By the time an incident is declared, the damage is done: sessions dropped, transactions abandoned, support queues flooded, and engineering pulled away from roadmap work.
- QALIPSIS runs load campaigns that reproduce the exact traffic shape of those events — steep ramp-up, sustained maximum, tail-off — across the full system stack. Scenarios validate API availability, messaging throughput, and data consistency simultaneously, so a bottleneck anywhere in the chain surfaces before it reaches real users.
- Read more:
Why does it take days to find which service caused the incident?
- When a performance incident surfaces, the first question is always which service caused it. Without precise data from a load run that mirrors production conditions, the investigation is archaeology — combing through logs and metrics from a system already under distress, with engineers spending days narrowing down what went wrong where.
- QALIPSIS captures events and meters at the exact point in the scenario where failures occur, tagged by campaign, scenario, step, and zone. Results are accessible via the GUI or REST API, giving teams a precise starting point for resolution rather than a full-system audit.
- Read more:
How many releases shipped without a real performance check?
- Performance testing tends to become the gate that holds releases hostage: it runs late in the cycle, takes days to complete, and produces results that are hard to act on under pressure. Skipped once, it gets skipped again — and risk accumulates silently across releases until something breaks in production.
- QALIPSIS scenarios live alongside application code and execute automatically through CI/CD pipelines. Smoke tests run on every build; full load suites run on a nightly or weekly schedule. Any breach of an assertion threshold fails the build automatically with a report identifying exactly what failed and where — quality gates enforced without a manual step.
- Read more:
Are you overprovisioning because the last peak scared you?
- Infrastructure spending is often driven by incident memory. Teams overprovision defensively after a difficult peak, or underprovision and discover the limit in production. Neither approach produces a clear answer to how much infrastructure is actually needed for the next growth step — or what the cost of that headroom will be.
- Repeatable load campaigns under progressively increasing load produce concrete correlation between infrastructure configuration and supported concurrent capacity. Cluster mode scales load injection by adding factory nodes, making it possible to test at the scale you plan to operate before committing to the infrastructure cost.
- Read more:
Why are users in some regions converting less than others?
- A service deployed in a single region adds latency for every user outside that geography — and that latency shows up as session abandonment and conversion drop, not as an error anyone reports. The problem accumulates quietly until it is large enough to be visible in business metrics, long after the architectural decision that caused it.
- Factories can be deployed in the zones your organisation controls and assigned zone eligibility. Campaigns distribute load across zones and export metrics tagged by zone, giving teams visibility into regional performance differences under realistic concurrent load — before they affect customers.
- Read more:
QALIPSIS: Built for bold businesses that scale
With QALIPSIS, you can:
Prevent downtime before it happens
Optimize customer experience with real-time insights
Scale infrastructure cost-effectively
Ensure readiness for global markets
Advanced analysis dashboards
What you need to know
What QALIPSIS lets you do: Execute load campaigns that validate behavior (latency, failure rates, availability, data consistency) under pressure, using scenarios and assertions that represent real business flows.
What QALIPSIS lets you do: Reproduce realistic peak-traffic patterns using built-in execution profiles – staged ramp-ups, accelerating injection, progressing volume, or fully custom curves – so you can model the exact load shape you expect in production.
Within those scenarios, verify steps assert latency budgets, response correctness, and data consistency per minion under load. Assertion failures are captured as distinct events in the campaign report, giving you a clear, per-step breakdown of what degraded and where.
Export events and meters to your observability stack to correlate QALIPSIS findings with your own infrastructure telemetry. The result is a documented, repeatable verdict on your system’s peak readiness – run it on demand or schedule it before every release.
What QALIPSIS lets you do: Run load and E2E scenarios as regular Gradle tasks inside your existing CI/CD pipeline – with ready-made examples for Jenkins, GitHub Actions, GitLab CI/CD, and Travis CI. Autostart mode executes campaigns eagerly and tears down all nodes on completion, so pipelines stay clean.
QALIPSIS produces JUnit-compatible XML reports that CI platforms can consume for pass/fail gating, plus optional email notifications filtered by campaign status (successful, failed, warning).
Campaigns can also be scheduled via the REST API on hourly, daily, or monthly cadences for recurring regression runs outside the release cycle. The result is a repeatable performance gate that runs unattended alongside your existing build and deploy steps.
What QALIPSIS lets you do: Monitor and manage campaigns via GUI or REST API and access campaign reports (results, execution time, errors). Live reporting can provide real-time progress/results before your test ends.
What QALIPSIS lets you do: Run QALIPSIS through CI/CD workflows using Gradle tasks (examples exist for common CI systems). Tests can be executed nightly to keep the feedback loop short and not alter your teams velocity.
What QALIPSIS lets you do: Run repeatable load campaigns with configurable injection profiles (staged ramp-ups, accelerating volume, custom curves) and runtime tuning via minion-count and speed-factor overrides – so you can systematically sweep across load levels without rewriting scenarios.
In cluster mode, you scale injection capacity itself by adding factory nodes dynamically; factories can be geographically distributed across zones to simulate realistic traffic origins.
Campaign reports capture per-scenario and per-step success/failure counts, while exported events and meters let you correlate QALIPSIS load data with your own infrastructure telemetry.
Schedule campaigns on recurring cadences to track how capacity thresholds shift over time as your system evolves. The result is a documented, reproducible mapping between load levels and system behavior that turns provisioning from guesswork into data-driven decisions.
What QALIPSIS lets you do: Deploy factories in zones you control and configure zone eligibility so campaigns can run across eligible factories.
Does your system fail between microservices – and do your tests even see it?
QALIPSIS helps software developers model event-driven paths, scale load across zones, and validate downstream outcomes with step-level observability – in CI or at scale.

Can your test scenarios reach past the API layer into the system that runs behind it?
The message still has to be enqueued. The record still has to be written. The inventory decrement still has to survive a thousand concurrent writers. These failures are invisible to anything that stops at the HTTP boundary.
Let’s explore the top testing challenges developers face today – and how QALIPSIS solves them.
How far behind is your consumer before the first error appears?
- The service returns 200 and the scenario moves on. What it does not see is that the message consumer is falling behind — processing one message per second while the producer is pushing ten. The lag accumulates invisibly until the queue backs up far enough to cause visible failures. By then, the window to catch it in testing has long passed, and the fix has to happen in production.
- Model the message path as steps in the scenario: produce the trigger via the API, then consume the downstream message using
kafka().consumeorrabbitmq().consume. A join operator correlates the original request with its corresponding consumed message — so if the message arrives late, out of order, or not at all, the assertion fails at the exact step with a timestamped event. Enable step monitoring to export consumer lag as a meter over time. - Read more:
What actually happened after the API returned 200?
- The API returns the right status code. The message was dispatched. But the database record was never written — or was written with a stale value because two concurrent transactions both read the same state before either committed. The bug is real, reproducible under load, and completely invisible to any test that stops at the HTTP response.
- Place assertions as steps inside the workflow, immediately after the interaction that should produce an effect. Use a join to correlate the submitted request with the persisted outcome — database record, cached value, or downstream event — and assert on the combined record. A divergence fails at the exact step where propagation broke, with an event capturing what was observed versus expected and when it happened.
- Read more:
What does your load test miss when it runs from a single machine?
- Running all load from one machine produces results that reflect that origin’s network path — not the experience of users distributed across geographies. Cross-region routing, zone-specific connection pooling, and geographic service affinity all behave differently when traffic arrives from multiple origins simultaneously. A single-location test passes; a multi-zone run finds the regional session service that sits thousands of milliseconds away from half its users.
- Deploy factories in the zones you control, assign each a
factory.zone, and trigger the campaign via the REST API with a per-scenario zone percentage split in the payload. Exported meters and events are tagged by zone, so latency distributions, error rates, and throughput can be compared across regions in your existing telemetry backend — and geographic asymmetries surface before they affect users. - Read more:
How did a 10× latency regression ship through a green pipeline?
- The scenario runs in the pipeline, exits zero, and the build passes. But the campaign report lives inside the tool, the JUnit file was never configured, and the only signal the pipeline received was “process exited cleanly.” A service degraded 10× under load throughout the run, every request eventually returned 200, and nothing failed the build. The regression shipped with a green pipeline.
- Use
--autostartfor non-interactive runs that stop nodes after completion. In Gradle-based pipelines, theqalipsisRunAllScenariostask or a customRunQalipsistask publishes JUnit reports configured underreport.export.junit.*. The build fails on assertion breaches, the JUnit file is available as a pipeline artefact, and campaign results are retrievable viaGET /campaigns/{campaign-key}for integration with your own tooling. - Read more:
Which step failed — and why does the report not say?
- The campaign fails. The report says “campaign status: failed.” Which step regressed? Was it latency, error rate, or a functional assertion? Was it one minion or all of them? Without step-level data, every failed campaign triggers the same manual investigation — pull logs, compare metrics, correlate timestamps — the same archaeology every time a regression surfaces.
- Enable
monitoring { events = true }andmonitoring { meters = true }(ormonitoring { all() }) on the steps where signal matters, not globally, to keep data volume intentional. Export to the backend your team already queries. Configure report publishers to send Slack or email notifications on selected campaign statuses — so the right people know immediately which campaign failed and can open a step-level report rather than starting from scratch. - Read more:
Enterprise-grade testing for modern software
With QALIPSIS, software teams can:
Simulate real-world traffic across async, event-driven systems
Run performance and load testing for cloud-native applications
Automate testing within DevOps workflows
Gain real-time insights to boost performance and reliability
What you need to know
- What QALIPSIS lets you do: A minion simulates a user/device and runs a complete scenario; you can define minion count in scenario configuration or override it at runtime. Read more: QALIPSIS core concepts
- Reference in the docs: Look for runtime override notes and autostart keys like
campaign.minions-count-per-scenarioandcampaign.minions-factor. Read more: Execute QALIPSIS
- What QALIPSIS lets you do: Define an execution profile in the scenario (
profile { ... }) to control how minions are injected.
Read more: Scenario specifications - Reference in the docs: Review the out-of-the-box profiles (
immediate,regular,timeframe,stages, etc.).
Read more: Scenario specifications
- What QALIPSIS lets you do: Assign a
factory.zoneto factories (cluster mode) and use zones in campaign definitions.
Read more: Cluster - Reference in the docs: Look for the
factory.zoneconfiguration and zone distribution examples.
Read more: QALIPSIS REST API
- What QALIPSIS lets you do: Use
--autostartto run immediately and stop nodes after completion; head can wait forcampaign.required-factoriesin cluster mode.
Read more: Execute QALIPSIS - Reference in the docs: Review
--autostart,--scenarios/-s, and thecampaign.*keys.
Read more: Execute QALIPSIS
- What QALIPSIS lets you do: Use the Gradle plugin to run scenarios and configure JUnit report output (example config shown in the docs).
Read more: QALIPSIS Gradle plugin - Reference in the docs: Look for tasks like
qalipsisRunAllScenariosand config keys underreport.export.junit.*.
Read more: QALIPSIS Gradle plugin
- What QALIPSIS lets you do: Monitoring is disabled by default per step; enable it per step using
monitoring { ... }.
Read more: Monitoring the test campaigns - Reference in the docs: Check
monitoring { events = true },monitoring { meters = true }, andmonitoring { all() }.
Read more: Monitoring the test campaigns
- What QALIPSIS lets you do: Enable global export and use plugins to export to supported backends (Graphite, Elasticsearch, Kafka, TimescaleDB/PostgreSQL, InfluxDB).
Read more: Monitoring the test campaigns - Reference in the docs: Review
events.export.enabled=true/meters.export.enabled=trueand exporter plugin docs.
Read more: Monitoring the test campaigns
- What QALIPSIS lets you do: Configure exporters, e.g: TimescaleDB via
events.export.timescaledb.*andmeters.export.timescaledb.*(example config in docs).
Read more: TimescaleDB plugin - Reference in the docs: Check parameters like
min-level,batch-size,linger-period,publishers, andstep.
Read more: TimescaleDB plugin
- What QALIPSIS lets you do: Use plugin steps to produce/consume messages in scenarios (e.g., Kafka
kafka(), RabbitMQrabbitmq()and JMSjms()). - Reference in the docs: Check supported steps lists (
consume,produce) and example configurations (e.g.,concurrency()).
Read more: Apache Kafka plugin, RabbitMQ plugin and JMS plugin
- What QALIPSIS lets you do: QALIPSIS generates a default campaign report (overall state, results, and messages). In standalone mode you can also use console reporting: a live report (enabled by default) or a final report (optional), but not both at once. Reports are available via the GUI or REST API, and can be persisted when data storage is enabled. You can also write a log file (
logging.file) and an events file (logging.events) to disk.
Read more: Reporting - Reference in the docs: In Reporting, look for
GET /api/campaignsandGET /api/campaigns/{campaign-key}, plusreport.export.console-live.enabledandreport.export.console.enabled. In Logging, look forlogging.fileandlogging.events.
Read more: Logging
- What QALIPSIS lets you do: You don’t need to be a Kotlin expert to be productive. Scenarios are defined as Kotlin functions (e.g., a function annotated with
@Scenario("...")), but the day-to-day authoring experience is largely QALIPSIS’ Kotlin-based DSL: you declare your scenario withscenario { ... }, set a few readable configuration fields (likeminionsCountandprofile { ... }), then compose steps in a fluent chain starting at.start()(e.g.,.start().netty().tcp { ... }.reuseTcp(...) { ... }). In practice, most edits are “DSL edits” (tweaking configuration blocks and step closures) rather than “Kotlin engineering.”
Read more: Scenario specifications - Reference in the docs: See Scenario specifications for the required structure (
@Scenario,scenario { ... },.start()), and Step specifications for how steps are assembled/configured via fluent calls and{ ... }configuration blocks.
Read more: Scenario specifications
- What QALIPSIS lets you do: If you’re only running an existing test project, you can execute QALIPSIS from a packaged distribution (JAR/ZIP/Docker) without changing the scenario sources.
Read more: Deployment topologies - Reference in the docs: In Execute QALIPSIS, check the sections describing how to start QALIPSIS from a JAR/ZIP/Docker distribution.
Read more: Execute QALIPSIS
- What QALIPSIS lets you do: A QALIPSIS project is packaged with your scenarios and dependencies (for example into a JAR or a ZIP distribution), so additional libraries on the project classpath can be bundled and used by your scenario code.
Read more: Execute QALIPSIS - Reference in the docs: In Execute QALIPSIS, find the “Distribution Archive” section describing a ZIP distribution “along with your scenarios and dependencies”. Also see Gradle plugin for adding QALIPSIS plugins via
qalipsis { plugins { ... } }.
Read more: QALIPSIS Gradle plugin
- What QALIPSIS lets you do: QALIPSIS lets “any number of minions” act on a scenario, and you can set the minion count in the scenario configuration or override it at runtime. The documentation does not define a fixed maximum; practical limits depend on where the factories run and what your scenario does (connections, data volume, monitoring/export, etc.).
Read more: QALIPSIS core concepts - Reference in the docs: In QALIPSIS core concepts, check the Minions section noting configuration-time vs runtime minion counts. In Execute QALIPSIS, review
campaign.minions-count-per-scenarioandcampaign.minions-factoroverrides.
Read more: Execute QALIPSIS
- What QALIPSIS lets you do: Yes—because QALIPSIS scenarios are authored as code (Kotlin + fluent API), you can store them alongside your application or in a dedicated test repo and manage them with your usual version-control workflow (branches, reviews, tags) like any other source code.
Read more: QALIPSIS core concepts - Reference in the docs: Starting from the bootstrap project, your scenarios live as normal source code in a standard project structure—so you can commit them to your version control system, run code reviews on scenario changes (diffs on steps/profiles/assertions/config), and track history over time exactly like application code.
Read more: Bootstrap project
- What QALIPSIS lets you do: Run QALIPSIS as a cluster with explicit roles: the head orchestrates campaigns and exposes the GUI/REST interface, while factories host minions and execute scenarios and assertions.
Read more: QALIPSIS core concepts - Reference in the docs: In QALIPSIS core concepts, look for the section describing head/factory roles and how they split orchestration vs execution.
Read more: QALIPSIS core concepts
- What QALIPSIS lets you do: Retrieve campaign outcomes via REST—useful for wiring results into your own tooling (dashboards, release notes, or CI summaries).
Read more: Reporting - Reference in the docs: In Reporting, look for REST endpoints like
GET /api/campaignsandGET /api/campaigns/{campaign-key}(and the default port reference).
Read more: Reporting