def test_audit_logging(server, insecure_server, client_cls, proxy_host, exception): audit_log_fp = StringIO() params = {"method": "metric_data"} prefix = getattr(client_cls, "PREFIX_SCHEME", "https://") if exception: port = MockExternalHTTPServer.get_open_port() elif prefix == "https://": port = server.port else: port = insecure_server.port internal_metrics = CustomMetrics() with client_cls( "localhost", port, proxy_scheme="https", proxy_host=proxy_host, proxy_port=server.port if not exception else port, audit_log_fp=audit_log_fp, disable_certificate_validation=True, ) as client: with InternalTraceContext(internal_metrics): try: client.send_request(params=params) exc = "" except Exception as e: exc = callable_name(type(e.args[0])) internal_metrics = dict(internal_metrics.metrics()) if exception and client_cls is ApplicationModeClient: if proxy_host: connection = "https-proxy" else: connection = "direct" assert internal_metrics == { "Supportability/Python/Collector/Failures": [1, 0, 0, 0, 0, 0], "Supportability/Python/Collector/Failures/%s" % connection: [1, 0, 0, 0, 0, 0], "Supportability/Python/Collector/Exception/%s" % exc: [1, 0, 0, 0, 0, 0], } else: assert not internal_metrics # Verify the audit log isn't empty assert audit_log_fp.tell() audit_log_fp.seek(0) audit_log_contents = audit_log_fp.read() assert prefix in audit_log_contents
def test_closed_connection(): with HttpClient("localhost", MockExternalHTTPServer.get_open_port()) as client: with pytest.raises(NetworkInterfaceException): client.send_request()