1 # Copyright (c) 2019. Vinci Consulting Corp. All Rights Reserved.
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
16 import multiprocessing as mp
19 from unittest import mock
21 from vpp_papi import vpp_papi
22 from vpp_papi import vpp_transport_shmem
25 class TestVppPapiVPPApiClient(unittest.TestCase):
27 def test_getcontext(self):
28 vpp_papi.VPPApiClient.apidir = '.'
29 c = vpp_papi.VPPApiClient(testmode=True, use_socket=True)
31 # reset initialization at module load time.
32 c.get_context.context = mp.Value(ctypes.c_uint, 0)
35 self.assertEqual(11, c.get_context())
38 class TestVppPapiVPPApiClientMp(unittest.TestCase):
39 # Test under multiple processes to simulate running forked under
40 # run_tests.py (eg. make test TEST_JOBS=10)
42 def test_get_context_mp(self):
43 vpp_papi.VPPApiClient.apidir = '.'
44 c = vpp_papi.VPPApiClient(testmode=True, use_socket=True)
46 # reset initialization at module load time.
47 c.get_context.context = mp.Value(ctypes.c_uint, 0)
48 procs = [mp.Process(target=c.get_context, args=()) for i in range(10)]
55 # AssertionError: 11 != 1
56 self.assertEqual(11, c.get_context())
59 class TestVppTypes(unittest.TestCase):
61 def test_enum_from_json(self):
83 "IF_API_TYPE_HARDWARE",
105 processor = vpp_papi.VPPApiJSONFiles()
107 # add the types to vpp_serializer
108 processor.process_json_str(json_api)
110 vpp_transport_shmem.VppTransport = mock.MagicMock()
111 ac = vpp_papi.VPPApiClient(apifiles=[], testmode=True)
112 type_name = "vl_api_if_type_t"
113 t = ac.get_type(type_name)
114 self.assertTrue(str(t).startswith("VPPEnumType"))
115 self.assertEqual(t.name, type_name)