[PATCH 4/5] selftests/damon/damos_tried_regions: handle empty tried regions in early cycles

From: Kunwu Chan

Date: Sun May 31 2026 - 05:18:59 EST


From: Kunwu Chan <kunwu.chan@xxxxxxxxx>

The test aborts if the initial aggregation cycles produce zero
tried regions. This can happen on slow machines, causing false
failures. Skip empty cycles and retry up to 200 times before
giving up. Also check that enough samples were collected before
computing the 50th percentile.

Co-developed-by: Wang Lian <lianux.mm@xxxxxxxxx>
Signed-off-by: Wang Lian <lianux.mm@xxxxxxxxx>
Signed-off-by: Kunwu Chan <chentao@xxxxxxxxxx>
---
.../selftests/damon/damos_tried_regions.py | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/damon/damos_tried_regions.py b/tools/testing/selftests/damon/damos_tried_regions.py
index d6472e6a6e08..cc6895c56820 100755
--- a/tools/testing/selftests/damon/damos_tried_regions.py
+++ b/tools/testing/selftests/damon/damos_tried_regions.py
@@ -28,7 +28,9 @@ def main():
exit(1)

collected_nr_regions = []
- while proc.poll() is None:
+ nr_retries = 0
+ while proc.poll() is None and nr_retries < 200:
+ nr_retries += 1
time.sleep(0.1)
err = kdamonds.kdamonds[0].update_schemes_tried_regions()
if err is not None:
@@ -38,20 +40,20 @@ def main():

scheme = kdamonds.kdamonds[0].contexts[0].schemes[0]
if scheme.tried_regions is None:
- proc.terminate()
- print('tried regions is not collected')
- exit(1)
+ continue

nr_tried_regions = len(scheme.tried_regions)
if nr_tried_regions <= 0:
- proc.terminate()
- print('tried regions is not created')
- exit(1)
+ continue
collected_nr_regions.append(nr_tried_regions)
if len(collected_nr_regions) > 10:
break
proc.terminate()

+ if len(collected_nr_regions) <= 4:
+ print('too few tried regions samples collected')
+ exit(1)
+
collected_nr_regions.sort()
sample = collected_nr_regions[4]
print('50-th percentile nr_regions: %d' % sample)
--
2.43.0