def connect(self, endpoint, prefer_ipv6, sslconfig, extra): logging.info('runner_mlabns: server discovery... in progress') extra['address'] = endpoint[0] extra['port'] = endpoint[1] extra['requests'] = 0 if extra['policy'] not in ('random', ''): raise RuntimeError('runner_mlabns: unknown policy') return HttpClient.connect(self, endpoint, prefer_ipv6, sslconfig, extra)
def handle_end_of_body(self, stream): HttpClient.handle_end_of_body(self, stream) context = stream.opaque extra = context.extra if extra['requests'] <= 0: raise RuntimeError('runner_mlabns: unexpected response') extra['requests'] -= 1 tmp = context.headers.get(CONTENT_TYPE) if context.code != CODE200 or tmp != APPLICATION_JSON: logging.error('runner_mlabns: bad response') stream.close() return content = six.bytes_to_string(context.body.getvalue(), 'utf-8') response = json.loads(content) http_utils.prettyprint_json(response, '<') if extra['policy'] == 'random': RUNNER_HOSTS.set_random_host(response) else: RUNNER_HOSTS.set_closest_host(response) stream.close()
def handle_end_of_body(self, stream): # Note: this function MUST be callable multiple times HttpClient.handle_end_of_body(self, stream) context = stream.opaque extra = context.extra if extra['requests'] <= 0: raise RuntimeError('raw_negotiate: unexpected response') extra['requests'] -= 1 tmp = context.headers.get(CONTENT_TYPE) if context.code != CODE200 or tmp != APPLICATION_JSON: logging.error('raw_negotiate: bad response') stream.close() return response = json.loads(six.u(context.body.getvalue())) http_utils.prettyprint_json(response, '<') if STATE.current == 'negotiate': self._process_negotiate_response(stream, response) elif STATE.current == 'collect': self._process_collect_response(stream, response) else: raise RuntimeError('raw_negotiate: internal error')
def connect(self, endpoint, prefer_ipv6, sslconfig, extra): # Reset web interface STATE.update('test_skype', '---', publish=False) STATE.update('test_name', 'skype', publish=False) STATE.update('negotiate') # Variables extra['address'] = endpoint[0] extra['authorization'] = '' extra['body'] = http_utils.Body() extra['local_result'] = None extra['port'] = endpoint[1] extra['prefer_ipv6'] = prefer_ipv6 extra['requests'] = 0 extra['saved_stream'] = None extra['final_state'] = 0 return HttpClient.connect(self, endpoint, prefer_ipv6, sslconfig, extra)
def connect(self, endpoint, prefer_ipv6, sslconfig, extra): # Reset web interface STATE.update('test_latency', '---', publish=False) STATE.update('test_download', '---', publish=False) STATE.update('test_upload', '---', publish=False) STATE.update('test_progress', '0%', publish=False) STATE.update('test_name', 'raw', publish=False) STATE.update('negotiate') # Variables extra['address'] = endpoint[0] extra['authorization'] = '' extra['local_result'] = None extra['port'] = endpoint[1] extra['prefer_ipv6'] = prefer_ipv6 extra['requests'] = 0 extra['saved_stream'] = None extra['final_state'] = 0 return HttpClient.connect(self, endpoint, prefer_ipv6, sslconfig, extra)