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
80 lines
2.2 KiB
Python
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)
|