示例#1
0
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)
示例#2
0
    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))
示例#3
0
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)
示例#4
0
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)
示例#5
0
    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))
示例#6
0
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:
示例#7
0
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)
示例#8
0
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)
示例#9
0
 def start(self):
     server = WSGIServer(wsgi_dispatcher)
     self.logger.info('%r dispatching...' % (self,))
     dispatch(server.serve(self.address))
示例#10
0
def main():
    server = WSGIServer(hello_world)
    server.serve(('localhost', 8080))
示例#11
0
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:
示例#12
0
def main():
    server = WSGIServer(hello_world)
    server.serve(('localhost', 8080))