aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_string.py
blob: ed7b8cdf88ddb1d5d0cd70fded87446f17948f3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/env python3

import unittest

from framework import VppTestCase, VppTestRunner
from vpp_ip_route import VppIpTable, VppIpRoute, VppRoutePath


class TestString(VppTestCase):
    """ String Test Cases """

    @classmethod
    def setUpClass(cls):
        super(TestString, cls).setUpClass()

    @classmethod
    def tearDownClass(cls):
        super(TestString, cls).tearDownClass()

    def setUp(self):
        super(TestString, self).setUp()

    def tearDown(self):
        super(TestString, self).tearDown()

    def test_string_unittest(self):
        """ String unit tests """
        names = ["memcpy_s",
                 "clib_memcmp", "clib_memcpy", "clib_memset",
                 "clib_strcat", "clib_strcmp", "clib_strcpy",
                 "clib_strncat", "clib_strncmp", "clib_strncpy",
                 "clib_strnlen", "clib_strstr", "clib_strtok",
                 "memcmp_s", "memcpy_s", "memset_s ",
                 "strcat_s", "strcmp_s", "strcpy_s",
                 "strncat_s", "strncmp_s", "strncpy_s",
                 "strnlen_s", "strstr_s", "strtok_s"]

        for name in names:
            error = self.vapi.cli("test string " + name)
            if error.find("failed") != -1:
                self.logger.critical("FAILURE in the " + name + " test")
                self.assertNotIn("failed", error)

if __name__ == '__main__':
    unittest.main(testRunner=VppTestRunner)
mi">4, MEMIF_MSG_TYPE_ADD_RING = 5, MEMIF_MSG_TYPE_CONNECT = 6, MEMIF_MSG_TYPE_CONNECTED = 7, MEMIF_MSG_TYPE_DISCONNECT = 8, } memif_msg_type_t; typedef enum { MEMIF_RING_S2M = 0, MEMIF_RING_M2S = 1 } memif_ring_type_t; typedef enum { MEMIF_INTERFACE_MODE_ETHERNET = 0, MEMIF_INTERFACE_MODE_IP = 1, MEMIF_INTERFACE_MODE_PUNT_INJECT = 2, } memif_interface_mode_t; typedef uint16_t memif_region_index_t; typedef uint32_t memif_region_offset_t; typedef uint64_t memif_region_size_t; typedef uint16_t memif_ring_index_t; typedef uint32_t memif_interface_id_t; typedef uint16_t memif_version_t; typedef uint8_t memif_log2_ring_size_t; /* * Socket messages */ typedef struct __attribute__ ((packed)) { uint8_t name[32]; memif_version_t min_version; memif_version_t max_version; memif_region_index_t max_region; memif_ring_index_t max_m2s_ring; memif_ring_index_t max_s2m_ring; memif_log2_ring_size_t max_log2_ring_size; } memif_msg_hello_t; typedef struct __attribute__ ((packed)) { memif_version_t version; memif_interface_id_t id; memif_interface_mode_t mode:8; uint8_t secret[24]; uint8_t name[32]; } memif_msg_init_t; typedef struct __attribute__ ((packed)) { memif_region_index_t index; memif_region_size_t size; } memif_msg_add_region_t; typedef struct __attribute__ ((packed)) { uint16_t flags; #define MEMIF_MSG_ADD_RING_FLAG_S2M (1 << 0) memif_ring_index_t index; memif_region_index_t region; memif_region_offset_t offset; memif_log2_ring_size_t log2_ring_size; uint16_t private_hdr_size; /* used for private metadata */ } memif_msg_add_ring_t; typedef struct __attribute__ ((packed)) { uint8_t if_name[32]; } memif_msg_connect_t; typedef struct __attribute__ ((packed)) { uint8_t if_name[32]; } memif_msg_connected_t; typedef struct __attribute__ ((packed)) { uint32_t code; uint8_t string[96]; } memif_msg_disconnect_t; typedef struct __attribute__ ((packed, aligned (128))) { memif_msg_type_t type:16; union { memif_msg_hello_t hello; memif_msg_init_t init; memif_msg_add_region_t add_region; memif_msg_add_ring_t add_ring; memif_msg_connect_t connect; memif_msg_connected_t connected; memif_msg_disconnect_t disconnect; }; } memif_msg_t; _Static_assert (sizeof (memif_msg_t) == 128, "Size of memif_msg_t must be 128"); /* * Ring and Descriptor Layout */ typedef struct __attribute__ ((packed)) { uint16_t flags; #define MEMIF_DESC_FLAG_NEXT (1 << 0) memif_region_index_t region; uint32_t length; memif_region_offset_t offset; uint32_t metadata; } memif_desc_t; _Static_assert (sizeof (memif_desc_t) == 16, "Size of memif_dsct_t must be 16 bytes"); #define MEMIF_CACHELINE_ALIGN_MARK(mark) \ uint8_t mark[0] __attribute__((aligned(MEMIF_CACHELINE_SIZE))) typedef struct { MEMIF_CACHELINE_ALIGN_MARK (cacheline0); uint32_t cookie; uint16_t flags; #define MEMIF_RING_FLAG_MASK_INT 1 volatile uint16_t head; MEMIF_CACHELINE_ALIGN_MARK (cacheline1); volatile uint16_t tail; MEMIF_CACHELINE_ALIGN_MARK (cacheline2); memif_desc_t desc[0]; } memif_ring_t; #endif /* _MEMIF_H_ */ /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */