1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
import django
from django.core.urlresolvers import reverse
from django.test import TestCase
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core.context import Context
class XRayTestCase(TestCase):
def setUp(self):
django.setup()
xray_recorder.configure(service='test', sampling=False, context=Context())
xray_recorder.clear_trace_entities()
def tearDown(self):
xray_recorder.clear_trace_entities()
def test_ok(self):
url = reverse('200ok')
self.client.get(url)
segment = xray_recorder.emitter.pop()
request = segment.http['request']
response = segment.http['response']
assert request['method'] == 'GET'
assert request['client_ip'] == '127.0.0.1'
assert response['status'] == 200
def test_error(self):
self.client.get('/notfound/')
segment = xray_recorder.emitter.pop()
assert segment.error
request = segment.http['request']
response = segment.http['response']
assert request['method'] == 'GET'
assert request['client_ip'] == '127.0.0.1'
assert response['status'] == 404
def test_fault(self):
url = reverse('500fault')
try:
self.client.get(url)
except Exception:
pass
segment = xray_recorder.emitter.pop()
assert segment.fault
request = segment.http['request']
response = segment.http['response']
assert request['method'] == 'GET'
assert request['client_ip'] == '127.0.0.1'
assert response['status'] == 500
exception = segment.cause['exceptions'][0]
assert exception.type == 'KeyError'
def test_db(self):
url = reverse('call_db')
self.client.get(url)
segment = xray_recorder.emitter.pop()
assert len(segment.subsegments) == 1
subsegment = segment.subsegments[0]
assert subsegment.name == ':memory:'
assert not subsegment.in_progress
sql = subsegment.sql
assert sql['database_type'] == 'sqlite3'
assert sql['database_version']
def test_template(self):
url = reverse('template')
self.client.get(url)
segment = xray_recorder.emitter.pop()
assert len(segment.subsegments) == 1
subsegment = segment.subsegments[0]
assert subsegment.name == 'index.html'
assert not subsegment.in_progress
assert subsegment.namespace == 'local'
|