class DDPTestServer(object): """DDP server with auto start and stop.""" server_addr = '127.0.0.1' server_port_range = range(8000, 8080) ssl_certfile_path = None ssl_keyfile_path = None def __init__(self): """Fire up the DDP server.""" self.server_port = 8000 kwargs = {} if self.ssl_certfile_path: kwargs['certfile'] = self.ssl_certfile_path if self.ssl_keyfile_path: kwargs['keyfile'] = self.ssl_keyfile_path self.scheme = 'https' if kwargs else 'http' for server_port in self.server_port_range: self.server = DDPLauncher(debug=True) self.server.add_web_servers( [ (self.server_addr, server_port), ], **kwargs ) try: self.server.start() self.server_port = server_port return # server started except socket.error as err: if err.errno != errno.EADDRINUSE: raise # error wasn't "address in use", re-raise. continue # port in use, try next port. raise RuntimeError('Failed to start DDP server.') def stop(self): """Shut down the DDP server.""" self.server.stop() def websocket(self, url, *args, **kwargs): """Return a WebSocketClient for the given URL.""" return WebSocketClient( self.url(url).replace('http', 'ws'), *args, **kwargs ) def sockjs(self, url, *args, **kwargs): """Return a SockJSClient for the given URL.""" return SockJSClient( self.url(url).replace('http', 'ws'), *args, **kwargs ) def url(self, path): """Return full URL for given path.""" return urljoin( '%s://%s:%d' % (self.scheme, self.server_addr, self.server_port), path, )
class DDPTestServer(object): """DDP server with auto start and stop.""" server_addr = '127.0.0.1' server_port_range = range(8000, 8080) ssl_certfile_path = None ssl_keyfile_path = None def __init__(self): """Fire up the DDP server.""" self.server_port = 8000 kwargs = {} if self.ssl_certfile_path: kwargs['certfile'] = self.ssl_certfile_path if self.ssl_keyfile_path: kwargs['keyfile'] = self.ssl_keyfile_path self.scheme = 'https' if kwargs else 'http' for server_port in self.server_port_range: self.server = DDPLauncher(debug=True) self.server.add_web_servers([ (self.server_addr, server_port), ], **kwargs) try: self.server.start() self.server_port = server_port return # server started except socket.error as err: if err.errno != errno.EADDRINUSE: raise # error wasn't "address in use", re-raise. continue # port in use, try next port. raise RuntimeError('Failed to start DDP server.') def stop(self): """Shut down the DDP server.""" self.server.stop() def websocket(self, url, *args, **kwargs): """Return a WebSocketClient for the given URL.""" return WebSocketClient( self.url(url).replace('http', 'ws'), *args, **kwargs) def sockjs(self, url, *args, **kwargs): """Return a SockJSClient for the given URL.""" return SockJSClient( self.url(url).replace('http', 'ws'), *args, **kwargs) def url(self, path): """Return full URL for given path.""" return urljoin( '%s://%s:%d' % (self.scheme, self.server_addr, self.server_port), path, )
class DDPServerTestCase(TestCase): """Test case that starts a DDP server.""" server_addr = '127.0.0.1' server_port_range = range(8000, 8080) ssl_certfile_path = None ssl_keyfile_path = None def setUp(self): """Fire up the DDP server.""" self.server_port = 8000 kwargs = {} if self.ssl_certfile_path: kwargs['certfile'] = self.ssl_certfile_path if self.ssl_keyfile_path: kwargs['keyfile'] = self.ssl_keyfile_path self.scheme = 'https' if kwargs else 'http' for server_port in self.server_port_range: self.server = DDPLauncher(debug=True) self.server.add_web_servers( [ (self.server_addr, server_port), ], **kwargs ) try: self.server.start() self.server_port = server_port return # server started except socket.error as err: if err.errno != errno.EADDRINUSE: raise # error wasn't "address in use", re-raise. continue # port in use, try next port. raise RuntimeError('Failed to start DDP server.') def tearDown(self): """Shut down the DDP server.""" self.server.stop() def url(self, path): """Return full URL for given path.""" return urljoin( '%s://%s:%d' % (self.scheme, self.server_addr, self.server_port), path, )
class DDPServerTestCase(TestCase): """Test case that starts a DDP server.""" server_addr = '127.0.0.1' server_port_range = range(8000, 8080) ssl_certfile_path = None ssl_keyfile_path = None def setUp(self): """Fire up the DDP server.""" self.server_port = 8000 kwargs = {} if self.ssl_certfile_path: kwargs['certfile'] = self.ssl_certfile_path if self.ssl_keyfile_path: kwargs['keyfile'] = self.ssl_keyfile_path self.scheme = 'https' if kwargs else 'http' for server_port in self.server_port_range: self.server = DDPLauncher(debug=True) self.server.add_web_servers([ (self.server_addr, server_port), ], **kwargs) try: self.server.start() self.server_port = server_port return # server started except socket.error as err: if err.errno != errno.EADDRINUSE: raise # error wasn't "address in use", re-raise. continue # port in use, try next port. raise RuntimeError('Failed to start DDP server.') def tearDown(self): """Shut down the DDP server.""" self.server.stop() def url(self, path): """Return full URL for given path.""" return urljoin( '%s://%s:%d' % (self.scheme, self.server_addr, self.server_port), path, )