Commit Graph

486 Commits

Author SHA1 Message Date
Michal Mielewczyk
baccc5560b pyocf: Add tests for detaching core
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2025-03-26 15:39:55 +01:00
Michal Mielewczyk
047b276fc8 pyocf: API for detaching core
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2025-03-26 11:39:05 +01:00
Michal Mielewczyk
dedfa5eed9 pytest: Add test for loading cores with cleaning
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2025-03-26 08:53:30 +01:00
Michal Mielewczyk
7f55116b5e pyocf: settle cache before testing occupancy
The next commit will move occupancy accounting to backfill which makes
testing statistics value even more time dependent. Settling cache before
cache.get_stats() prevents this error-inducing race conditions

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2025-03-24 12:22:25 +01:00
Michal Mielewczyk
98a3aaea89 pyocf: Test detaching cache with cleaning policy
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2025-03-17 15:28:09 +01:00
Krzysztof Majzerowicz-Jaszcz
23abad76a8 Add script for running PyOCF with sanitization
GCC/Clang sanitizer can be used together with PyOCF to catch some errors during
testing.

CC was purposely removed from the Makefile. It always points to GCC on Linux
by default. This allows to change the compiler and its options during the run
of the script

Signed-off-by: Krzysztof Majzerowicz-Jaszcz <krzysztof.majzerowicz-jaszcz@intel.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2025-03-14 16:54:30 +01:00
Daniel Madej
3263503de1 pyocf: Add test for re-attaching device w/o force
Signed-off-by: Daniel Madej <daniel.madej@huawei.com>
2025-02-06 09:24:40 +01:00
Robert Baldyga
be068df400
Merge pull request #853 from mmichal10/repart
Repart
2025-02-04 16:39:49 +01:00
Robert Baldyga
08eb00665c
Merge pull request #854 from robertbaldyga/request-cleanup
A little cleanup between ocf_request and ocf_io
2025-02-04 15:20:44 +01:00
Robert Baldyga
b850727d17 tests: Fix d2c test
Cache attach operation is not supposed to complete unless all the d2c
requests are completed, thus need to handle it asynchronously.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-11-21 21:29:23 +01:00
Michal Mielewczyk
91ad6476e2 pyocf: Cache lines reclassification test
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-21 19:32:51 +02:00
Michal Mielewczyk
a18bee3d23 pyocf: ioclass statas api
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-21 19:32:51 +02:00
Robert Baldyga
85513332d7 Remove ocf_io_get()
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-10-15 09:55:56 +02:00
Robert Baldyga
b16b49c84d tests: Introduce cache/core flush test
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-04 07:54:46 +02:00
Roel Apfelbaum
b8ea10f30c pyocf: Fix core.reset_stats()
Signed-off-by: Roel Apfelbaum <roel.apfelbaum@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-04 07:52:14 +02:00
Michal Mielewczyk
a681f7ec7e pyocf: Test for reporting and accounting IO errors
Test for bug fixed in 237f6c708a

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-02 16:21:10 +02:00
Michal Mielewczyk
6ec4f6cceb pyocf: rio: reads and writes accounting
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-02 15:55:28 +02:00
Michal Mielewczyk
818dacfe89 pyocf: Disarm error volumes in teardown
This prevents obfuscating the actual test errors

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-02 15:52:21 +02:00
Michal Mielewczyk
191471af1b Test for IO in d2c after attaching cache
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-10-02 15:33:06 +02:00
Robert Baldyga
d8d750462a tests: pyocf: Remove legacy submit_* ops implementation from volumes
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
9b7f476470 pyocf: Update after removing struct ocf_io
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
be0ad8fe20 pyocf: Update tests after the API changes
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
1c2d5bbcf3 Introduce forward_io_simple
It's intended to be used in a context, where cache is not initialized
and the io_queue is not available yet.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
2d303e8d09 Replace ocf_forward_get_io() with more specific ops
struct ocf_io is going to be removed soon (consolidated with ocf_request).

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
6aa141c247 Introduce ocf_forward_get_data()
Skip the ocf_io abstraction and get the data directly from the request.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
5859e432c8 Introduce ocf_forward_metadata()
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
cd544e8ee5 Introduce ocf_forward_write_zeros()
This is meant to be used in atomic mode to avoid allocating huge buffers
for zeroing data on drive.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-20 13:59:46 +02:00
Robert Baldyga
c9cd217a08 pyocf: Update to use forward API
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-19 15:55:19 +02:00
Roel Apfelbaum
73387c8f26 Support set_data() with offset > 0 for core
Signed-off-by: Roel Apfelbaum <roel.apfelbaum@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-17 16:26:27 +02:00
Sara Merzel
9a6fe8a49b pyocf: Tests for partial hits
Signed-off-by: Sara Merzel <sara.merzel@huawei.com>
Signed-off-by: Roel Apfelbaum <roel.apfelbaum@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-17 14:16:23 +02:00
Michal Mielewczyk
97477d484f pyocf: Helpers for sync IOs for Volume
Signed-off-by: Sara Merzel <sara.merzel@huawei.com>
Signed-off-by: Roel Apfelbaum <roel.apfelbaum@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-17 10:04:02 +02:00
Michal Mielewczyk
f75ad04ec7 pyocf: Remove redundant imports
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-12 14:07:30 +02:00
Robert Baldyga
c07e44f036 pyocf: Fix cache settle
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
2024-09-09 15:28:11 +02:00
Sara Merzel
835eb708b5 Introduce pass-through block stats
Signed-off-by: Sara Merzel <sara.merzel@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-06 14:47:02 +02:00
Gershon Geva
2096e34489 Pass user's params when opening a core volume
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-09-04 20:29:41 +02:00
Robert Baldyga
8db93260ae Avoid adding mngt_queue to io_queues list
Previously every created queue was added to io_queues list, which
made mngt_queue being used in ocf_parallelize. Change mngt_queue creation
API so that mngt_queue is not added to the list and doesn't have
unnecessary functionalities initialized.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 10:45:26 +02:00
Michael Lyulko
59227999da pyocf: fix standby detach completion
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:39:55 +02:00
Robert Baldyga
640ee86663 pyocf: Introduce discard tests
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:39:55 +02:00
Roel Apfelbaum
9f0147ab1e pyocf: refactor sync io operations
Replace the pattern:
	completion = OcfCompletion([("err", c_int)])
	io.callback = completion.callback
	io.submit()
	completion.wait()
with:
	completion = Sync(io).submit()
Also, remove some redundant imports.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:39:53 +02:00
Robert Baldyga
8d4661bdc9 pyocf: rio: Introduce copy()
This allows to create a Rio prototype object and the copy it for every
invocations so that some parameters can be overwritten without modifying
the prototype object itself.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:29:43 +02:00
Robert Baldyga
d892e3b0d5 pyocf: rio: Fix offset
Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:29:42 +02:00
Michal Mielewczyk
16830cd3c3 pyocf: rio: Fix the default JobSpec
Make JobSpec dataclass' default values immutable.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:29:10 +02:00
Robert Baldyga
8668ae9c37 pyocf: Fix test_io_propagation_multiple_subvolumes
Make sure end_offset is never generated as 0. Otherwise the last volume
in the range will not get any io, leading false negative test result.

Signed-off-by: Robert Baldyga <robert.baldyga@huawei.com>
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-08-29 08:28:13 +02:00
Michal Mielewczyk
83ec255458 Disable changing cache params for detached cache
Majority of management operations should be blocked for detached cache,
although adding and removing cores should be possible.

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-07-10 16:19:37 +02:00
Michal Mielewczyk
f8a0f88892 Test detaching cache twice
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-07-10 16:16:18 +02:00
Michal Mielewczyk
c95f396ba9 Test for attaching cache twice
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-07-10 16:15:34 +02:00
Michal Mielewczyk
58fddd3602 Test add and remove core with cache detached
Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-07-10 16:15:18 +02:00
Michal Mielewczyk
06a2125ba9 pytest: update random.seed() argument
From python3.11 the function accepts only NoneType, int, float, str, bytes, or
bytearray

Signed-off-by: Michal Mielewczyk <michal.mielewczyk@huawei.com>
2024-07-10 16:14:30 +02:00
Robert Baldyga
2560aa709c tests: Use proper random object for string generation
PyOCF needs to control random seed, to allow running tests with
pytest-xdist. Use local random object initialized with seed
from the config.

Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
2023-03-30 10:30:55 +02:00
Svelar
3fe63b3036 tests/unit/tests/utils/utils_refcnt.c/utils_refcnt_register_zero_cb.c: fix typos
Signed-off-by: Svelar <sunrongqi@huawei.com>
2023-01-04 16:01:29 +08:00