def test_settings_missing(): stdout = compat.StringIO() with override_settings(ELASTIC_APM={}): call_command('elasticapm', 'check', stdout=stdout) output = stdout.getvalue() assert 'Configuration errors detected' in output assert 'SERVICE_NAME not set' in output assert 'SECRET_TOKEN not set' in output
def test_middleware_not_first(): stdout = compat.StringIO() with override_settings(**middleware_setting(django.VERSION, ( 'foo', 'elasticapm.contrib.django.middleware.TracingMiddleware' ))): call_command('elasticapm', 'check', stdout=stdout) output = stdout.getvalue() assert 'not at the first position' in output
def test_test_exception(urlopen_mock): stdout = compat.StringIO() resp = mock.Mock(status=200, getheader=lambda h: 'http://example.com') urlopen_mock.return_value = resp with override_settings(**middleware_setting(django.VERSION, [ 'foo', 'elasticapm.contrib.django.middleware.TracingMiddleware' ])): call_command('elasticapm', 'test', stdout=stdout, stderr=stdout) output = stdout.getvalue() assert 'Success! We tracked the error successfully!' in output
def test_metadata_prepended(mock_send): transport = Transport(metadata={"x": "y"}, max_flush_time=5, compress_level=0) transport.queue("error", {}, flush=True) assert mock_send.call_count == 1 args, kwargs = mock_send.call_args if compat.PY2: data = gzip.GzipFile(fileobj=compat.StringIO(args[0])).read() else: data = gzip.decompress(args[0]) data = data.decode("utf-8").split("\n") assert "metadata" in data[0]
def test_metadata_prepended(mock_send, elasticapm_client): transport = Transport(client=elasticapm_client, compress_level=0) transport.start_thread() transport.queue("error", {}, flush=True) transport.close() assert mock_send.call_count == 1 args, kwargs = mock_send.call_args if compat.PY2: data = gzip.GzipFile(fileobj=compat.StringIO(args[0])).read() else: data = gzip.decompress(args[0]) data = data.decode("utf-8").split("\n") assert "metadata" in data[0]
def test_django_logging_request_kwarg(django_elasticapm_client): handler = LoggingHandler() logger = logging.getLogger(__name__) logger.handlers = [] logger.addHandler(handler) logger.error('This is a test error', extra={ 'request': WSGIRequest(environ={ 'wsgi.input': compat.StringIO(), 'REQUEST_METHOD': 'POST', 'SERVER_NAME': 'testserver', 'SERVER_PORT': '80', 'CONTENT_TYPE': 'application/json', 'ACCEPT': 'application/json', }) }) assert len(django_elasticapm_client.events) == 1 event = django_elasticapm_client.events.pop(0)['errors'][0] assert 'request' in event['context'] request = event['context']['request'] assert request['method'] == 'POST'
def test_middleware_not_set(): stdout = compat.StringIO() with override_settings(**middleware_setting(django.VERSION, ())): call_command('elasticapm', 'check', stdout=stdout) output = stdout.getvalue() assert 'Tracing middleware not configured!' in output
def test_subcommand_not_known(argv_mock): stdout = compat.StringIO() argv_mock.return_value = ['manage.py', 'elasticapm'] call_command('elasticapm', 'foo', stdout=stdout) output = stdout.getvalue() assert 'No such command "foo"' in output
def test_subcommand_not_set(argv_mock): stdout = compat.StringIO() argv_mock.return_value = ['manage.py', 'elasticapm'] call_command('elasticapm', stdout=stdout) output = stdout.getvalue() assert 'No command specified' in output
def test_cgroup_parsing(test_input, expected): f = compat.StringIO(test_input) result = cgroup.parse_cgroups(f) assert result == expected