kunit: Add ability to filter attributes
authorRae Moar <rmoar@google.com>
Tue, 25 Jul 2023 21:25:15 +0000 (21:25 +0000)
committerShuah Khan <skhan@linuxfoundation.org>
Wed, 26 Jul 2023 19:29:15 +0000 (13:29 -0600)
commit529534e8cba3e60f843a682e2a3149612b30d608
treeca29d679b1bf5bb328bd22b7e747aa3389413991
parenta00a72709175a4d53096301a8792b8171d1223e5
kunit: Add ability to filter attributes

Add filtering of test attributes. Users can filter tests using the
module_param called "filter".

Filters are imputed in the format: <attribute_name><operation><value>

Example: kunit.filter="speed>slow"

Operations include: >, <, >=, <=, !=, and =. These operations will act the
same for attributes of the same type but may not between types.

Note multiple filters can be inputted by separating them with a comma.
Example: kunit.filter="speed=slow, module!=example"

Since both suites and test cases can have attributes, there may be
conflicts. The process of filtering follows these rules:
- Filtering always operates at a per-test level.
- If a test has an attribute set, then the test's value is filtered on.
- Otherwise, the value falls back to the suite's value.
- If neither are set, the attribute has a global "default" value, which
  is used.

Filtered tests will not be run or show in output. The tests can instead be
skipped using the configurable option "kunit.filter_action=skip".

Note the default settings for running tests remains unfiltered.

Finally, add "filter" methods for the speed and module attributes to parse
and compare attribute values.

Note this filtering functionality will be added to kunit.py in the next
patch.

Reviewed-by: David Gow <davidgow@google.com>
Signed-off-by: Rae Moar <rmoar@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
include/kunit/attributes.h
lib/kunit/attributes.c
lib/kunit/executor.c
lib/kunit/executor_test.c
lib/kunit/test.c