This is an automated email from the git hooks/post-receive script.
teigland pushed a commit to branch rhel83 in repository sanlock.
commit 3eff548a846ea756db9f8440511874fcaa4580e0 Author: Benny Zlotnik bzlotnik@redhat.com AuthorDate: Mon Oct 5 13:20:27 2020 +0300
tests: add a test for LVB operation
This patch tests writing and reading to LVB via python bindings.
Signed-off-by: Benny Zlotnik bzlotnik@redhat.com --- tests/python_test.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+)
diff --git a/tests/python_test.py b/tests/python_test.py index 719bcb6..5e034a7 100644 --- a/tests/python_test.py +++ b/tests/python_test.py @@ -795,3 +795,75 @@ def test_acquire_path_length(no_sanlock_daemon): path = "x" * (constants.SANLK_PATH_LEN - 1) with raises_sanlock_errno(): sanlock.acquire(b"ls_name", b"res_name", [(path, 0)], pid=os.getpid()) + + +def test_lvb(tmpdir, sanlock_daemon): + ls_path = str(tmpdir.join("ls_name")) + util.create_file(ls_path, MiB) + + res_path = str(tmpdir.join("res_name")) + util.create_file(res_path, MiB) + + sanlock.write_lockspace(b"ls_name", ls_path, offset=0, iotimeout=1) + sanlock.add_lockspace(b"ls_name", 1, ls_path, offset=0, iotimeout=1) + + disks = [(res_path, 0)] + sanlock.write_resource(b"ls_name", b"res_name", disks) + + fd = sanlock.register() + + sanlock.acquire(b"ls_name", b"res_name", disks, slkfd=fd, lvb=True) + sanlock.set_lvb(b"ls_name", b"res_name", disks, b"{gen:0}") + + result = sanlock.get_lvb(b"ls_name", b"res_name", disks) + sanlock.release(b"ls_name", b"res_name", disks, slkfd=fd) + + assert result == b"{gen:0}" + + +def test_lvb_value_too_long(tmpdir, sanlock_daemon): + ls_path = str(tmpdir.join("ls_name")) + util.create_file(ls_path, MiB) + + res_path = str(tmpdir.join("res_name")) + util.create_file(res_path, MiB) + + sanlock.write_lockspace(b"ls_name", ls_path, offset=0, iotimeout=1) + sanlock.add_lockspace(b"ls_name", 1, ls_path, offset=0, iotimeout=1) + + disks = [(res_path, 0)] + sanlock.write_resource(b"ls_name", b"res_name", disks) + + fd = sanlock.register() + + long_val = b"a" * 513 + sanlock.acquire(b"ls_name", b"res_name", disks, slkfd=fd, lvb=True) + with raises_sanlock_errno(errno.E2BIG): + sanlock.set_lvb(b"ls_name", b"res_name", disks, long_val) + + sanlock.release(b"ls_name", b"res_name", disks, slkfd=fd) + + +def test_lvb_null_bytes(tmpdir, sanlock_daemon): + ls_path = str(tmpdir.join("ls_name")) + util.create_file(ls_path, MiB) + + res_path = str(tmpdir.join("res_name")) + util.create_file(res_path, MiB) + + sanlock.write_lockspace(b"ls_name", ls_path, offset=0, iotimeout=1) + sanlock.add_lockspace(b"ls_name", 1, ls_path, offset=0, iotimeout=1) + + disks = [(res_path, 0)] + sanlock.write_resource(b"ls_name", b"res_name", disks) + + fd = sanlock.register() + + sanlock.acquire(b"ls_name", b"res_name", disks, slkfd=fd, lvb=True) + sanlock.set_lvb(b"ls_name", b"res_name", disks, b"{ge\x00:0}") + + result = sanlock.get_lvb(b"ls_name", b"res_name", disks) + sanlock.release(b"ls_name", b"res_name", disks, slkfd=fd) + + # Check that the string we passed is terminated by the null-byte + assert result == b"{ge"