|
|
@@ -16,6 +16,7 @@ import time |
|
|
|
import requests |
|
|
|
import socket |
|
|
|
import sqlite3 |
|
|
|
import cherrypy |
|
|
|
|
|
|
|
from nilmdb.utils import serializer_proxy |
|
|
|
from nilmdb.server.interval import Interval |
|
|
@@ -163,21 +164,34 @@ class TestBlockingServer(object): |
|
|
|
self.server = nilmdb.server.Server(self.db, host = "127.0.0.1", |
|
|
|
port = 32180, stoppable = True) |
|
|
|
|
|
|
|
# Run it |
|
|
|
event = threading.Event() |
|
|
|
def run_server(): |
|
|
|
self.server.start(blocking = True, event = event) |
|
|
|
thread = threading.Thread(target = run_server) |
|
|
|
thread.start() |
|
|
|
if not event.wait(timeout = 10): |
|
|
|
raise AssertionError("server didn't start in 10 seconds") |
|
|
|
|
|
|
|
# Send request to exit. |
|
|
|
def start_server(): |
|
|
|
# Run it |
|
|
|
event = threading.Event() |
|
|
|
def run_server(): |
|
|
|
self.server.start(blocking = True, event = event) |
|
|
|
thread = threading.Thread(target = run_server) |
|
|
|
thread.start() |
|
|
|
if not event.wait(timeout = 10): |
|
|
|
raise AssertionError("server didn't start in 10 seconds") |
|
|
|
return thread |
|
|
|
|
|
|
|
# Start server and request for it to exit |
|
|
|
thread = start_server() |
|
|
|
req = urlopen("http://127.0.0.1:32180/exit/", timeout = 1) |
|
|
|
|
|
|
|
# Wait for it |
|
|
|
thread.join() |
|
|
|
|
|
|
|
# Mock some signals that should kill the server |
|
|
|
def try_signal(sig): |
|
|
|
old = cherrypy.engine.wait |
|
|
|
def raise_sig(*args, **kwargs): |
|
|
|
raise sig() |
|
|
|
cherrypy.engine.wait = raise_sig |
|
|
|
thread = start_server() |
|
|
|
thread.join() |
|
|
|
cherrypy.engine.wait = old |
|
|
|
try_signal(SystemExit) |
|
|
|
try_signal(KeyboardInterrupt) |
|
|
|
|
|
|
|
def geturl(path): |
|
|
|
resp = urlopen("http://127.0.0.1:32180" + path, timeout = 10) |
|
|
|
body = resp.read() |
|
|
|