Example #1
0
    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)
Example #2
0
    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)
Example #3
0
    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,
        )
Example #4
0
    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)
Example #5
0
def test_ctor():
    with pytest.raises(ValueError):
        httpd.FixtureServer("foo")
    httpd.FixtureServer(default_doc_root)
Example #6
0
def server():
    server = httpd.FixtureServer(default_doc_root)
    yield server
    server.stop()