MorenaBarboni / SuMo-SOlidity-MUtator

A mutation testing tool for Solidity Smart Contracts
GNU General Public License v3.0
73 stars 9 forks source link

Parallel Processing #10

Open njelich opened 1 year ago

njelich commented 1 year ago

The way SuMo currently works is by modifying the original source files and then running the tests, but this is done one by one, making it really slow. SuMo in general doesn't use a lot of processing power, and it could be parallelized to achieve better performance.

I'm starting this thread to open discussion of this idea.

njelich commented 1 year ago

There is already a test function that takes mutation hashes as inputs, so that would probably be a good starting point to start the process.

The main blocker I see is the original files being modified to run the tests, but most Solidity testing frameworks compile files and then run tests, so I wonder what would happen if we simply started multiple processes sequentiall, but without waiting for the testing process to finish.

MorenaBarboni commented 1 year ago

This would be a great improvement! To enable parallel execution we could spawn an async testing process in the testingInterface and adjust the test function in the mutationRunner.

Indeed the main problem is that the original contract files are modified and restored for each mutant. I'm not yet sure what's the best way to handle this but I will try to play around with it

njelich commented 12 months ago

I found a reference implementation - another mutation testing framework implemented some parallel testing with hardhat.

Might be a good starting point.

https://github.com/JoranHonig/vertigo