Test Plan Requirements
Atlas runs standard JMeter test plans, but a plan written on a desktop needs a few changes before it runs correctly on a fleet of Linux load generators. These are the things that actually catch people out.
Data file paths
Reference data files by a plain relative path:
./users.csv ✅
users.csv ✅
C:\Users\me\users.csv ❌
/home/me/data/users.csv ❌
./data/users.csv ❌A project's files live in one flat folder — see Test Files.
This failure is silent
If a CSV Data Set Config path can't be resolved, every thread in that thread group throws before issuing a single request. There are no failed samples: the summary reports 0.00% errors and the dashboard omits that thread group entirely while the others look healthy.
If a thread group is missing from your results, check its data file paths first.
Every file the plan references must also actually be uploaded.
Disable GUI listeners
Switch these off before uploading:
- View Results Tree
- Aggregate Report
- Simple Data Writer
They consume a lot of memory during a headless run — enough to destabilise a long test — and Atlas collects its own results regardless. A Simple Data Writer pointing at a C:\... path is doubly useless.
Thread counts are per machine
Atlas does not divide your threads across machines. A 100-thread plan on 5 generators is 500 concurrent users.
Decide the number you want in total, then divide by how many generators you plan to use.
Header rows in CSV files
Whether line 1 of a data file is a header is decided by your plan's CSV Data Set Config, not guessed:
- If Variable Names is filled in and Ignore first line is true, line 1 is a header.
- If Variable Names is empty, JMeter reads line 1 as the names — so it counts as a header too.
Get this right and each machine's slice keeps the header while the data rows are divided. Get it wrong and you either inject a bogus row or lose a real one.
Timers and pacing
Think time matters more in a distributed test, not less. Without it, every virtual user hammers as fast as the network allows, which produces a number that looks impressive and means nothing.
Parameterising the target
If you test more than one environment, drive the host from a variable rather than hardcoding it, and pass it at run time:
atlas run -p SHOP --args "-Jhost=staging.example.com"A checklist
Before your first run:
- [ ] Data file paths are relative (
./file.csv) - [ ] Every referenced file is uploaded
- [ ] GUI listeners disabled
- [ ] Thread count is per-machine, and you've multiplied by your generator count
- [ ] Header handling matches your files
- [ ] Timers present
- [ ] The plan runs locally in headless mode first:
jmeter -n -t plan.jmx
TIP
That last one is the highest-value check. jmeter -n -t plan.jmx on your own machine catches most problems in seconds, without waiting for machines to power on.