fix(test): try with print_sql

This commit is contained in:
Rushabh Mehta 2020-08-12 18:06:10 +05:30
parent 541f7c016d
commit 14d9c28eb7
3 changed files with 29 additions and 24 deletions

View file

@ -267,7 +267,7 @@ def destroy():
# memcache
redis_server = None
def cache():
"""Returns memcache connection."""
"""Returns redis connection."""
global redis_server
if not redis_server:
from frappe.utils.redis_wrapper import RedisWrapper
@ -290,6 +290,9 @@ def errprint(msg):
error_log.append({"exc": msg})
def print_sql(enable=True):
return cache().set_value('print_sql', enable)
def log(msg):
"""Add to `debug_log`.

View file

@ -134,6 +134,8 @@ class Database(object):
if debug:
time_start = time()
self.log_query(query, values, debug, explain)
if values!=():
if isinstance(values, dict):
values = dict(values)
@ -142,41 +144,18 @@ class Database(object):
if not isinstance(values, (dict, tuple, list)):
values = (values,)
if debug and query.strip().lower().startswith('select'):
try:
if explain:
self.explain_query(query, values)
frappe.errprint(query % values)
except TypeError:
frappe.errprint([query, values])
if (frappe.conf.get("logging") or False)==2:
frappe.log("<<<< query")
frappe.log(query)
frappe.log("with values:")
frappe.log(values)
frappe.log(">>>>")
self._cursor.execute(query, values)
if frappe.flags.in_migrate:
self.log_touched_tables(query, values)
else:
if debug:
if explain:
self.explain_query(query)
frappe.errprint(query)
if (frappe.conf.get("logging") or False)==2:
frappe.log("<<<< query")
frappe.log(query)
frappe.log(">>>>")
self._cursor.execute(query)
if frappe.flags.in_migrate:
self.log_touched_tables(query)
if debug:
frappe.errprint(self._cursor.mogrify(query, values))
time_end = time()
frappe.errprint(("Execution time: {0} sec").format(round(time_end - time_start, 2)))
@ -213,6 +192,27 @@ class Database(object):
else:
return self._cursor.fetchall()
def log_query(self, query, values, debug, explain):
# for debugging in tests
if frappe.flags.in_test and frappe.cache().get_value('print_sql'):
print(self._cursor.mogrify(query, values))
# debug
if debug:
if explain and query.strip().lower().startswith('select'):
self.explain_query(query, values)
frappe.errprint(self._cursor.mogrify(query, values))
# info
if (frappe.conf.get("logging") or False)==2:
frappe.log("<<<< query")
frappe.log(query)
if values:
frappe.log("with values:")
frappe.log(values)
frappe.log(">>>>")
def explain_query(self, query, values=None):
"""Print `EXPLAIN` in error log."""
try:

View file

@ -206,8 +206,10 @@ class TestEventProducer(unittest.TestCase):
def test_inner_mapping(self):
producer = get_remote_site()
frappe.print_sql(True)
try:
setup_event_producer_for_inner_mapping()
frappe.print_sql(False)
except frappe.TimestampMismatchError:
# retry - event_producer keeps updating last_updated
# so retry if it fails the first time due to a background event