4 from __future__ import division
9 from threading import Thread
10 from log import single_line_delim
11 from framework import VppTestCase, running_extended_tests, VppTestRunner
15 def __init__(self, args, logger):
19 super(Worker, self).__init__()
22 executable = self.args[0]
23 self.logger.debug("Running executable w/args `%s'" % self.args)
24 env = os.environ.copy()
25 env["CK_LOG_FILE_NAME"] = "-"
26 self.process = subprocess.Popen(
27 self.args, shell=False, env=env, preexec_fn=os.setpgrp,
28 stdout=subprocess.PIPE, stderr=subprocess.PIPE)
29 out, err = self.process.communicate()
30 self.logger.debug("Finished running `%s'" % executable)
31 self.logger.info("Return code is `%s'" % self.process.returncode)
32 self.logger.info(single_line_delim)
33 self.logger.info("Executable `%s' wrote to stdout:" % executable)
34 self.logger.info(single_line_delim)
36 self.logger.info(single_line_delim)
37 self.logger.info("Executable `%s' wrote to stderr:" % executable)
38 self.logger.info(single_line_delim)
39 self.logger.error(err)
40 self.logger.info(single_line_delim)
41 self.result = self.process.returncode
44 @unittest.skipUnless(running_extended_tests(), "part of extended tests")
45 class VAPITestCase(VppTestCase):
48 def test_vapi_c(self):
49 """ run C VAPI tests """
51 built_root = os.getenv(var, None)
52 self.assertIsNotNone(built_root,
53 "Environment variable `%s' not set" % var)
54 executable = "%s/vapi_test/vapi_c_test" % built_root
56 [executable, "vapi client", self.shm_prefix], self.logger)
60 self.logger.info("Worker result is `%s'" % worker.result)
62 if worker.result is None:
66 "Timeout! Worker did not finish in %ss" % timeout)
67 os.killpg(os.getpgid(worker.process.pid), signal.SIGTERM)
70 raise Exception("Couldn't kill worker-spawned process")
73 "Timeout! Worker did not finish in %ss" % timeout)
74 self.assert_equal(worker.result, 0, "Binary test return code")
76 def test_vapi_cpp(self):
77 """ run C++ VAPI tests """
79 built_root = os.getenv(var, None)
80 self.assertIsNotNone(built_root,
81 "Environment variable `%s' not set" % var)
82 executable = "%s/vapi_test/vapi_cpp_test" % built_root
84 [executable, "vapi client", self.shm_prefix], self.logger)
88 self.logger.info("Worker result is `%s'" % worker.result)
90 if worker.result is None:
94 "Timeout! Worker did not finish in %ss" % timeout)
95 os.killpg(os.getpgid(worker.process.pid), signal.SIGTERM)
98 raise Exception("Couldn't kill worker-spawned process")
101 "Timeout! Worker did not finish in %ss" % timeout)
102 self.assert_equal(worker.result, 0, "Binary test return code")
105 if __name__ == '__main__':
106 unittest.main(testRunner=VppTestRunner)