Another usage of Hurl is to run tests against APIs, HTML content etc... With --test, Hurl displays a nice test oriented report:
Before 5.0.0, each Hurl file was executed sequentially, one-by-one. Starting with 5.0.0, tests are now, by default, run in parallel, allowing blazingly fast execution!
In parallel mode, each Hurl file is executed on its own thread, sharing nothing with other jobs. There is a thread pool which size is roughly the current amount of CPUs and that can be configured with --jobs option. During parallel execution, standard output and error are buffered for each file and only displayed on screen when a job is finished. This way, debug logs and messages are never interleaved between execution. Order of execution is not guaranteed in --parallel mode but reports (HTML, TAP, JSON and JUnit) keep the input files order.
The parallelism used is multithread sync: the thread pool is instantiated for the whole run, each Hurl file is run in its own thread, synchronously. We’ve not gone through the full multithreaded async route for implementation simplicity. Moreover, there is no additional dependency, only the standard Rust lib with “classic” threads and multiple producers / single consumer channels to communicate between threads.