Index: /test/services/delayed-echo.py
===================================================================
--- /test/services/delayed-echo.py	(revision 3)
+++ /test/services/delayed-echo.py	(revision 3)
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2014 Blindspot Security LLC
+# by Timothy D. Morgan
+# twits: @ecbftw
+
+import sys
+import time
+import socketserver
+import http.server
+
+
+class EchoHandler(http.server.BaseHTTPRequestHandler):
+    """
+    """
+
+    def do_GET(self):
+        #resolution = time.clock_getres(time.CLOCK_MONOTONIC)
+        received = int(time.monotonic()*1000000000)
+        wait_time = 0
+        if 't=' in self.path:
+            wait_time = int(self.path.split('t=', 1)[1], 10)
+
+        # Use a busy-wait with monotonic clock.  More accurate than time.sleep()
+        finish = received + wait_time
+        now = int(time.monotonic()*1000000000)
+        while now < finish:
+            now = int(time.monotonic()*1000000000)
+        
+        self.send_response(200)
+        self.send_header('Content-Type','text/plain; charset=UTF-8')
+        self.end_headers()
+
+        content = "waited: %d\n" % (now - received)
+        self.wfile.write(content.encode('utf-8'))
+        self.wfile.flush()
+
+
+if __name__ == "__main__":
+    HOST, PORT = "0.0.0.0", 3240
+    server = socketserver.TCPServer((HOST, PORT), EchoHandler)
+    server.serve_forever()
Index: /test/services/hasher.py
===================================================================
--- /test/services/hasher.py	(revision 3)
+++ /test/services/hasher.py	(revision 3)
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2015 Blindspot Security LLC
+# by Timothy D. Morgan
+# twits: @ecbftw
+
+import sys
+import time
+import hashlib
+import socketserver
+import http.server
+
+
+class HashHandler(http.server.BaseHTTPRequestHandler):
+    """
+    """
+
+    def do_GET(self):
+        resolution = time.clock_getres(time.CLOCK_MONOTONIC)
+
+        do_hash = False
+        if 't=' in self.path and self.path.split('t=', 1)[1] == '1':
+            do_hash = True
+
+        received = int(time.monotonic()/resolution)
+        if do_hash:
+            x = hashlib.md5(b'01234567').digest()
+        now = int(time.monotonic()/resolution)
+        
+        self.send_response(200)
+        self.send_header('Content-Type','text/plain; charset=UTF-8')
+        self.end_headers()
+
+        content = "waited: %d\n" % (now - received)
+        self.wfile.write(content.encode('utf-8'))
+        self.wfile.flush()
+
+
+if __name__ == "__main__":
+    HOST, PORT = "0.0.0.0", 3240
+    server = socketserver.TCPServer((HOST, PORT), HashHandler)
+    server.serve_forever()
Index: /test/services/parser.py
===================================================================
--- /test/services/parser.py	(revision 3)
+++ /test/services/parser.py	(revision 3)
@@ -0,0 +1,42 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2015 Blindspot Security LLC
+# by Timothy D. Morgan
+# twits: @ecbftw
+
+import sys
+import time
+import hashlib
+import socketserver
+import http.server
+
+
+class HashHandler(http.server.BaseHTTPRequestHandler):
+    """
+    """
+
+    def do_GET(self):
+        resolution = time.clock_getres(time.CLOCK_MONOTONIC)
+
+        do_parse = False
+        if 't=' in self.path and self.path.split('t=', 1)[1] == '1':
+            do_parse = True
+
+        received = int(time.monotonic()/resolution)
+        if do_parse:
+            x = json.loads('[{"sampler_rtt": 58998274, "test_case": "short", "requests_rtt": 58528000, "sample": 32, "unix_time": 1425061969829780736, "local_port": 45387, "order": 0}, {"sampler_rtt": 59420191, "test_case": "long", "requests_rtt": 58036000, "sample": 32, "unix_time": 1425061969829780736, "local_port": 45386, "order": 1}]')
+        now = int(time.monotonic()/resolution)
+        
+        self.send_response(200)
+        self.send_header('Content-Type','text/plain; charset=UTF-8')
+        self.end_headers()
+
+        content = "waited: %d\n" % (now - received)
+        self.wfile.write(content.encode('utf-8'))
+        self.wfile.flush()
+
+
+if __name__ == "__main__":
+    HOST, PORT = "0.0.0.0", 3240
+    server = socketserver.TCPServer((HOST, PORT), HashHandler)
+    server.serve_forever()
Index: /test/services/querier.py
===================================================================
--- /test/services/querier.py	(revision 3)
+++ /test/services/querier.py	(revision 3)
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+#
+# Copyright (C) 2015 Blindspot Security LLC
+# by Timothy D. Morgan
+# twits: @ecbftw
+
+import sys
+import time
+import hashlib
+import socketserver
+import http.server
+import sqlite3
+
+mem = sqlite3.connect(':memory:')
+disk = sqlite3.connect('/var/tmp/x.db')
+memc = mem.cursor()
+diskc = disk.cursor()
+
+q='''CREATE TABLE user
+     (username text, pwdhash text, other text, data real, stuff real)'''
+memc.execute(q)
+diskc.execute(q)
+q="INSERT INTO user VALUES ('jack','010203040506070809000A0B0C0D0E0F','hello',42,3.1415926535)"
+memc.execute(q)
+diskc.execute(q)
+mem.commit()
+disk.commit()
+
+
+
+class HashHandler(http.server.BaseHTTPRequestHandler):
+    """
+    """
+
+    def do_GET(self):
+        resolution = time.clock_getres(time.CLOCK_MONOTONIC)
+
+        conn = None
+        if 't=' in self.path:
+            t = self.path.split('t=', 1)[1]
+            if t == '1':
+                conn = memc
+            elif t == '2':
+                conn = diskc
+
+        received = int(time.monotonic()/resolution)
+        if conn != None:
+            x = conn.execute("SELECT * FROM user WHERE username='jack'")
+        now = int(time.monotonic()/resolution)
+        
+        self.send_response(200)
+        self.send_header('Content-Type','text/plain; charset=UTF-8')
+        self.end_headers()
+
+        content = "waited: %d\n" % (now - received)
+        self.wfile.write(content.encode('utf-8'))
+        self.wfile.flush()
+
+
+if __name__ == "__main__":
+    HOST, PORT = "0.0.0.0", 3240
+    server = socketserver.TCPServer((HOST, PORT), HashHandler)
+    server.serve_forever()
