def test_gen_request(mocker): mock_addr = 'mock_addr:1234' operator = mocker.Mock() master = mocker.Mock() driver = MesosOperatorMasterDriver(master, operator) driver._master = mock_addr req = driver.gen_request() parser = HttpParser(0) assert len(req) == parser.execute(req, len(req)) assert parser.is_headers_complete() assert parser.get_method() == 'POST' assert parser.get_url() == '/api/v1/operator' assert parser.is_partial_body() body = parser.recv_body() result = json.loads(body.decode('utf-8')) assert result['type'] == 'SUBSCRIBE' headers = {k.upper(): v for k, v in parser.get_headers().items()} assert headers == { 'HOST': mock_addr, 'CONTENT-TYPE': 'application/json', 'ACCEPT': 'application/json', 'CONNECTION': 'close', 'CONTENT-LENGTH': str(len(body)) } assert parser.is_message_complete()
def test_gen_request(mocker): mock_addr = 'mock_addr:1234' sched = mocker.Mock() framework = {'failover_timeout': 0} master = mocker.Mock() driver = MesosSchedulerDriver(sched, framework, master) driver._master = mock_addr req = driver.gen_request() parser = HttpParser(0) assert len(req) == parser.execute(req, len(req)) assert parser.is_headers_complete() assert parser.get_method() == 'POST' assert parser.get_url() == '/api/v1/scheduler' assert parser.is_partial_body() body = parser.recv_body() result = json.loads(body.decode('utf-8')) assert result['type'] == 'SUBSCRIBE' assert result['subscribe'] == {'framework_info': framework} headers = {k.upper(): v for k, v in parser.get_headers().items()} assert headers == { 'HOST': mock_addr, 'CONTENT-TYPE': 'application/json', 'ACCEPT': 'application/json', 'CONNECTION': 'close', 'CONTENT-LENGTH': str(len(body)) } assert parser.is_message_complete()
def test_gen_request(mocker): mock_addr = 'mock_addr:1234' sched = mocker.Mock() framework = { 'failover_timeout': 0 } master = mocker.Mock() driver = MesosSchedulerDriver(sched, framework, master) driver._master = mock_addr req = driver.gen_request() parser = HttpParser(0) assert len(req) == parser.execute(req, len(req)) assert parser.is_headers_complete() assert parser.get_method() == 'POST' assert parser.get_url() == '/api/v1/scheduler' assert parser.is_partial_body() body = parser.recv_body() result = json.loads(body.decode('utf-8')) assert result['type'] == 'SUBSCRIBE' assert result['subscribe'] == { 'framework_info': framework } headers = {k.upper(): v for k, v in parser.get_headers().items()} assert headers == { 'HOST': mock_addr, 'CONTENT-TYPE': 'application/json', 'ACCEPT': 'application/json', 'CONNECTION': 'close', 'CONTENT-LENGTH': str(len(body)) } assert parser.is_message_complete()
def test_gen_request(mocker): agent_addr = 'mock_addr:12345' framework_id = str(uuid.uuid4()) executor_id = str(uuid.uuid4()) env = { 'MESOS_LOCAL': 'true', 'MESOS_AGENT_ENDPOINT': agent_addr, 'MESOS_FRAMEWORK_ID': framework_id, 'MESOS_EXECUTOR_ID': executor_id, } mocker.patch('os.environ', env) exc = mocker.Mock() driver = MesosExecutorDriver(exc) driver._master = agent_addr assert driver.framework_id == dict(value=framework_id) assert driver.executor_id == dict(value=executor_id) assert -1e-5 < driver.grace_shutdown_period < 1e-5 assert not driver.checkpoint assert driver.executor is exc req = driver.gen_request() parser = HttpParser(0) assert len(req) == parser.execute(req, len(req)) assert parser.is_headers_complete() assert parser.get_method() == 'POST' assert parser.get_url() == '/api/v1/executor' assert parser.is_partial_body() body = parser.recv_body() result = json.loads(body.decode('utf-8')) assert result == { 'type': 'SUBSCRIBE', 'framework_id': { 'value': framework_id, }, 'executor_id': { 'value': executor_id, }, 'subscribe': { 'unacknowledged_tasks': [], 'unacknowledged_updates': [], } } headers = {k.upper(): v for k, v in parser.get_headers().items()} assert headers == { 'HOST': agent_addr, 'CONTENT-TYPE': 'application/json', 'ACCEPT': 'application/json', 'CONNECTION': 'close', 'CONTENT-LENGTH': str(len(body)) } assert parser.is_message_complete()
def handle(cls, msg): parser = HttpParser() parser.execute(msg, len(msg)) url = parser.get_url() if cls.path and cls.path in url: cls.record( "%s://%s%s" % (str("https" if cls.ishttps else "http"), cls.host, url), json.dumps(parser.get_headers()), parser.recv_body()) # Support extension callback = None if cls.ext_file: ext = __import__(cls.ext_file[:-3]).EXT callback = ext.do(url) return cls.send(msg, callback)