| From: SeongJae Park <sj@kernel.org> |
| Subject: selftests/damon/sysfs.py: test monitoring attribute parameters |
| Date: Sat, 28 Jun 2025 09:04:26 -0700 |
| |
| Add DAMON sysfs interface functionality tests for DAMON monitoring |
| attribute parameters, including intervals, intervals tuning goals, and |
| min/max number of regions. |
| |
| Link: https://lkml.kernel.org/r/20250628160428.53115-5-sj@kernel.org |
| Signed-off-by: SeongJae Park <sj@kernel.org> |
| Cc: Shuah Khan <shuah@kernel.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| tools/testing/selftests/damon/sysfs.py | 34 +++++++++++++++++++++-- |
| 1 file changed, 32 insertions(+), 2 deletions(-) |
| |
| --- a/tools/testing/selftests/damon/sysfs.py~selftests-damon-sysfspy-test-monitoring-attribute-parameters |
| +++ a/tools/testing/selftests/damon/sysfs.py |
| @@ -20,6 +20,11 @@ def dump_damon_status_dict(pid): |
| except Exception as e: |
| return None, 'json.load fail (%s)' % e |
| |
| +def fail(expectation, status): |
| + print('unexpected %s' % expectation) |
| + print(json.dumps(status, indent=4)) |
| + exit(1) |
| + |
| def main(): |
| kdamonds = _damon_sysfs.Kdamonds( |
| [_damon_sysfs.Kdamond(contexts=[_damon_sysfs.DamonCtx()])]) |
| @@ -34,8 +39,33 @@ def main(): |
| exit(1) |
| |
| if len(status['contexts']) != 1: |
| - print('number of contexts: %d' % len(status['contexts'])) |
| - exit(1) |
| + fail('number of contexts', status) |
| + |
| + ctx = status['contexts'][0] |
| + attrs = ctx['attrs'] |
| + if attrs['sample_interval'] != 5000: |
| + fail('sample interval', status) |
| + if attrs['aggr_interval'] != 100000: |
| + fail('aggr interval', status) |
| + if attrs['ops_update_interval'] != 1000000: |
| + fail('ops updte interval', status) |
| + |
| + if attrs['intervals_goal'] != { |
| + 'access_bp': 0, 'aggrs': 0, |
| + 'min_sample_us': 0, 'max_sample_us': 0}: |
| + fail('intervals goal') |
| + |
| + if attrs['min_nr_regions'] != 10: |
| + fail('min_nr_regions') |
| + if attrs['max_nr_regions'] != 1000: |
| + fail('max_nr_regions') |
| + |
| + if ctx['adaptive_targets'] != []: |
| + fail('adaptive_targets') |
| + |
| + if ctx['schemes'] != []: |
| + fail('schemes') |
| + |
| kdamonds.stop() |
| |
| if __name__ == '__main__': |
| _ |