def setUp(self, *args, **kwargs): super(TelemetryTestCase, self).setUp(*args, **kwargs) self.httpd = httpd.FixtureServer(self.testvars['server_root']) ping_route = [("POST", re.compile('/pings'), self.pings)] self.httpd.routes.extend(ping_route) self.httpd.start() self.ping_server_url = '{}pings'.format(self.httpd.get_url('/')) telemetry_prefs = { 'toolkit.telemetry.server': self.ping_server_url, 'toolkit.telemetry.initDelay': 1, 'toolkit.telemetry.minSubsessionLength': 0, 'datareporting.healthreport.uploadEnabled': True, 'datareporting.policy.dataSubmissionEnabled': True, 'datareporting.policy.dataSubmissionPolicyBypassNotification': True, 'toolkit.telemetry.log.level': 0, 'toolkit.telemetry.log.dump': True, 'toolkit.telemetry.send.overrideOfficialCheck': True } # Firefox will be forced to restart with the prefs enforced. self.marionette.enforce_gecko_prefs(telemetry_prefs) # Wait 5 seconds to ensure that telemetry has reinitialized time.sleep(5)
def setUp(self, *args, **kwargs): super(TelemetryTestCase, self).setUp(*args, **kwargs) @httpd.handlers.handler def pings_handler(request, response): """Handler for HTTP requests to the ping server.""" request_data = request.body if request.headers.get("Content-Encoding") == "gzip": request_data = zlib.decompress(request_data, zlib.MAX_WBITS | 16) ping_data = json.loads(request_data) # Store JSON data to self.pings to be used by wait_for_pings() self.pings.append(ping_data) ping_type = ping_data["type"] log_message = "pings_handler received '{}' ping".format(ping_type) if ping_type == "main": ping_reason = ping_data["payload"]["info"]["reason"] log_message = "{} with reason '{}'".format(log_message, ping_reason) self.logger.info(log_message) status_code = 200 content = "OK" headers = [ ("Content-Type", "text/plain"), ("Content-Length", len(content)), ] return (status_code, headers, content) self.httpd = httpd.FixtureServer(self.testvars['server_root']) self.httpd.router.register("POST", '/pings*', pings_handler) self.httpd.start() self.ping_server_url = '{}pings'.format(self.httpd.get_url('/')) telemetry_prefs = { 'toolkit.telemetry.server': self.ping_server_url, 'toolkit.telemetry.initDelay': 1, 'toolkit.telemetry.minSubsessionLength': 0, 'datareporting.healthreport.uploadEnabled': True, 'datareporting.policy.dataSubmissionEnabled': True, 'datareporting.policy.dataSubmissionPolicyBypassNotification': True, 'toolkit.telemetry.log.level': 'Trace', 'toolkit.telemetry.log.dump': True, 'toolkit.telemetry.send.overrideOfficialCheck': True } # Firefox will be forced to restart with the prefs enforced. self.marionette.enforce_gecko_prefs(telemetry_prefs) # Wait 5 seconds to ensure that telemetry has reinitialized time.sleep(5)
def __init__(self, server_root, url): self._logger = get_default_logger(component="fog_ping_server") # Ensure we see logs from wptserve try: wptserve.logger.set_logger(self._logger) except Exception: # Raises if already been set pass self.pings = [] @httpd.handlers.handler def pings_handler(request, response): """Handler for HTTP requests to the ping server.""" request_data = request.body if request.headers.get("Content-Encoding") == b"gzip": request_data = zlib.decompress(request_data, zlib.MAX_WBITS | 16) request_url = request.route_match.copy() self.pings.append( { "request_url": request_url, "payload": json.loads(request_data), "debug_tag": request.headers.get("X-Debug-ID"), } ) self._logger.info( "pings_handler received '{}' ping".format(request_url["doc_type"]) ) status_code = 200 content = "OK" headers = [ ("Content-Type", "text/plain"), ("Content-Length", len(content)), ] return (status_code, headers, content) self._httpd = httpd.FixtureServer(server_root, url=url) # See https://mozilla.github.io/glean/book/user/pings/index.html#ping-submission self._httpd.router.register( "POST", "/submit/{application_id}/{doc_type}/{glean_schema_version}/{document_id}", pings_handler, )
def __init__(self, server_root, url): self._logger = mozlog.get_default_logger(component="pingserver") self.pings = [] @httpd.handlers.handler def pings_handler(request, response): """Handler for HTTP requests to the ping server.""" request_data = request.body if request.headers.get("Content-Encoding") == "gzip": request_data = zlib.decompress(request_data, zlib.MAX_WBITS | 16) ping_data = json.loads(request_data) # Store JSON data to self.pings to be used by wait_for_pings() self.pings.append(ping_data) ping_type = ping_data["type"] log_message = "pings_handler received '{}' ping".format(ping_type) if ping_type == "main": ping_reason = ping_data["payload"]["info"]["reason"] log_message = "{} with reason '{}'".format( log_message, ping_reason) self._logger.info(log_message) status_code = 200 content = "OK" headers = [ ("Content-Type", "text/plain"), ("Content-Length", len(content)), ] return (status_code, headers, content) self._httpd = httpd.FixtureServer(server_root, url=url) self._httpd.router.register("POST", "/pings*", pings_handler)
def test_ctor(): with pytest.raises(ValueError): httpd.FixtureServer("foo") httpd.FixtureServer(default_doc_root)
def server(): server = httpd.FixtureServer(default_doc_root) yield server server.stop()