def main(): try: dispatcher = Dispatcher() host = Host(dispatcher, "/dev/ttyUSB0") dispatcher.add_host(host) Tasklet.new(dispatcher.loop)() print "Calibration: %s" % host.calibrate_baudrate() print "Available: %s" % host.available() dev = RadioDevice(dispatcher, 2) print "Protocol version: %s" % dev.protocol_version # Running HTTP server application = django.core.handlers.wsgi.WSGIHandler() def app_wrapper(*args, **kwargs): try: return application(*args, **kwargs) except Exception as e: print e server = WSGIServer(application) server.serve(('localhost', 8080)) while True: print "ADC data: %s, supply voltage: %.2f" % (dev.adc_data(), dev.supply_voltage()) Tasklet.sleep(1) os._exit(0) except Exception as e: logging.exception(e) os._exit(1)
def main(): try: setupLogging() server = WSGIServer(app_wrapper) addr = conf('web', 'addr', '0.0.0.0') port = confInt('web', 'port', 8080) server.serve((addr, port)) logging.getLogger("hautowebsrv").info("Serving HTTP at %s:%s", addr, port) while True: Tasklet.sleep(1) except Exception as e: logging.exception(e) os._exit(1)
class TestHTTP(unittest.TestCase): def setUp(self): application = WSGISimpleRouter() for i in range(10): application.map('/hello/%d' % i, WSGISimpleMessage("Hello World %d" % i)) class WSGISleeper(WSGISimpleMessage): def __call__(self, environ, start_response): sleep_seconds = int(environ['QUERY_STRING']) Tasklet.sleep(sleep_seconds) self.response = 'slept %d' % sleep_seconds return WSGISimpleMessage.__call__(self, environ, start_response) class WSGIPOSTSaver(WSGISimpleMessage): def __call__(self, environ, start_response): self.environ = environ f = environ['wsgi.input'] self.body = f.read(int(environ['HTTP_CONTENT_LENGTH'])) return WSGISimpleMessage.__call__(self, environ, start_response) self.saver = WSGIPOSTSaver('ok') application.map('/sleep', WSGISleeper('zzz...')) application.map('/post', self.saver) self.server = WSGIServer(application) self.socket_server = self.server.serve(('0.0.0.0', SERVER_PORT)) def tearDown(self): self.socket_server.close() self.server = None def testSimple(self): cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) request = cnn.get('/hello/1') response = cnn.perform(request) self.assertEquals(200, response.status_code) chunks = list(response.iter) self.assertEquals('Hello World 1', chunks[0]) request = cnn.get('/hello/2') response = cnn.perform(request) self.assertEquals(200, response.status_code) body = response.body self.assertEquals('Hello World 2', body) request = cnn.get('/xxx') response = cnn.perform(request) self.assertEquals(404, response.status_code) chunks = list(response) self.assertEquals('Not Found', chunks[0]) cnn.close() def testInterleaved1(self): cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) cnn.send(cnn.get('/hello/1')) cnn.send(cnn.get('/hello/2')) response = cnn.receive() self.assertEquals(200, response.status_code) chunks = list(response) self.assertEquals('Hello World 1', chunks[0]) response = cnn.receive() self.assertEquals(200, response.status_code) chunks = list(response) self.assertEquals('Hello World 2', chunks[0]) cnn.close() def testInterleaved3(self): """tests that http client and server really support pipelining""" cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) #we do 2 requests that should take 2 seconds to complete each. #if server/client pipelining was not working, fetching the 2 urls #would take 4 seconds on a single connection #if pipelining works, it should take just 2 seconds start = time.time() cnn.send(cnn.get('/sleep?2')) cnn.send(cnn.get('/sleep?2')) list(cnn.receive()) list(cnn.receive()) end = time.time() self.assertAlmostEqual(2, end - start, places = 1) cnn.close() def testInterleaved4(self): """tests that http server returns responses in correct order""" cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) #we do 2 requests that should take 2 seconds to complete each. #if server/client pipelining was not working, fetching the 2 urls #would take 4 seconds on a single connection #if pipelining works, it should take just 2 seconds start = time.time() cnn.send(cnn.get('/sleep?3')) cnn.send(cnn.get('/sleep?1')) response1 = cnn.receive() response2 = cnn.receive() #we expect response1 to be returned first, because it was made first #eventhough it takes longer self.assertEquals('slept 3', response1.body) self.assertEquals('slept 1', response2.body) end = time.time() self.assertAlmostEqual(3, end - start, places = 1) cnn.close() def fetch10(self, s, uri): b = Buffer(1024) b.clear() b.write_bytes("GET %s HTTP/1.0\r\n" % uri) b.write_bytes("\r\n") b.flip() s.write(b) b.clear() s.read(b) b.flip() return b.read_bytes(b.remaining) def testHTTP10(self): s = Socket.connect(('localhost', SERVER_PORT)) r1 = self.fetch10(s, '/hello/1') r2 = self.fetch10(s, '/hello/2') self.assertEquals('', r2) def testHTTPReadTimeout(self): self.server.read_timeout = 2 cnn = HTTPConnection() try: cnn.connect(('localhost', SERVER_PORT)) Tasklet.sleep(1) response = cnn.perform(cnn.get('/hello/1')) self.assertEquals('HTTP/1.1 200 OK', response.status) self.assertEquals('Hello World 1', response.body) Tasklet.sleep(3) try: list(cnn.perform(cnn.get('/hello/2'))) self.fail('expected eof') except HTTPError, e: pass except: self.fail('expected http errror') finally:
def main(): try: setupLogging() dispatcher = HomeAutoDispatcher() Tasklet.new(dispatcher.loop)() dispatcher.open_ports(conf("hardware", "port1", "/dev/ttyS0"), conf("hardware", "port2", "/dev/ttyS1")) # try: # print "ReadROM: %s" % dispatcher.request(MicroLANReadROM(0)) # except MicroLANError as e: # print type(e).__name__ # try: # print "SearchROM: %s" % dispatcher.request(MicroLANSearchROM(0, 0, [0, 0, 0, 0, 0, 0, 0, 0])) # except MicroLANError as e: # print type(e).__name__ def a(): while True: #for i in xrange(0, 3): # try: # print "Line %d ReadROM: %s" % (i + 1, dispatcher.request(MicroLANReadROM(i))) # except MicroLANError as e: # print "Line %d ReadROM: %s" % (i + 1, type(e).__name__) devs = {} for i in xrange(0, 3): try: req = MicroLANListAll(dispatcher, i) devices = req.execute() except MicroLANError as e: print "Line %d SearchROM: %s" % (i + 1, type(e).__name__) else: #print "Line %d SearchROM: %s" % (i + 1, devices) if devices: try: dispatcher.request( MicroLANConvertTemperature(i)) except MicroLANError as e: print "Line %d ConvertTemperature: %s" % ( i + 1, type(e).__name__) else: devs[i] = devices Tasklet.sleep(1) print "---" for i in xrange(0, 3): devices = devs.get(i) if devices: print "Line %d" % (i + 1) for dev in devices: Tasklet.sleep(0.1) try: #print "ReadTemperature of %s: %.1f" % (dev, dispatcher.request(MicroLANReadTemperature(i, dev))) dispatcher.request( MicroLANReadTemperature(i, dev)) except MicroLANError as e: print "ReadTemperature of %s: %s" % ( dev, type(e).__name__) Tasklet.sleep(2) def b(): while True: for j in xrange(0, 3): for i in xrange(0, 30): dispatcher.relay_set(i + 1, True) dispatcher.relay_set((i + 15) % 30 + 1, False) Tasklet.sleep(0.05) dispatcher.relay_clear_all() Tasklet.sleep(1) for i in xrange(0, 30): dispatcher.relay_set(i + 1, True) Tasklet.sleep(0.05) Tasklet.sleep(1) for i in xrange(0, 30): dispatcher.relay_set(i + 1, False) Tasklet.sleep(0.05) Tasklet.sleep(1) for j in xrange(0, 5): dispatcher.relay_set_all() Tasklet.sleep(0.3) dispatcher.relay_clear_all() Tasklet.sleep(0.3) Tasklet.new(a)() #Tasklet.new(b)() logic = HomeLogic(dispatcher) hwapi = HomeLogicAPIServer(dispatcher, logic) server = WSGIServer(hwapi) addr = conf('hwserver', 'addr', '127.0.0.1') port = confInt('hwserver', 'port', 8081) server.serve((addr, port)) logging.getLogger("hwserver").info("Serving API at %s:%s", addr, port) while True: Tasklet.sleep(100) except HardwareError as e: print e os._exit(1) except Exception as e: logging.exception(e) os._exit(1)
def main(): try: setupLogging() dispatcher = HomeAutoDispatcher() Tasklet.new(dispatcher.loop)() dispatcher.open_ports( conf("hardware", "port1", "/dev/ttyS0"), conf("hardware", "port2", "/dev/ttyS1") ) # try: # print "ReadROM: %s" % dispatcher.request(MicroLANReadROM(0)) # except MicroLANError as e: # print type(e).__name__ # try: # print "SearchROM: %s" % dispatcher.request(MicroLANSearchROM(0, 0, [0, 0, 0, 0, 0, 0, 0, 0])) # except MicroLANError as e: # print type(e).__name__ def a(): while True: #for i in xrange(0, 3): # try: # print "Line %d ReadROM: %s" % (i + 1, dispatcher.request(MicroLANReadROM(i))) # except MicroLANError as e: # print "Line %d ReadROM: %s" % (i + 1, type(e).__name__) devs = {} for i in xrange(0, 3): try: req = MicroLANListAll(dispatcher, i) devices = req.execute() except MicroLANError as e: print "Line %d SearchROM: %s" % (i + 1, type(e).__name__) else: #print "Line %d SearchROM: %s" % (i + 1, devices) if devices: try: dispatcher.request(MicroLANConvertTemperature(i)) except MicroLANError as e: print "Line %d ConvertTemperature: %s" % (i + 1, type(e).__name__) else: devs[i] = devices Tasklet.sleep(1) print "---" for i in xrange(0, 3): devices = devs.get(i) if devices: print "Line %d" % (i + 1) for dev in devices: try: print "ReadTemperature of %s: %.1f" % (dev, dispatcher.request(MicroLANReadTemperature(i, dev))) except MicroLANError as e: print "ReadTemperature of %s: %s" % (dev, type(e).__name__) Tasklet.sleep(2) def b(): while True: for j in xrange(0, 3): for i in xrange(0, 30): dispatcher.relay_set(i + 1, True) dispatcher.relay_set((i + 15) % 30 + 1, False) Tasklet.sleep(0.05) dispatcher.relay_clear_all() Tasklet.sleep(1) for i in xrange(0, 30): dispatcher.relay_set(i + 1, True) Tasklet.sleep(0.05) Tasklet.sleep(1) for i in xrange(0, 30): dispatcher.relay_set(i + 1, False) Tasklet.sleep(0.05) Tasklet.sleep(1) for j in xrange(0, 5): dispatcher.relay_set_all() Tasklet.sleep(0.3) dispatcher.relay_clear_all() Tasklet.sleep(0.3) Tasklet.new(a)() #Tasklet.new(b)() logic = HomeLogic(dispatcher) hwapi = HomeLogicAPIServer(dispatcher, logic) server = WSGIServer(hwapi) addr = conf('hwserver', 'addr', '127.0.0.1') port = confInt('hwserver', 'port', 8081) server.serve((addr, port)) logging.getLogger("hwserver").info("Serving API at %s:%s", addr, port) while True: Tasklet.sleep(100) except HardwareError as e: print e os._exit(1) except Exception as e: logging.exception(e) os._exit(1)
def start(self): server = WSGIServer(wsgi_dispatcher) self.logger.info('%r dispatching...' % (self,)) dispatch(server.serve(self.address))
def main(): server = WSGIServer(hello_world) server.serve(('localhost', 8080))
class TestHTTP(unittest.TestCase): def setUp(self): application = WSGISimpleRouter() for i in range(10): application.map('/hello/%d' % i, WSGISimpleMessage("Hello World %d" % i)) class WSGISleeper(WSGISimpleMessage): def __call__(self, environ, start_response): sleep_seconds = int(environ['QUERY_STRING']) Tasklet.sleep(sleep_seconds) self.response = 'slept %d' % sleep_seconds return WSGISimpleMessage.__call__(self, environ, start_response) class WSGIPOSTSaver(WSGISimpleMessage): def __call__(self, environ, start_response): self.environ = environ f = environ['wsgi.input'] self.body = f.read(int(environ['HTTP_CONTENT_LENGTH'])) return WSGISimpleMessage.__call__(self, environ, start_response) self.saver = WSGIPOSTSaver('ok') application.map('/sleep', WSGISleeper('zzz...')) application.map('/post', self.saver) self.server = WSGIServer(application) self.socket_server = self.server.serve(('0.0.0.0', SERVER_PORT)) def tearDown(self): self.socket_server.close() self.socket_server = None self.server = None def testSimple(self): cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) request = cnn.get('/hello/1') response = cnn.perform(request) self.assertEquals(200, response.status_code) chunks = list(response.iter) self.assertEquals('Hello World 1', chunks[0]) request = cnn.get('/hello/2') response = cnn.perform(request) self.assertEquals(200, response.status_code) body = response.body self.assertEquals('Hello World 2', body) request = cnn.get('/xxx') response = cnn.perform(request) self.assertEquals(404, response.status_code) chunks = list(response) self.assertEquals('Not Found', chunks[0]) cnn.close() def testInterleaved1(self): cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) cnn.send(cnn.get('/hello/1')) cnn.send(cnn.get('/hello/2')) response = cnn.receive() self.assertEquals(200, response.status_code) chunks = list(response) self.assertEquals('Hello World 1', chunks[0]) response = cnn.receive() self.assertEquals(200, response.status_code) chunks = list(response) self.assertEquals('Hello World 2', chunks[0]) cnn.close() def testInterleaved3(self): """tests that http client and server really support pipelining""" cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) #we do 2 requests that should take 2 seconds to complete each. #if server/client pipelining was not working, fetching the 2 urls #would take 4 seconds on a single connection #if pipelining works, it should take just 2 seconds start = time.time() cnn.send(cnn.get('/sleep?2')) cnn.send(cnn.get('/sleep?2')) list(cnn.receive()) list(cnn.receive()) end = time.time() self.assertAlmostEqual(2, end - start, places=1) cnn.close() def testInterleaved4(self): """tests that http server returns responses in correct order""" cnn = HTTPConnection() cnn.connect(('localhost', SERVER_PORT)) #we do 2 requests that should take 2 seconds to complete each. #if server/client pipelining was not working, fetching the 2 urls #would take 4 seconds on a single connection #if pipelining works, it should take just 2 seconds start = time.time() cnn.send(cnn.get('/sleep?3')) cnn.send(cnn.get('/sleep?1')) response1 = cnn.receive() response2 = cnn.receive() #we expect response1 to be returned first, because it was made first #eventhough it takes longer self.assertEquals('slept 3', response1.body) self.assertEquals('slept 1', response2.body) end = time.time() self.assertAlmostEqual(3, end - start, places=1) cnn.close() def fetch10(self, s, uri): b = Buffer(1024) b.clear() b.write_bytes("GET %s HTTP/1.0\r\n" % uri) b.write_bytes("\r\n") b.flip() s.write(b) b.clear() s.read(b) b.flip() return b.read_bytes(b.remaining) def testHTTP10(self): s = Socket.connect(('localhost', SERVER_PORT)) r1 = self.fetch10(s, '/hello/1') r2 = self.fetch10(s, '/hello/2') self.assertEquals('', r2) def testHTTPReadTimeout(self): self.server.read_timeout = 2 cnn = HTTPConnection() try: cnn.connect(('localhost', SERVER_PORT)) Tasklet.sleep(1) response = cnn.perform(cnn.get('/hello/1')) self.assertEquals('HTTP/1.1 200 OK', response.status) self.assertEquals('Hello World 1', response.body) Tasklet.sleep(3) try: list(cnn.perform(cnn.get('/hello/2'))) self.fail('expected eof') except HTTPError, e: pass except: self.fail('expected http errror') finally: