summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--service/test/reactor/README.md7
-rw-r--r--service/test/reactor/defer.patch47
2 files changed, 54 insertions, 0 deletions
diff --git a/service/test/reactor/README.md b/service/test/reactor/README.md
new file mode 100644
index 00000000..8cbae687
--- /dev/null
+++ b/service/test/reactor/README.md
@@ -0,0 +1,7 @@
+To test the run times of functions in the main reactor thread:
+
+- Apply the patch defer.patch
+```
+patch <venv>/local/lib/python2.7/twisted/internet/defer.py service/test/reactor/defer.patch
+```
+- Run the user agent, preferrably out of debug mode, the timing of all the functions that take more than 100ms will be printed on the log
diff --git a/service/test/reactor/defer.patch b/service/test/reactor/defer.patch
new file mode 100644
index 00000000..de2f7d82
--- /dev/null
+++ b/service/test/reactor/defer.patch
@@ -0,0 +1,47 @@
+33a34,46
+> from datetime import datetime
+>
+> class Clock():
+> def __init__(self, label):
+> self.start = datetime.now()
+> self.label = label
+>
+> def stop(self):
+> end = datetime.now()
+> total = (end - self.start).total_seconds()
+> if total > 0.1:
+> print('EXECUTING {} {:.5f}'.format(self.label, total))
+>
+195c208,221
+<
+---
+> import threading
+> import inspect
+> def identifyItem(i):
+> if i is None:
+> return "(None)"
+> else:
+> if inspect.isbuiltin(i):
+> return str(i)
+> else:
+> if 'gotResult' == i.__name__:
+> return str(i.__closure__[1].cell_contents)
+> f = inspect.getsourcefile(i)
+> ln = inspect.getsourcelines(i)[1]
+> return "%s (%s:%d)" % (str(i), f, ln)
+300a327,329
+>
+> # print "addCallbacks(%s, %s)" % (identifyItem(callback), identifyItem(errback))
+>
+588c617,625
+< current.result = callback(current.result, *args, **kw)
+---
+> currentItem = identifyItem(callback)
+> currentThreadId = threading.current_thread().ident
+>
+> clock = Clock("%s in thread %d" % (currentItem, currentThreadId))
+> try:
+> current.result = callback(current.result, *args, **kw)
+> finally:
+> clock.stop()
+>