def test_engine_execute_errors(self):
# ensures that SQL errors are reported
with assert_raises(ProgrammingError):
with self.connection() as conn:
conn.execute('SELECT * FROM a_wrong_table').fetchall()
traces = self.tracer.writer.pop_traces()
# trace composition
eq_(len(traces), 1)
eq_(len(traces[0]), 1)
span = traces[0][0]
# span fields
eq_(span.name, '{}.query'.format(self.VENDOR))
eq_(span.service, self.SERVICE)
eq_(span.resource, 'SELECT * FROM a_wrong_table')
eq_(span.get_tag('sql.db'), self.SQL_DB)
ok_(span.get_tag('sql.rows') is None)
self.check_meta(span)
eq_(span.span_type, 'sql')
ok_(span.duration > 0)
# check the error
eq_(span.error, 1)
ok_('relation "a_wrong_table" does not exist' in span.get_tag('error.msg'))
ok_('ProgrammingError' in span.get_tag('error.type'))
ok_('ProgrammingError: relation "a_wrong_table" does not exist' in span.get_tag('error.stack'))
评论列表
文章目录