Skip to content

Hash/Partition based Test Filter #4391

@Plasma

Description

@Plasma

Suggestion

Implement a Hash/Partition based Test Filter, so that tests match the filter based on a hash and modulo comparison. This is separate and different to parallel execution attribute.

This would allow a subset of tests to be ran (and others excluded) based on a partition number, in order to partition the running of the same (large, slow) test suite across multiple machines by selectively filtering to a subset of tests based on a partition count and number.

Use case

Using GitHub Actions to run nunit tests, it would be great to use the matrix option in GitHub Actions to run multiple copies of the test process across multiple machines at once in order to speed up test runs for large test suites easily.

A filter parameter that allowed me to specify the number of partitions (eg, 10) and the partition number to filter tests for (eg, 3) would make it very easy to partition the running of tests in GitHub Actions and other runners where sub-jobs are supported.

Usage example

--filter <partition/max partitions>

Algorithm may be something like IsMatch == sha1(fully qualified test name) % max partitions == partition

Contribution

I'm happy to contribute a PR if this sounds like a reasonable contribution.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions