From 6ce978f317a92e985d971f23616c1de28258cfb1 Mon Sep 17 00:00:00 2001 From: Kamil Gierszewski Date: Tue, 1 Oct 2024 16:07:18 +0200 Subject: [PATCH] tests: fix io class tests Signed-off-by: Kamil Gierszewski --- .../tests/io_class/test_io_class_occupancy.py | 79 +++++++++++++------ .../tests/io_class/test_io_class_purge.py | 29 +++++-- 2 files changed, 77 insertions(+), 31 deletions(-) diff --git a/test/functional/tests/io_class/test_io_class_occupancy.py b/test/functional/tests/io_class/test_io_class_occupancy.py index b7ea53b..6ed20bc 100644 --- a/test/functional/tests/io_class/test_io_class_occupancy.py +++ b/test/functional/tests/io_class/test_io_class_occupancy.py @@ -1,5 +1,6 @@ # # Copyright(c) 2020-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies Co., Ltd. # SPDX-License-Identifier: BSD-3-Clause # @@ -353,23 +354,38 @@ def test_ioclass_occupancy_sum_cache(): cache.purge_cache() with TestRun.step("Verify stats before IO"): - usage_stats_sum = IoClassUsageStats(Size(0), Size(0), Size(0)) - for i in io_classes: - usage_stats_sum += get_io_class_usage(cache, i.id) - usage_stats_sum += get_io_class_usage(cache, default_ioclass_id) + usage_stats_occupancy_sum = Size.zero() + usage_stats_clean_sum = Size.zero() + usage_stats_dirty_sum = Size.zero() - cache_stats = cache.get_statistics().usage_stats - cache_stats.free = Size(0) + all_io_class_usage_stats = [] + for i in io_classes: + io_class_usage_stats = get_io_class_usage(cache, i.id) + usage_stats_occupancy_sum += io_class_usage_stats.occupancy + usage_stats_clean_sum += io_class_usage_stats.clean + usage_stats_dirty_sum += io_class_usage_stats.dirty + all_io_class_usage_stats.append(io_class_usage_stats) + + io_class_usage_stats = get_io_class_usage(cache, default_ioclass_id) + usage_stats_occupancy_sum += io_class_usage_stats.occupancy + usage_stats_clean_sum += io_class_usage_stats.clean + usage_stats_dirty_sum += io_class_usage_stats.dirty + + cache_usage_stats = cache.get_statistics().usage_stats + cache_usage_stats.free = Size.zero() if ( - cache_stats.occupancy != usage_stats_sum.occupancy - or cache_stats.clean != usage_stats_sum.clean - or cache_stats.dirty != usage_stats_sum.dirty + cache_usage_stats.occupancy != usage_stats_occupancy_sum + or cache_usage_stats.clean != usage_stats_clean_sum + or cache_usage_stats.dirty != usage_stats_dirty_sum ): TestRun.LOGGER.error( - "Initial cache usage stats doesn't match sum of ioclasses stats\n" - f"cache stats: {cache_stats}, sumed up stats {usage_stats_sum}\n" - f"particular stats {[get_io_class_usage(cache, i.id) for i in io_classes]}" + "Initial cache usage stats doesn't match sum of io classes stats\n" + f"Cache usage stats: {cache_usage_stats}\n" + f"Usage stats occupancy sum: {usage_stats_occupancy_sum}\n" + f"Usage stats clean sum: {usage_stats_clean_sum}\n" + f"Usage stats dirty sum: {usage_stats_dirty_sum}\n" + f"Particular stats {all_io_class_usage_stats}" ) with TestRun.step(f"Trigger IO to each directory"): @@ -380,23 +396,38 @@ def test_ioclass_occupancy_sum_cache(): ) with TestRun.step("Verify stats after IO"): - usage_stats_sum = IoClassUsageStats(Size(0), Size(0), Size(0)) - for i in io_classes: - usage_stats_sum += get_io_class_usage(cache, i.id) - usage_stats_sum += get_io_class_usage(cache, default_ioclass_id) + usage_stats_occupancy_sum = Size.zero() + usage_stats_clean_sum = Size.zero() + usage_stats_dirty_sum = Size.zero() - cache_stats = cache.get_statistics().usage_stats - cache_stats.free = Size(0) + all_io_class_usage_stats = [] + for i in io_classes: + io_class_usage_stats = get_io_class_usage(cache, i.id) + usage_stats_occupancy_sum += io_class_usage_stats.occupancy + usage_stats_clean_sum += io_class_usage_stats.clean + usage_stats_dirty_sum += io_class_usage_stats.dirty + all_io_class_usage_stats.append(io_class_usage_stats) + + io_class_usage_stats = get_io_class_usage(cache, default_ioclass_id) + usage_stats_occupancy_sum += io_class_usage_stats.occupancy + usage_stats_clean_sum += io_class_usage_stats.clean + usage_stats_dirty_sum += io_class_usage_stats.dirty + + cache_usage_stats = cache.get_statistics().usage_stats + cache_usage_stats.free = Size.zero() if ( - cache_stats.occupancy != usage_stats_sum.occupancy - or cache_stats.clean != usage_stats_sum.clean - or cache_stats.dirty != usage_stats_sum.dirty + cache_usage_stats.occupancy != usage_stats_occupancy_sum + or cache_usage_stats.clean != usage_stats_clean_sum + or cache_usage_stats.dirty != usage_stats_dirty_sum ): TestRun.LOGGER.error( - "Cache usage stats doesn't match sum of ioclasses stats\n" - f"cache stats: {cache_stats}, sumed up stats {usage_stats_sum}\n" - f"particular stats {[get_io_class_usage(cache, i.id) for i in io_classes]}" + "Initial cache usage stats doesn't match sum of io classes stats\n" + f"Cache usage stats: {cache_usage_stats}\n" + f"Usage stats occupancy sum: {usage_stats_occupancy_sum}\n" + f"Usage stats clean sum: {usage_stats_clean_sum}\n" + f"Usage stats dirty sum: {usage_stats_dirty_sum}\n" + f"particular stats {all_io_class_usage_stats}" ) diff --git a/test/functional/tests/io_class/test_io_class_purge.py b/test/functional/tests/io_class/test_io_class_purge.py index 55c1b09..86d3385 100644 --- a/test/functional/tests/io_class/test_io_class_purge.py +++ b/test/functional/tests/io_class/test_io_class_purge.py @@ -1,5 +1,6 @@ # # Copyright(c) 2020-2022 Intel Corporation +# Copyright(c) 2024 Huawei Technologies Co., Ltd. # SPDX-License-Identifier: BSD-3-Clause # @@ -103,18 +104,32 @@ def get_io_class_usage(cache, io_class_id): def verify_ioclass_usage_stats(cache, ioclasses_ids): cache_size = cache.get_statistics().config_stats.cache_size - usage_stats_sum = IoClassUsageStats(Size(0), Size(0), Size(0)) + usage_stats_occupancy_sum = Size.zero() + usage_stats_clean_sum = Size.zero() + usage_stats_dirty_sum = Size.zero() + + all_io_class_usage_stats = [] for i in ioclasses_ids: - usage_stats_sum += get_io_class_usage(cache, i) + io_class_usage_stats = get_io_class_usage(cache, i) + usage_stats_occupancy_sum += io_class_usage_stats.occupancy + usage_stats_clean_sum += io_class_usage_stats.clean + usage_stats_dirty_sum += io_class_usage_stats.dirty + all_io_class_usage_stats.append(io_class_usage_stats) cache_usage_stats = cache.get_statistics().usage_stats - if usage_stats_sum != cache_usage_stats: + if ( + cache_usage_stats.occupancy != usage_stats_occupancy_sum + or cache_usage_stats.clean != usage_stats_clean_sum + or cache_usage_stats.dirty != usage_stats_dirty_sum + ): TestRun.LOGGER.error( - "Sum of io classes usage stats doesn't match cache usage stats!" - f" Cache stats:\n{cache_usage_stats} io classes sum:\n{usage_stats_sum}" - f" Stats of particular io classes:\n" - f"{[get_io_class_usage(cache, i) for i in ioclasses_ids]}" + "Sum of io classes usage stats doesn't match cache usage stats!\n" + f"Cache usage stats: {cache_usage_stats}\n" + f"Usage stats occupancy sum: {usage_stats_occupancy_sum}\n" + f"Usage stats clean sum: {usage_stats_clean_sum}\n" + f"Usage stats dirty sum: {usage_stats_dirty_sum}\n" + f"{all_io_class_usage_stats}" ) if cache_usage_stats.occupancy + cache_usage_stats.free > cache_size: