misc: Fix python scripts shebang line
[vpp.git] / test / test_vom.py
1 #!/usr/bin/env python3
2 """ VAPI test """
3
4 import unittest
5 import os
6 import signal
7 from framework import VppTestCase, running_extended_tests, \
8     VppTestRunner, Worker
9
10
11 @unittest.skipUnless(running_extended_tests, "part of extended tests")
12 class VOMTestCase(VppTestCase):
13     """ VPP Object Model Test """
14
15     @classmethod
16     def setUpClass(cls):
17         super(VOMTestCase, cls).setUpClass()
18
19     @classmethod
20     def tearDownClass(cls):
21         super(VOMTestCase, cls).tearDownClass()
22
23     def test_vom_cpp(self):
24         """ run C++ VOM tests """
25         var = "TEST_DIR"
26         built_root = os.getenv(var, None)
27         self.assertIsNotNone(built_root,
28                              "Environment variable `%s' not set" % var)
29         executable = "%s/build/vom_test/vom_test" % built_root
30         worker = Worker(
31             [executable, "vpp object model", self.shm_prefix], self.logger)
32         worker.start()
33         timeout = 120
34         worker.join(timeout)
35         self.logger.info("Worker result is `%s'" % worker.result)
36         error = False
37         if worker.result is None:
38             try:
39                 error = True
40                 self.logger.error(
41                     "Timeout! Worker did not finish in %ss" % timeout)
42                 os.killpg(os.getpgid(worker.process.pid), signal.SIGTERM)
43                 worker.join()
44             except:
45                 raise Exception("Couldn't kill worker-spawned process")
46         if error:
47             raise Exception(
48                 "Timeout! Worker did not finish in %ss" % timeout)
49         self.assert_equal(worker.result, 0, "Binary test return code")
50
51
52 if __name__ == '__main__':
53     unittest.main(testRunner=VppTestRunner)