Skip to content

Commit f9187be

Browse files
authored
Fix tests using _span_recorder (#3633)
Instead of getting span from ._span_recorder get it from envelope.
1 parent e205f2d commit f9187be

File tree

3 files changed

+97
-64
lines changed

3 files changed

+97
-64
lines changed

tests/integrations/aiohttp/test_aiohttp.py

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -517,12 +517,16 @@ async def handler(request):
517517

518518

519519
@pytest.mark.asyncio
520-
async def test_outgoing_trace_headers(sentry_init, aiohttp_raw_server, aiohttp_client):
520+
async def test_outgoing_trace_headers(
521+
sentry_init, aiohttp_raw_server, aiohttp_client, capture_envelopes
522+
):
521523
sentry_init(
522524
integrations=[AioHttpIntegration()],
523525
traces_sample_rate=1.0,
524526
)
525527

528+
envelopes = capture_envelopes()
529+
526530
async def handler(request):
527531
return web.Response(text="OK")
528532

@@ -536,15 +540,18 @@ async def handler(request):
536540
) as transaction:
537541
client = await aiohttp_client(raw_server)
538542
resp = await client.get("/")
539-
request_span = transaction._span_recorder.spans[-1]
540-
541-
assert resp.request_info.headers[
542-
"sentry-trace"
543-
] == "{trace_id}-{parent_span_id}-{sampled}".format(
544-
trace_id=transaction.trace_id,
545-
parent_span_id=request_span.span_id,
546-
sampled=1,
547-
)
543+
544+
(envelope,) = envelopes
545+
transaction = envelope.get_transaction_event()
546+
request_span = transaction["spans"][-1]
547+
548+
assert resp.request_info.headers[
549+
"sentry-trace"
550+
] == "{trace_id}-{parent_span_id}-{sampled}".format(
551+
trace_id=transaction["contexts"]["trace"]["trace_id"],
552+
parent_span_id=request_span["span_id"],
553+
sampled=1,
554+
)
548555

549556

550557
@pytest.mark.asyncio

tests/integrations/httpx/test_httpx.py

Lines changed: 38 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,13 @@ def before_breadcrumb(crumb, hint):
6161
"httpx_client",
6262
(httpx.Client(), httpx.AsyncClient()),
6363
)
64-
def test_outgoing_trace_headers(sentry_init, httpx_client):
65-
sentry_init(traces_sample_rate=1.0, integrations=[HttpxIntegration()])
64+
def test_outgoing_trace_headers(sentry_init, httpx_client, capture_envelopes):
65+
sentry_init(
66+
traces_sample_rate=1.0,
67+
integrations=[HttpxIntegration()],
68+
)
69+
70+
envelopes = capture_envelopes()
6671

6772
url = "http://example.com/"
6873
responses.add(responses.GET, url, status=200)
@@ -79,27 +84,34 @@ def test_outgoing_trace_headers(sentry_init, httpx_client):
7984
else:
8085
response = httpx_client.get(url)
8186

82-
request_span = transaction._span_recorder.spans[-1]
83-
assert response.request.headers[
84-
"sentry-trace"
85-
] == "{trace_id}-{parent_span_id}-{sampled}".format(
86-
trace_id=transaction.trace_id,
87-
parent_span_id=request_span.span_id,
88-
sampled=1,
89-
)
87+
(envelope,) = envelopes
88+
transaction = envelope.get_transaction_event()
89+
request_span = transaction["spans"][-1]
90+
91+
assert response.request.headers[
92+
"sentry-trace"
93+
] == "{trace_id}-{parent_span_id}-{sampled}".format(
94+
trace_id=transaction["contexts"]["trace"]["trace_id"],
95+
parent_span_id=request_span["span_id"],
96+
sampled=1,
97+
)
9098

9199

92100
@pytest.mark.parametrize(
93101
"httpx_client",
94102
(httpx.Client(), httpx.AsyncClient()),
95103
)
96-
def test_outgoing_trace_headers_append_to_baggage(sentry_init, httpx_client):
104+
def test_outgoing_trace_headers_append_to_baggage(
105+
sentry_init, httpx_client, capture_envelopes
106+
):
97107
sentry_init(
98108
traces_sample_rate=1.0,
99109
integrations=[HttpxIntegration()],
100110
release="d08ebdb9309e1b004c6f52202de58a09c2268e42",
101111
)
102112

113+
envelopes = capture_envelopes()
114+
103115
url = "http://example.com/"
104116
responses.add(responses.GET, url, status=200)
105117

@@ -115,18 +127,21 @@ def test_outgoing_trace_headers_append_to_baggage(sentry_init, httpx_client):
115127
else:
116128
response = httpx_client.get(url, headers={"baGGage": "custom=data"})
117129

118-
request_span = transaction._span_recorder.spans[-1]
119-
assert response.request.headers[
120-
"sentry-trace"
121-
] == "{trace_id}-{parent_span_id}-{sampled}".format(
122-
trace_id=transaction.trace_id,
123-
parent_span_id=request_span.span_id,
124-
sampled=1,
125-
)
126-
assert (
127-
response.request.headers["baggage"]
128-
== "custom=data,sentry-trace_id=01234567890123456789012345678901,sentry-environment=production,sentry-release=d08ebdb9309e1b004c6f52202de58a09c2268e42,sentry-transaction=/interactions/other-dogs/new-dog,sentry-sample_rate=1.0,sentry-sampled=true"
129-
)
130+
(envelope,) = envelopes
131+
transaction = envelope.get_transaction_event()
132+
request_span = transaction["spans"][-1]
133+
134+
assert response.request.headers[
135+
"sentry-trace"
136+
] == "{trace_id}-{parent_span_id}-{sampled}".format(
137+
trace_id=transaction["contexts"]["trace"]["trace_id"],
138+
parent_span_id=request_span["span_id"],
139+
sampled=1,
140+
)
141+
assert (
142+
response.request.headers["baggage"]
143+
== "custom=data,sentry-trace_id=01234567890123456789012345678901,sentry-environment=production,sentry-release=d08ebdb9309e1b004c6f52202de58a09c2268e42,sentry-transaction=/interactions/other-dogs/new-dog,sentry-sample_rate=1.0,sentry-sampled=true"
144+
)
130145

131146

132147
@pytest.mark.parametrize(

tests/integrations/stdlib/test_httplib.py

Lines changed: 42 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ def test_httplib_misuse(sentry_init, capture_events, request):
130130
)
131131

132132

133-
def test_outgoing_trace_headers(sentry_init, monkeypatch):
133+
def test_outgoing_trace_headers(sentry_init, monkeypatch, capture_envelopes):
134134
# HTTPSConnection.send is passed a string containing (among other things)
135135
# the headers on the request. Mock it so we can check the headers, and also
136136
# so it doesn't try to actually talk to the internet.
@@ -139,6 +139,8 @@ def test_outgoing_trace_headers(sentry_init, monkeypatch):
139139

140140
sentry_init(traces_sample_rate=1.0)
141141

142+
envelopes = capture_envelopes()
143+
142144
headers = {}
143145
headers["baggage"] = (
144146
"other-vendor-value-1=foo;bar;baz, sentry-trace_id=771a43a4192642f0b136d5159a501700, "
@@ -163,25 +165,28 @@ def test_outgoing_trace_headers(sentry_init, monkeypatch):
163165
key, val = line.split(": ")
164166
request_headers[key] = val
165167

166-
request_span = transaction._span_recorder.spans[-1]
167-
expected_sentry_trace = "{trace_id}-{parent_span_id}-{sampled}".format(
168-
trace_id=transaction.trace_id,
169-
parent_span_id=request_span.span_id,
170-
sampled=1,
171-
)
172-
assert request_headers["sentry-trace"] == expected_sentry_trace
168+
(envelope,) = envelopes
169+
transaction = envelope.get_transaction_event()
170+
request_span = transaction["spans"][-1]
173171

174-
expected_outgoing_baggage = (
175-
"sentry-trace_id=771a43a4192642f0b136d5159a501700,"
176-
"sentry-public_key=49d0f7386ad645858ae85020e393bef3,"
177-
"sentry-sample_rate=0.01337,"
178-
"sentry-user_id=Am%C3%A9lie"
179-
)
172+
expected_sentry_trace = "{trace_id}-{parent_span_id}-{sampled}".format(
173+
trace_id=transaction["contexts"]["trace"]["trace_id"],
174+
parent_span_id=request_span["span_id"],
175+
sampled=1,
176+
)
177+
assert request_headers["sentry-trace"] == expected_sentry_trace
178+
179+
expected_outgoing_baggage = (
180+
"sentry-trace_id=771a43a4192642f0b136d5159a501700,"
181+
"sentry-public_key=49d0f7386ad645858ae85020e393bef3,"
182+
"sentry-sample_rate=0.01337,"
183+
"sentry-user_id=Am%C3%A9lie"
184+
)
180185

181-
assert request_headers["baggage"] == expected_outgoing_baggage
186+
assert request_headers["baggage"] == expected_outgoing_baggage
182187

183188

184-
def test_outgoing_trace_headers_head_sdk(sentry_init, monkeypatch):
189+
def test_outgoing_trace_headers_head_sdk(sentry_init, monkeypatch, capture_envelopes):
185190
# HTTPSConnection.send is passed a string containing (among other things)
186191
# the headers on the request. Mock it so we can check the headers, and also
187192
# so it doesn't try to actually talk to the internet.
@@ -192,6 +197,9 @@ def test_outgoing_trace_headers_head_sdk(sentry_init, monkeypatch):
192197
monkeypatch.setattr(random, "random", lambda: 0.1)
193198

194199
sentry_init(traces_sample_rate=0.5, release="foo")
200+
201+
envelopes = capture_envelopes()
202+
195203
transaction = Transaction.continue_from_headers({})
196204

197205
with start_transaction(transaction=transaction, name="Head SDK tx") as transaction:
@@ -204,23 +212,26 @@ def test_outgoing_trace_headers_head_sdk(sentry_init, monkeypatch):
204212
key, val = line.split(": ")
205213
request_headers[key] = val
206214

207-
request_span = transaction._span_recorder.spans[-1]
208-
expected_sentry_trace = "{trace_id}-{parent_span_id}-{sampled}".format(
209-
trace_id=transaction.trace_id,
210-
parent_span_id=request_span.span_id,
211-
sampled=1,
212-
)
213-
assert request_headers["sentry-trace"] == expected_sentry_trace
215+
(envelope,) = envelopes
216+
transaction = envelope.get_transaction_event()
217+
request_span = transaction["spans"][-1]
218+
219+
expected_sentry_trace = "{trace_id}-{parent_span_id}-{sampled}".format(
220+
trace_id=transaction["contexts"]["trace"]["trace_id"],
221+
parent_span_id=request_span["span_id"],
222+
sampled=1,
223+
)
224+
assert request_headers["sentry-trace"] == expected_sentry_trace
214225

215-
expected_outgoing_baggage = (
216-
"sentry-trace_id=%s,"
217-
"sentry-environment=production,"
218-
"sentry-release=foo,"
219-
"sentry-sample_rate=0.5,"
220-
"sentry-sampled=%s"
221-
) % (transaction.trace_id, "true" if transaction.sampled else "false")
226+
expected_outgoing_baggage = (
227+
"sentry-trace_id=%s,"
228+
"sentry-environment=production,"
229+
"sentry-release=foo,"
230+
"sentry-sample_rate=0.5,"
231+
"sentry-sampled=%s"
232+
) % (transaction.trace_id, "true" if transaction.sampled else "false")
222233

223-
assert request_headers["baggage"] == expected_outgoing_baggage
234+
assert request_headers["baggage"] == expected_outgoing_baggage
224235

225236

226237
@pytest.mark.parametrize(

0 commit comments

Comments
 (0)