14 """Test for cancellation example."""
23 _BINARY_DIR = os.path.realpath(
24 os.path.join(os.path.dirname(os.path.abspath(__file__)),
'..'))
25 _SERVER_PATH = os.path.join(_BINARY_DIR,
'server')
26 _CLIENT_PATH = os.path.join(_BINARY_DIR,
'client')
29 @contextlib.contextmanager
31 sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
32 sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
33 if sock.getsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT) == 0:
34 raise RuntimeError(
"Failed to set SO_REUSEPORT.")
37 yield sock.getsockname()[1]
45 interesting_distance=None):
46 interesting_distance_args = ()
if interesting_distance
is None else (
47 '--show-inferior', interesting_distance)
48 return subprocess.Popen((_CLIENT_PATH, desired_string,
'--server',
49 'localhost:{}'.
format(server_port),
50 '--ideal-distance',
str(ideal_distance)) +
51 interesting_distance_args)
58 server_process = subprocess.Popen(
59 (_SERVER_PATH,
'--port',
str(test_port)))
62 client_return_code = client_process.wait()
63 self.assertEqual(0, client_return_code)
64 self.assertIsNone(server_process.poll())
71 server_process = subprocess.Popen(
72 (_SERVER_PATH,
'--port',
str(test_port)))
75 client_process1.send_signal(signal.SIGINT)
76 client_process1.wait()
78 client_return_code = client_process2.wait()
79 self.assertEqual(0, client_return_code)
80 self.assertIsNone(server_process.poll())
86 if __name__ ==
'__main__':
87 unittest.main(verbosity=2)