Skip to content

Commit 66000c7

Browse files
committed
Use full module path for subclass.
1 parent 9d86951 commit 66000c7

File tree

2 files changed

+18
-9
lines changed

2 files changed

+18
-9
lines changed

aws_xray_sdk/ext/httplib/patch.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,14 @@ def http_send_request_processor(wrapped, instance, args, kwargs, return_value,
102102
subsegment.add_exception(exception, stack)
103103

104104

105-
def _ignore_request(subclass, hostname, url):
105+
def _ignore_request(instance, hostname, url):
106106
global _XRAY_IGNORE
107+
module = instance.__class__.__module__
108+
if module is None or module == str.__class__.__module__:
109+
subclass = instance.__class__.__name__
110+
else:
111+
subclass = module + '.' + instance.__class__.__name__
112+
print(subclass)
107113
for rule in _XRAY_IGNORE:
108114
subclass_match = subclass == rule.subclass if rule.subclass is not None else True
109115
host_match = fnmatch.fnmatch(hostname, rule.hostname) if rule.hostname is not None else True
@@ -116,7 +122,7 @@ def _ignore_request(subclass, hostname, url):
116122
def _send_request(wrapped, instance, args, kwargs):
117123
def decompose_args(method, url, body, headers, encode_chunked=False):
118124
# skip any ignored requests
119-
if _ignore_request(type(instance).__name__, instance.host, url):
125+
if _ignore_request(instance, instance.host, url):
120126
return wrapped(*args, **kwargs)
121127

122128
# Only injects headers when the subsegment for the outgoing

tests/ext/httplib/test_httplib.py

+10-7
Original file line numberDiff line numberDiff line change
@@ -171,15 +171,16 @@ def test_ignore_hostname_glob():
171171
assert len(xray_recorder.current_segment().subsegments) == 0
172172

173173

174-
class TestClass(httplib.HTTPSConnection):
174+
class CustomHttpsConnection(httplib.HTTPSConnection):
175175
pass
176176

177177

178178
def test_ignore_subclass():
179179
from aws_xray_sdk.ext.httplib import add_ignored
180180
path = '/status/200'
181-
add_ignored(subclass='TestClass')
182-
conn = TestClass(BASE_URL)
181+
subclass = 'tests.ext.httplib.test_httplib.CustomHttpsConnection'
182+
add_ignored(subclass=subclass)
183+
conn = CustomHttpsConnection(BASE_URL)
183184
conn.request('GET', path)
184185
conn.getresponse()
185186
assert len(xray_recorder.current_segment().subsegments) == 0
@@ -188,8 +189,9 @@ def test_ignore_subclass():
188189
def test_ignore_multiple_match():
189190
from aws_xray_sdk.ext.httplib import add_ignored
190191
path = '/status/200'
191-
add_ignored(subclass='TestClass', hostname=BASE_URL)
192-
conn = TestClass(BASE_URL)
192+
subclass = 'tests.ext.httplib.test_httplib.CustomHttpsConnection'
193+
add_ignored(subclass=subclass, hostname=BASE_URL)
194+
conn = CustomHttpsConnection(BASE_URL)
193195
conn.request('GET', path)
194196
conn.getresponse()
195197
assert len(xray_recorder.current_segment().subsegments) == 0
@@ -198,8 +200,9 @@ def test_ignore_multiple_match():
198200
def test_ignore_multiple_no_match():
199201
from aws_xray_sdk.ext.httplib import add_ignored
200202
path = '/status/200'
201-
add_ignored(subclass='TestClass', hostname='fake.host')
202-
conn = TestClass(BASE_URL)
203+
subclass = 'tests.ext.httplib.test_httplib.CustomHttpsConnection'
204+
add_ignored(subclass=subclass, hostname='fake.host')
205+
conn = CustomHttpsConnection(BASE_URL)
203206
conn.request('GET', path)
204207
conn.getresponse()
205208
assert len(xray_recorder.current_segment().subsegments) > 0

0 commit comments

Comments
 (0)