RoboCon 2026

Medusa: Resource-aware parallel suite execution made easy
2026-02-12 , RoboCon

Medusa is a tool to easily parallelize execution of test suites.

Medusa uses suite metadata to start suites in parallel dynamically while avoiding resource usage conflicts. Suites can be assigned to sequentially executed stages and can be run multiple times with different variables, even in parallel.

This talk will give you an overview of how Medusa works, how you can use it and how my employer INSYS icom uses it to save time and code for daily testing of the industrial routers we produce.


If you have a lot of tests that take a non-negligible amount of time, you can benefit greatly from running them in parallel. In the case of INSYS icom's daily regression tests, parallelization allows us to run more than 50 hours of sequential tests in less than 5 hours.

Limitations of existing tools

One big problem we encountered for our use case is that many of our test suites require exclusive access to specific resources, for example a specific device that is being tested or a specific port that is used while testing. This makes it impossible to simply run everything in parallel since there would be countless resource usage conflicts.

At first we used pabot with a manually written ordering file specifying which suites run in parallel in which order, but with more than 1000 tests across many suites, this quickly gets unmanageable and still takes a lot more time than it needs to. We attempted to automate generating the ordering file but finally had to concede that dynamically avoiding resource conflicts is just not what pabot was designed to do. To close this gap, we designed our own tool.

Introducing Medusa

Medusa was designed specifically around the idea of resource dependencies. Resources can be anything from a device on the network (specified eg. as a hostname or IP address), a specific port that is bound in a suite or even a physical resource that is limited, such as a DSL connection that can't be used multiple times in parallel.

Every suite can declare resource dependencies, Medusa then automatically determines at runtime which suites can be started in parallel, which maximises time efficiency while preventing conflicts.

In addition to dependencies, a suite is also assigned to a specific stage. Stages are simply groups of suites which run sequentially, while all the suites within a stage are executed in parallel as described above. This allows you to still control ordering where necessary.

Finally, Medusa allows you to run suites multiple times with different variables, even with different dependencies or stages, making it an extremely flexible tool that also helps reduce code duplication in cases where you want an entire suite to be used to test multiple targets or in multiple variations.

Since everything is executed in separate processes, Medusa makes use of rebot to merge results of all suites at the end of execution. That way you still get seamlessly combined results even with massive parallelization.

To still allow full flexibility for using standard robot options, Medusa is designed like a wrapper that accepts nearly all of robot's options and simply forwards them to the processes running the single suites. This allows you to still use your own listeners, pre-run modifiers and more.

Medusa will be released as open source software ahead of RoboCon 2025 and I look forward to seeing how you will use it!


Lessons Learned:

At the end of this talk, you will understand what Medusa is, how it works and how INSYS icom uses it for daily regression testing of devices. This will give you a good overview of its capabilities, as well as whether and how you can use it for your own project.

Categorize / Tags:

tools, parallelization, automation

Is this suitable for ..?: Beginner RF User, Intermediate RF User, Advanced RF User Describe your intended audience:

This talk is aimed at anyone who wants to reduce the execution-time of their tests by parallelizing them. Only a basic understanding of Robot Framework is required.

In-Person or Online talk/workshop?:

Online

I am an embedded software developer at INSYS icom, where I work on the firmware for our industrial routers in C, as well as our end-to-end tests and test tooling using Python and Robot Framework.

I started as a humanities student and hobby programmer, writing small projects and maintaining various services on servers in my free time. After first gaining professional IT experience with a 5G broadcast trial project, I switched to a computer science degree. During my studies I joined INSYS icom, where I am part of the embedded software team since 2023.