Merge pull request #775 from karolinavelkaja/fix_ioclass_eviction_priority_test

test fix: test_ioclass_eviction_priority
This commit is contained in:
Katarzyna Łapińska 2021-05-10 15:27:15 +02:00 committed by GitHub
commit 7bd370428d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 6 deletions

View File

@ -3,8 +3,6 @@
# SPDX-License-Identifier: BSD-3-Clause-Clear # SPDX-License-Identifier: BSD-3-Clause-Clear
# #
from datetime import timedelta
from api.cas import casadm from api.cas import casadm
from api.cas import ioclass_config from api.cas import ioclass_config
from api.cas.cache_config import ( from api.cas.cache_config import (
@ -89,13 +87,14 @@ def get_io_class_usage(cache, io_class_id, percent=False):
).usage_stats ).usage_stats
def run_io_dir(path, size_4k): def run_io_dir(path, size_4k, offset=0):
dd = ( dd = (
Dd() Dd()
.input("/dev/zero") .input("/dev/zero")
.output(f"{path}") .output(f"{path}")
.count(size_4k) .count(size_4k)
.block_size(Size(1, Unit.Blocks4096)) .block_size(Size(1, Unit.Blocks4096))
.seek(offset)
) )
TestRun.LOGGER.info(f"{dd}") TestRun.LOGGER.info(f"{dd}")
output = dd.run() output = dd.run()

View File

@ -8,13 +8,13 @@ from math import isclose
import pytest import pytest
from .io_class_common import *
from api.cas.cache_config import CacheMode, CacheLineSize from api.cas.cache_config import CacheMode, CacheLineSize
from api.cas.ioclass_config import IoClass from api.cas.ioclass_config import IoClass
from storage_devices.disk import DiskType, DiskTypeSet, DiskTypeLowerThan from storage_devices.disk import DiskType, DiskTypeSet, DiskTypeLowerThan
from test_tools import fs_utils from test_tools import fs_utils
from test_tools.disk_utils import Filesystem from test_tools.disk_utils import Filesystem
from test_utils.os_utils import sync, Udev from test_utils.os_utils import sync, Udev
from .io_class_common import *
@pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand])) @pytest.mark.require_disk("cache", DiskTypeSet([DiskType.optane, DiskType.nand]))
@ -130,11 +130,15 @@ def test_ioclass_eviction_priority(cache_line_size):
::-1 ::-1
] # List is ordered by eviction priority ] # List is ordered by eviction priority
io_classes_evicted = [] io_classes_evicted = []
io_offset = 0
for io_class in io_classes_to_evict: for io_class in io_classes_to_evict:
io_size = int((io_class.max_occupancy * cache_size) / Unit.Blocks4096)
run_io_dir( run_io_dir(
f"{target_io_class.dir_path}/tmp_file", f"{target_io_class.dir_path}/tmp_file_{io_class.id}",
int((io_class.max_occupancy * cache_size) / Unit.Blocks4096), io_size,
io_offset
) )
io_offset += io_size
part_to_evict_end_occupancy = get_io_class_occupancy( part_to_evict_end_occupancy = get_io_class_occupancy(
cache, io_class.id, percent=True cache, io_class.id, percent=True
) )