freebsd-dev/tests/sys/netlink/test_netlink_message_writer.py
Alexander V. Chernikov c1839039b1 netlink: use netlink mbufs in the mbuf chains.
Continue D40356 and switch the remaining parts of mbuf-related
code to the Netlink mbufs.

Reviewed By: gallatin
Differential Revision: https://reviews.freebsd.org/D40368
MFC after:	2 weeks
2023-06-02 13:14:20 +00:00

80 lines
2.2 KiB
Python

import mmap
import pytest
from atf_python.ktest import BaseKernelTest
from atf_python.sys.netlink.attrs import NlAttrU32
M_NOWAIT = 1
M_WAITOK = 2
NS_WRITER_TYPE_MBUF = 0
NS_WRITER_TYPE_BUF = 1
NS_WRITER_TYPE_LBUF = 1
MHLEN = 160
MCLBYTES = 2048 # XXX: may differ on some archs?
MJUMPAGESIZE = mmap.PAGESIZE
MJUM9BYTES = 9 * 1024
MJUM16BYTES = 16 * 1024
class TestNetlinkMessageWriter(BaseKernelTest):
KTEST_MODULE_NAME = "ktest_netlink_message_writer"
@pytest.mark.parametrize(
"malloc_flags",
[
pytest.param(M_NOWAIT, id="NOWAIT"),
pytest.param(M_WAITOK, id="WAITOK"),
],
)
@pytest.mark.parametrize(
"writer_type",
[
pytest.param(NS_WRITER_TYPE_MBUF, id="MBUF"),
pytest.param(NS_WRITER_TYPE_BUF, id="BUF"),
],
)
@pytest.mark.parametrize(
"sz",
[
pytest.param([160, 160], id="MHLEN"),
pytest.param([MCLBYTES, MCLBYTES], id="MCLBYTES"),
],
)
def test_mbuf_writer_allocation(self, sz, writer_type, malloc_flags):
"""override to parametrize"""
test_meta = [
NlAttrU32(1, sz[0]), # size
NlAttrU32(2, sz[1]), # expected_avail
NlAttrU32(4, writer_type),
NlAttrU32(5, malloc_flags),
]
self.runtest(test_meta)
@pytest.mark.parametrize(
"malloc_flags",
[
pytest.param(M_NOWAIT, id="NOWAIT"),
pytest.param(M_WAITOK, id="WAITOK"),
],
)
@pytest.mark.parametrize(
"sz",
[
pytest.param([160, 160, 1], id="MHLEN"),
pytest.param([MCLBYTES, MCLBYTES, 1], id="MCLBYTES"),
pytest.param([MCLBYTES + 1, MCLBYTES + 1, 2], id="MCLBYTES_MHLEN"),
pytest.param([MCLBYTES + 256, MCLBYTES * 2, 2], id="MCLBYTESx2"),
],
)
def test_mbuf_chain_allocation(self, sz, malloc_flags):
test_meta = [
NlAttrU32(1, sz[0]), # size
NlAttrU32(2, sz[1]), # expected_avail
NlAttrU32(3, sz[2]), # expected_count
NlAttrU32(5, malloc_flags),
]
self.runtest(test_meta)