xref: /freebsd/tests/sys/netlink/test_netlink_message_writer.py (revision 17083b94a91563aba15ba03d1c74796a35bb1c26)
1c1839039SAlexander V. Chernikovimport mmap
2c1839039SAlexander V. Chernikovimport pytest
3c1839039SAlexander V. Chernikov
4c1839039SAlexander V. Chernikovfrom atf_python.ktest import BaseKernelTest
5c1839039SAlexander V. Chernikovfrom atf_python.sys.netlink.attrs import NlAttrU32
6c1839039SAlexander V. Chernikov
7c1839039SAlexander V. ChernikovM_NOWAIT = 1
8c1839039SAlexander V. ChernikovM_WAITOK = 2
9c1839039SAlexander V. Chernikov
10*17083b94SGleb SmirnoffNLMSG_SMALL = 128
11*17083b94SGleb SmirnoffNLMSG_LARGE = 2048
12c1839039SAlexander V. Chernikov
13c1839039SAlexander V. Chernikovclass TestNetlinkMessageWriter(BaseKernelTest):
14c1839039SAlexander V. Chernikov    KTEST_MODULE_NAME = "ktest_netlink_message_writer"
15c1839039SAlexander V. Chernikov
16c1839039SAlexander V. Chernikov    @pytest.mark.parametrize(
17c1839039SAlexander V. Chernikov        "malloc_flags",
18c1839039SAlexander V. Chernikov        [
19c1839039SAlexander V. Chernikov            pytest.param(M_NOWAIT, id="NOWAIT"),
20c1839039SAlexander V. Chernikov            pytest.param(M_WAITOK, id="WAITOK"),
21c1839039SAlexander V. Chernikov        ],
22c1839039SAlexander V. Chernikov    )
23c1839039SAlexander V. Chernikov    @pytest.mark.parametrize(
24c1839039SAlexander V. Chernikov        "sz",
25c1839039SAlexander V. Chernikov        [
26*17083b94SGleb Smirnoff            pytest.param([NLMSG_SMALL, NLMSG_SMALL], id="NLMSG_SMALL"),
27*17083b94SGleb Smirnoff            pytest.param([NLMSG_LARGE, NLMSG_LARGE], id="NLMSG_LARGE"),
28*17083b94SGleb Smirnoff            pytest.param([NLMSG_LARGE + 256, NLMSG_LARGE + 256], id="NLMSG_LARGE+256"),
29c1839039SAlexander V. Chernikov        ],
30c1839039SAlexander V. Chernikov    )
31*17083b94SGleb Smirnoff    def test_nlbuf_writer_allocation(self, sz, malloc_flags):
32c1839039SAlexander V. Chernikov        """override to parametrize"""
33c1839039SAlexander V. Chernikov
34c1839039SAlexander V. Chernikov        test_meta = [
35c1839039SAlexander V. Chernikov            NlAttrU32(1, sz[0]),  # size
36c1839039SAlexander V. Chernikov            NlAttrU32(2, sz[1]),  # expected_avail
37*17083b94SGleb Smirnoff            NlAttrU32(3, malloc_flags),
38c1839039SAlexander V. Chernikov        ]
39c1839039SAlexander V. Chernikov        self.runtest(test_meta)
40