1import mmap
2import pytest
3
4from atf_python.ktest import BaseKernelTest
5from atf_python.sys.netlink.attrs import NlAttrU32
6
7M_NOWAIT = 1
8M_WAITOK = 2
9
10NLMSG_SMALL = 128
11NLMSG_LARGE = 2048
12
13class TestNetlinkMessageWriter(BaseKernelTest):
14    KTEST_MODULE_NAME = "ktest_netlink_message_writer"
15
16    @pytest.mark.parametrize(
17        "malloc_flags",
18        [
19            pytest.param(M_NOWAIT, id="NOWAIT"),
20            pytest.param(M_WAITOK, id="WAITOK"),
21        ],
22    )
23    @pytest.mark.parametrize(
24        "sz",
25        [
26            pytest.param([NLMSG_SMALL, NLMSG_SMALL], id="NLMSG_SMALL"),
27            pytest.param([NLMSG_LARGE, NLMSG_LARGE], id="NLMSG_LARGE"),
28            pytest.param([NLMSG_LARGE + 256, NLMSG_LARGE + 256], id="NLMSG_LARGE+256"),
29        ],
30    )
31    def test_nlbuf_writer_allocation(self, sz, malloc_flags):
32        """override to parametrize"""
33
34        test_meta = [
35            NlAttrU32(1, sz[0]),  # size
36            NlAttrU32(2, sz[1]),  # expected_avail
37            NlAttrU32(3, malloc_flags),
38        ]
39        self.runtest(test_meta)
40