Skip to content

Commit 722358f

Browse files
committed
Add first passing test
Phew
1 parent 27c668e commit 722358f

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed

tests/contrib/tornado/__init__.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# BSD 3-Clause License
2+
#
3+
# Copyright (c) 2019, Elasticsearch BV
4+
# All rights reserved.
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions are met:
8+
#
9+
# * Redistributions of source code must retain the above copyright notice, this
10+
# list of conditions and the following disclaimer.
11+
#
12+
# * Redistributions in binary form must reproduce the above copyright notice,
13+
# this list of conditions and the following disclaimer in the documentation
14+
# and/or other materials provided with the distribution.
15+
#
16+
# * Neither the name of the copyright holder nor the names of its
17+
# contributors may be used to endorse or promote products derived from
18+
# this software without specific prior written permission.
19+
#
20+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# BSD 3-Clause License
2+
#
3+
# Copyright (c) 2019, Elasticsearch BV
4+
# All rights reserved.
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions are met:
8+
#
9+
# * Redistributions of source code must retain the above copyright notice, this
10+
# list of conditions and the following disclaimer.
11+
#
12+
# * Redistributions in binary form must reproduce the above copyright notice,
13+
# this list of conditions and the following disclaimer in the documentation
14+
# and/or other materials provided with the distribution.
15+
#
16+
# * Neither the name of the copyright holder nor the names of its
17+
# contributors may be used to endorse or promote products derived from
18+
# this software without specific prior written permission.
19+
#
20+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23+
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24+
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25+
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26+
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27+
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28+
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30+
31+
import pytest # isort:skip
32+
33+
tornado = pytest.importorskip("tornado") # isort:skip
34+
35+
import mock
36+
37+
from elasticapm import async_capture_span
38+
from elasticapm.conf import constants
39+
from elasticapm.contrib.tornado import ElasticAPM
40+
41+
42+
@pytest.fixture
43+
def app(elasticapm_client):
44+
class HelloHandler(tornado.web.RequestHandler):
45+
def get(self):
46+
with async_capture_span("test"):
47+
pass
48+
return self.write("Hello, world")
49+
50+
class BoomHandler(tornado.web.RequestHandler):
51+
def get(self):
52+
raise ValueError()
53+
54+
app = tornado.web.Application([(r"/", HelloHandler), (r"/boom", BoomHandler)])
55+
apm = ElasticAPM(app, elasticapm_client)
56+
return app
57+
58+
59+
@pytest.mark.gen_test
60+
async def test_get(app, base_url, http_client):
61+
elasticapm_client = app.elasticapm_client
62+
response = await http_client.fetch(base_url)
63+
assert response.code == 200
64+
65+
assert len(elasticapm_client.events[constants.TRANSACTION]) == 1
66+
transaction = elasticapm_client.events[constants.TRANSACTION][0]
67+
spans = elasticapm_client.spans_for_transaction(transaction)
68+
assert len(spans) == 1
69+
span = spans[0]
70+
71+
assert transaction["name"] == "GET /"
72+
assert transaction["result"] == "HTTP 2xx"
73+
assert transaction["type"] == "request"
74+
assert transaction["span_count"]["started"] == 1
75+
request = transaction["context"]["request"]
76+
request["method"] == "GET"
77+
request["socket"] == {"remote_address": "127.0.0.1", "encrypted": False}
78+
79+
assert span["name"] == "test"
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
tornado
2+
pytest-tornado
3+
-r requirements-base.txt

0 commit comments

Comments
 (0)