def _run(self): if self.api: if ping_tcp_port("127.0.0.1", self.port): self.logger.critical( f"the configured TCP port: {self.port} is already used => exit" ) sys.exit(1) uvicorn.run( app="alwaysup.daemon:app", debug=False, workers=1, reload=False, port=self.port, host=self.bind_host, loop="auto", ws="auto", lifespan="auto", interface="auto", factory=False, access_log=False, ) else: signal.signal(signal.SIGINT, self._sig_handler) signal.signal(signal.SIGTERM, self._sig_handler) loop = asyncio.get_event_loop() loop.run_until_complete(self.__start_manager()) if self.__shutdown_task is not None: loop.run_until_complete(self.__shutdown_task) loop.close()
def main(): parser = argparse.ArgumentParser(description=DESCRIPTION) parser.add_argument("host", help="hostname/ip to test") parser.add_argument("port", help="tcp port to test", type=int) parser.add_argument("--timeout", help="timeout (in seconds)", type=int, default=5) parser.add_argument("--silent", help="if set, nothing is sent on stdout", action="store_true") args = parser.parse_args() res = ping_tcp_port(args.host, args.port, timeout=args.timeout) if res: if not args.silent: print("tcp port %s:%i is ok" % (args.host, args.port)) sys.exit(0) if not args.silent: print("tcp port %s:%i is not ok" % (args.host, args.port)) sys.exit(1)
def test_ping_tcp_port2(self, mock_socket_socket): class FakeSocketClass(object): close_called = False timeout_set = 0 def connect_ex(self, *args, **kwargs): return 0 def close(self): self.close_called = True def settimeout(self, timeout): self.timeout_set = timeout fake_socket_object = FakeSocketClass() mock_socket_socket.return_value = fake_socket_object res = ping_tcp_port("foobar", 80, timeout=2) self.assertTrue(res) self.assertTrue(fake_socket_object.close_called) self.assertEquals(fake_socket_object.timeout_set, 2)
def test_ping_tcp_port1(self): res = ping_tcp_port("foobar.notfound.fr", 80) self.assertFalse(res)