Example #1
0
    def testMaxAge(self):

        pool = Pool(client,
                    DB_ARGS,
                    max_connections=2,
                    connect_timeout=2,
                    max_connection_age=2,
                    max_connection_age_reaper_interval=1)

        new, cnn1 = pool.connect()
        new, cnn2 = pool.connect()

        pool.disconnect(cnn1)

        self.assertTrue(cnn1.is_connected())
        self.assertTrue(cnn2.is_connected())

        Tasklet.sleep(3)

        #cnn1 was idle, should be disconnected now by old age reaper
        self.assertFalse(cnn1.is_connected())
        self.assertTrue(cnn2.is_connected())

        pool.disconnect(cnn2)
        #cnn2 should be closed on old age

        self.assertFalse(cnn1.is_connected())
        self.assertFalse(cnn2.is_connected())
Example #2
0
        def client():
            try:
                remote_client = RemoteClient()
                remote_client.connect(('localhost', 9081))
                remote_task = remote_client.lookup('testing123')
                self.assertFalse(remote_task is None)
                MSG_TEST.send(remote_task)(20, 30)
                MSG_TEST.send(remote_task)(30, 40)
                client_results.append(MSG_SUM.call(remote_task)(10, 20, 30))
                client_results.append(MSG_SUM.call(remote_task)(10, 20, 30))
                MSG_TEST.send(remote_task)(20, 30)
                MSG_TEST.send(remote_task)(30, 40)

                MSG_SLEEP.call(remote_task)(1)

                try:
                    MSG_SLEEP.call(remote_task, timeout = 1)(2)
                    self.fail("expected timeout")
                except TimeoutError:
                    pass #expected

                MSG_QUIT.send(remote_task)()
                Tasklet.sleep(2)
                remote_client.close()
            except Exception:
                logging.exception("")
                self.fail("")
Example #3
0
 def server():
     server_endpoint = None
     try:
         remote_server = RemoteServer()
         server_endpoint = remote_server.serve(('localhost', 9081))
         remote_server.register('testing123')
         for msg, args, kwargs in Tasklet.receive():
             if msg.match(MSG_SUM):
                 server_results.append('s')
                 msg.reply(sum(args))
             elif msg.match(MSG_TEST):
                 server_results.append('t')
             elif msg.match(MSG_QUIT):
                 server_results.append('q')
                 break
             elif msg.match(MSG_SLEEP):
                 server_results.append('sl')
                 Tasklet.sleep(args[0])
                 msg.reply(True)
     except Exception:
         logging.exception("")
         self.fail("")
     finally:
         if server_endpoint is not None: 
             server_endpoint.close()
Example #4
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)
Example #5
0
 def server():
     server_endpoint = None
     try:
         remote_server = RemoteServer()
         server_endpoint = remote_server.serve(('localhost', 9081))
         remote_server.register('testing123')
         for msg, args, kwargs in Tasklet.receive():
             if msg.match(MSG_SUM):
                 server_results.append('s')
                 msg.reply(sum(args))
             elif msg.match(MSG_TEST):
                 server_results.append('t')
             elif msg.match(MSG_QUIT):
                 server_results.append('q')
                 break
             elif msg.match(MSG_SLEEP):
                 server_results.append('sl')
                 Tasklet.sleep(args[0])
                 msg.reply(True)
     except Exception:
         logging.exception("")
         self.fail("")
     finally:
         if server_endpoint is not None:
             server_endpoint.close()
Example #6
0
 def callback(socket, count, event, args, kwargs):
     print count, event, Tasklet.current()
     if (count, event) == (1, "write"):
         pass
     elif (count, event) == (2, "read"):
         Tasklet.sleep(1.0)
         return "OK\r\n"
Example #7
0
 def accept_iter(self):
     while True:
         try:
             yield self.accept()
         except Exception:
             self.log.exception("in accept_iter")
             Tasklet.sleep(1.0)  #prevent hogging
Example #8
0
    def testPushPop(self):

        self.assertEquals(TIMEOUT_NEVER, Timeout.current())

        Timeout.push(30)
        self.assertAlmostEqual(30, Timeout.current(), places=1)
        Timeout.pop()
        self.assertEquals(TIMEOUT_NEVER, Timeout.current())
        Timeout.push(30)
        self.assertAlmostEqual(30, Timeout.current(), places=1)
        Tasklet.sleep(1.0)
        self.assertAlmostEqual(29, Timeout.current(), places=1)
        #push a temporary short timeout
        Timeout.push(5)
        self.assertAlmostEqual(5, Timeout.current(), places=1)
        Timeout.pop()
        self.assertAlmostEqual(29, Timeout.current(), places=1)

        #try to push a new longer timeout than the parent timeout
        #this should fail, e.g. it will keep the parent timeout
        Timeout.push(60)
        self.assertAlmostEqual(29, Timeout.current(), places=1)
        Timeout.pop()
        self.assertAlmostEqual(29, Timeout.current(), places=1)
        Timeout.pop()
        self.assertEquals(TIMEOUT_NEVER, Timeout.current())
Example #9
0
 def accept_iter(self):
     while True:
         try:
             yield self.accept()
         except Exception:
             self.log.exception("in accept_iter")
             Tasklet.sleep(1.0) #prevent hogging
Example #10
0
 def callback(socket, count, event, args, kwargs):
     print count, event, Tasklet.current()
     if (count, event) == (1, "write"):
         pass
     elif (count, event) == (2, "read"):
         Tasklet.sleep(1.0)
         return "OK\r\n"
Example #11
0
 def query_services(self, service_type, url, timeout=10, call_int=False, delay=0, *args, **kwargs):
     inst = self.app().inst
     daemons = inst.int_app.obj(DBCluster, "daemons", silent=True)
     tasklets = []
     for dmnid, dmninfo in daemons.data.items():
         services = dmninfo.get("services", {})
         for svcid, svcinfo in services.items():
             if svcinfo.get("type") != service_type:
                 continue
             if call_int:
                 found = False
                 for sid, sinfo in services.items():
                     if sinfo.get("type") != "int":
                         continue
                     found = True
                     svcid = sid
                     svcinfo = sinfo
                     break
                 if not found:
                     continue
             if "addr" not in svcinfo:
                 continue
             if "port" not in svcinfo:
                 continue
             task = Tasklet.new(self.do_query_service_exc)
             tasklets.append(task)
             task(svcid, svcinfo, url, timeout, *args, **kwargs)
             if delay > 0:
                 Tasklet.sleep(delay)
     Tasklet.join_all(tasklets)
Example #12
0
        def client():
            try:
                remote_client = RemoteClient()
                remote_client.connect(('localhost', 9081))
                remote_task = remote_client.lookup('testing123')
                self.assertFalse(remote_task is None)
                MSG_TEST.send(remote_task)(20, 30)
                MSG_TEST.send(remote_task)(30, 40)
                client_results.append(MSG_SUM.call(remote_task)(10, 20, 30))
                client_results.append(MSG_SUM.call(remote_task)(10, 20, 30))
                MSG_TEST.send(remote_task)(20, 30)
                MSG_TEST.send(remote_task)(30, 40)

                MSG_SLEEP.call(remote_task)(1)

                try:
                    MSG_SLEEP.call(remote_task, timeout = 1)(2)
                    self.fail("expected timeout")
                except TimeoutError:
                    pass #expected

                MSG_QUIT.send(remote_task)()
                Tasklet.sleep(2)
                remote_client.close()
            except Exception:
                logging.exception("")
                self.fail("")
Example #13
0
    def testPushPop(self):

        self.assertEquals(TIMEOUT_NEVER, Timeout.current())

        Timeout.push(30)
        self.assertAlmostEqual(30, Timeout.current(), places = 1)
        Timeout.pop()
        self.assertEquals(TIMEOUT_NEVER, Timeout.current())
        Timeout.push(30)
        self.assertAlmostEqual(30, Timeout.current(), places = 1)
        Tasklet.sleep(1.0)
        self.assertAlmostEqual(29, Timeout.current(), places = 1)
        #push a temporary short timeout
        Timeout.push(5)
        self.assertAlmostEqual(5, Timeout.current(), places = 1)
        Timeout.pop()
        self.assertAlmostEqual(29, Timeout.current(), places = 1)

        #try to push a new longer timeout than the parent timeout
        #this should fail, e.g. it will keep the parent timeout
        Timeout.push(60)
        self.assertAlmostEqual(29, Timeout.current(), places = 1)
        Timeout.pop()
        self.assertAlmostEqual(29, Timeout.current(), places = 1)
        Timeout.pop()
        self.assertEquals(TIMEOUT_NEVER, Timeout.current())
Example #14
0
 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)
Example #15
0
 def ping(self):
     while True:
         if self._calibrated:
             pkt = [0xf2]
             for i in xrange(0, 8):
                 pkt.append(random.randint(0, 255))
             self.send(pkt)
         Tasklet.sleep(7)
Example #16
0
 def ping(self):
     while True:
         if self._calibrated:
             pkt = [0xf2]
             for i in xrange(0, 8):
                 pkt.append(random.randint(0, 255))
             self.send(pkt)
         Tasklet.sleep(7)
Example #17
0
 def t(x):
     try:
         with sema:
             Tasklet.sleep(1.0)
             xs.append(x)
         return x
     except TimeoutError:
         pass
Example #18
0
    def tearDown(self):
        MemcacheConnectionManager.create("default").close_all()

        cmd = 'killall %s' % MEMCACHED_BIN
        self.log.debug(cmd)
        os.system(cmd)

        Tasklet.sleep(1.0)  #should be enough for memcached to go down
Example #19
0
    def tearDown(self):
        MemcacheConnectionManager.create("default").close_all()

        cmd = 'killall %s' % MEMCACHED_BIN
        self.log.debug(cmd)
        os.system(cmd)

        Tasklet.sleep(1.0) #should be enough for memcached to go down
Example #20
0
 def sendall(self, data, flags=0):
     # WARNING: this will busy wait until all data is sent
     # It should be possible to do away with the busy wait with
     # the use of a channel.
     self.sendBuffer += data
     while self.sendBuffer:
         Tasklet.sleep(0.01)
     return len(data)
Example #21
0
 def c():
     for msg, args, kwargs in Tasklet.receive():
         if msg.match(MSG_TEST_SUM):
             msg.reply(sum(args))
         elif msg.match(MSG_TEST_MAX):
             msg.reply(max(args))
         elif msg.match(MSG_TEST_SLEEP):     
             Tasklet.sleep(args[0])
             msg.reply(True)
Example #22
0
 def c():
     for msg, args, kwargs in Tasklet.receive():
         if msg.match(MSG_TEST_SUM):
             msg.reply(sum(args))
         elif msg.match(MSG_TEST_MAX):
             msg.reply(max(args))
         elif msg.match(MSG_TEST_SLEEP):
             Tasklet.sleep(args[0])
             msg.reply(True)
Example #23
0
    def memcachedRun(self):
        self.log.debug("using memcached daemon: %s", MEMCACHED_BIN)

        for i in range(4):
            cmd = '%s -m 10 -p %d -u nobody -l 127.0.0.1&' % (MEMCACHED_BIN, 11212 + i)
            self.log.debug(cmd)
            os.system(cmd)

        Tasklet.sleep(1.0) #should be enough for memcached to get up and running
Example #24
0
def ManageSockets():
    global managerRunning

    while len(asyncore.socket_map):
        # Check the sockets for activity.
        asyncore.poll(0.05)
        # Yield to give other tasklets a chance to be scheduled.
        Tasklet.sleep(0.01)

    managerRunning = False
Example #25
0
 def testBlock2(self):
     d = Deque()
     Tasklet.later(0.5, d.append)(10)
     Tasklet.later(1.0, d.append)(20)
     Tasklet.sleep(1.5)
     s = time.time()
     #should not block
     self.assertEquals(20, d.pop(True))
     self.assertEquals(10, d.pop(True))
     e = time.time()
     self.assertAlmostEqual(0.0, (e - s), places = 1)
Example #26
0
    def setUp(self):
        self.log.debug("using memcached daemon: %s", MEMCACHED_BIN)

        for i in range(4):
            cmd = '%s -m 10 -p %d -u nobody -l 127.0.0.1&' % (MEMCACHED_BIN,
                                                              11211 + i)
            self.log.debug(cmd)
            os.system(cmd)

        Tasklet.sleep(
            1.0)  #should be enough for memcached to get up and running
Example #27
0
 def __enter__(self):
     if self.mc is None:
         return
     start = None
     while True:
         locked = []
         try:
             success = True
             badlock = None
             for key in self.keys:
                 if self.mc.add(key, self.value,
                                self.ttl) != MemcacheResult.NOT_STORED:
                     locked.append(key)
                 else:
                     for k in locked:
                         self.mc.delete(k)
                     success = False
                     badlock = (key, self.mc.get(key))
                     break
             if success:
                 if DEBUG:
                     logging.getLogger(
                         "mg.core.memcached.MemcachedLock").debug(
                             "[%s] Locked keys %s", self.value, locked)
                 self.locked = time.time()
                 self.onlocked()
                 return
             Tasklet.sleep(self.delay)
             if start is None:
                 start = time.time()
             elif time.time() > start + self.patience:
                 logging.getLogger("mg.core.memcached.MemcachedLock").error(
                     "[%s] Timeout waiting lock %s (locked by %s)",
                     self.value, badlock[0], badlock[1])
                 logging.getLogger("mg.core.memcached.MemcachedLock").error(
                     traceback.format_stack())
                 for key in self.keys:
                     self.mc.set(key, self.value, self.ttl)
                 logging.getLogger(
                     "mg.core.memcached.MemcachedLock").warning(
                         "[%s] Locked keys %s because of timeout",
                         self.value, locked)
                 self.locked = time.time()
                 self.onlocked()
                 return
         except Exception:
             logging.getLogger("mg.core.memcached.MemcachedLock").error(
                 "[%s] Exception during locking. Unlock everything immediately",
                 self.value)
             for k in locked:
                 self.mc.delete(k)
             raise
Example #28
0
 def run_daemon_loop(self):
     inst = self.app().inst
     next_update = self.now()
     while True:
         try:
             if self.now() >= next_update:
                 next_update = self.now(10)
                 with self.cluster_lock:
                     self.store_daemon()
             self.call("core.fastidle")
         except Exception as e:
             self.exception(e)
         Tasklet.sleep(1)
Example #29
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)
Example #30
0
def getter():
    while len(clients) < N:
        Tasklet.sleep(1.0)
    while True:
        #get
        with timer() as tmr:
            bts = 0
            for i in range(B):
                #print i
                stream = random.choice(clients)
                bts += get(stream, 'fooblaatpiet%d' % random.randint(0, KN))
        print 'getter', tmr.sec(B), '/sec', tmr.sec(bts / 1024.0 / 1024.0), 'Mb/sec'
        Tasklet.sleep(1.0)
Example #31
0
 def run_daemon_loop(self):
     inst = self.app().inst
     next_update = self.now()
     while True:
         try:
             if self.now() >= next_update:
                 next_update = self.now(10)
                 with self.cluster_lock:
                     self.store_daemon()
             self.call("core.fastidle")
         except Exception as e:
             self.exception(e)
         Tasklet.sleep(1)
Example #32
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)
Example #33
0
def getter():
    while len(clients) < N:
        Tasklet.sleep(1.0)
    while True:
        #get
        with timer() as tmr:
            bts = 0
            for i in range(B):
                #print i
                stream = random.choice(clients)
                bts += get(stream, 'fooblaatpiet%d' % random.randint(0, KN))
        print 'getter', tmr.sec(B), '/sec', tmr.sec(bts / 1024.0 /
                                                    1024.0), 'Mb/sec'
        Tasklet.sleep(1.0)
Example #34
0
 def dispense(self):
     if self.options.count == -1: 
         #run forever
         while True:
             self.dispenser.send(True)
             if self.options.delay > 0.0:
                 Tasklet.sleep(self.options.delay)
     else:
         #a fixed number of total requests
         for i in range(self.options.count):
             self.dispenser.send(True)
             if self.options.delay > 0.0:
                 Tasklet.sleep(self.options.delay)
         for i in range(self.options.sessions):
             self.dispenser.send(None)
Example #35
0
    def testDeferredQueue(self):
        
        d = DeferredQueue()
        
        def f(i):
            pass
        
        for i in range(10):    
            d.defer(f, i)
        
        Tasklet.sleep(1)

        for i in range(10):    
            d.defer(f, i)

        Tasklet.sleep(1)
Example #36
0
 def __init__(self,
              app,
              combat_id,
              fqn="mg.mmorpg.combats.daemons.CombatInterface"):
     mg.constructor.ConstructorModule.__init__(self, app, fqn)
     # access RunningCombat object
     if not re_valid_uuid.match(combat_id):
         raise CombatUnavailable(self._("Invalid combat idenfifier"))
     self.combat_id = combat_id
     try:
         cobj = self.obj(DBRunningCombat, combat_id)
     except mg.ObjectNotFoundException:
         raise CombatUnavailable(self._("Combat not found"))
     self.cobj = cobj
     try:
         # restart combat if needed
         attempts = 3
         while not cobj.get("host"):
             # wait for combat to run
             if cobj.get("started") > self.now(-10):
                 Tasklet.sleep(1)
                 try:
                     cobj.load()
                 except mg.ObjectNotFoundException:
                     raise CombatUnavailable(self._("Combat disappeared"))
                 continue
             # restart failed combat
             attempts -= 1
             if attempts < 0:
                 raise CombatUnavailable(
                     self._("Failed to start combat server"))
             with self.lock(["Combat-%s" % combat_id]):
                 try:
                     cobj.load()
                 except mg.ObjectNotFoundException:
                     raise CombatUnavailable(self._("Combat disappeared"))
                 if not cobj.get("host"):
                     self.debug("Relaunching combat %s", cobj.uuid)
                     self.call("combat-run.daemon", cobj)
         # find connection
         self.api_host = cobj.get("host")
         self.api_port = cobj.get("port")
         #self.debug("Remote combat API URI: %s:%s", self.api_host, self.api_port)
     except CombatUnavailable as e:
         self.cancel_combat(e)
         raise
Example #37
0
def try_getresponse(cnn, times=1, sleep_time_dict=sleep_time_dict):
    """
    async https request need read response multiple times until timeout.
    """
    # must sleep, or throw exception:
    # _ssl.c:1354: The operation did not complete
    try:
        response = cnn.getresponse()
    except SSLError:
        sleep_time = sleep_time_dict.get(times, None)
        if sleep_time is None:
            assert False, 'request timeout'
        Tasklet.sleep(sleep_time)
        response = try_getresponse(cnn, times=times + 1)
    except:
        raise
    return response
Example #38
0
    def testStatisticExtra(self):
    
        timer = StatisticExtra(g = 0.1) #low g for fast convergence
        
        for i in range(10):
            with timer.time():
                Tasklet.sleep(0.1)

        self.assertEquals(10, timer.count)
        self.assertAlmostEqual(0.1, timer.avg, places = 1)
        
        timer = StatisticExtra(g = 0.1) #low g for fast convergence
        for i in range(11):
            with timer.time():
                Tasklet.sleep(0.2)

        self.assertEquals(11, timer.count)
        self.assertAlmostEqual(0.2, timer.avg, places = 1)
Example #39
0
def server():
    """accepts connections on a socket, and dispatches
    new tasks for handling the incoming requests"""
    #parent process opens socket and listens:
    server_socket = Socket.server(('localhost', HTTP_PORT), backlog=2048)
    #fork some worker processes
    for i in range(HTTP_WORKERS):
        pid = os.fork()
        if pid == 0:
            #i am a worker, accept and handle connections
            try:
                for client_socket in server_socket.accept_iter():
                    Tasklet.defer(handle, client_socket)
            finally:
                return
    #i am the parent
    while True:
        Tasklet.sleep(1.0)
Example #40
0
    def testStatisticExtra(self):

        timer = StatisticExtra(g=0.1)  #low g for fast convergence

        for i in range(10):
            with timer.time():
                Tasklet.sleep(0.1)

        self.assertEquals(10, timer.count)
        self.assertAlmostEqual(0.1, timer.avg, places=1)

        timer = StatisticExtra(g=0.1)  #low g for fast convergence
        for i in range(11):
            with timer.time():
                Tasklet.sleep(0.2)

        self.assertEquals(11, timer.count)
        self.assertAlmostEqual(0.2, timer.avg, places=1)
Example #41
0
    def testTimeout(self):

        mc = Memcache()
        mc.set_servers([((MEMCACHE_IP, 11211), 100)])

        def callback(socket, count, event, args, kwargs):
            print count, event, Tasklet.current()
            if (count, event) == (1, "write"):
                pass
            elif (count, event) == (2, "read"):
                Tasklet.sleep(1.0)
                return "OK\r\n"

        unittest.TestSocket.install((MEMCACHE_IP, 11211), callback)
        with Timeout.push(0.5):
            self.assertEquals(MemcacheResult.TIMEOUT, mc.set('blaat', 'aap'))
            print 'done (timeout)'

        Tasklet.sleep(4.0)
Example #42
0
    def testTimeout(self):

        mc = Memcache()
        mc.set_servers([((MEMCACHE_IP, 11211), 100)])

        def callback(socket, count, event, args, kwargs):
            print count, event, Tasklet.current()
            if (count, event) == (1, "write"):
                pass
            elif (count, event) == (2, "read"):
                Tasklet.sleep(1.0)
                return "OK\r\n"

        unittest.TestSocket.install((MEMCACHE_IP, 11211), callback)
        with Timeout.push(0.5):
            self.assertEquals(MemcacheResult.TIMEOUT, mc.set('blaat', 'aap'))
            print 'done (timeout)'

        Tasklet.sleep(4.0)
Example #43
0
 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)
Example #44
0
 def __init__(self, app, combat_id, fqn="mg.mmorpg.combats.daemons.CombatInterface"):
     mg.constructor.ConstructorModule.__init__(self, app, fqn)
     # access RunningCombat object
     if not re_valid_uuid.match(combat_id):
         raise CombatUnavailable(self._("Invalid combat idenfifier"))
     self.combat_id = combat_id
     try:
         cobj = self.obj(DBRunningCombat, combat_id)
     except mg.ObjectNotFoundException:
         raise CombatUnavailable(self._("Combat not found"))
     self.cobj = cobj
     try:
         # restart combat if needed
         attempts = 3
         while not cobj.get("host"):
             # wait for combat to run
             if cobj.get("started") > self.now(-10):
                 Tasklet.sleep(1)
                 try:
                     cobj.load()
                 except mg.ObjectNotFoundException:
                     raise CombatUnavailable(self._("Combat disappeared"))
                 continue
             # restart failed combat
             attempts -= 1
             if attempts < 0:
                 raise CombatUnavailable(self._("Failed to start combat server"))
             with self.lock(["Combat-%s" % combat_id]):
                 try:
                     cobj.load()
                 except mg.ObjectNotFoundException:
                     raise CombatUnavailable(self._("Combat disappeared"))
                 if not cobj.get("host"):
                     self.debug("Relaunching combat %s", cobj.uuid)
                     self.call("combat-run.daemon", cobj)
         # find connection
         self.api_host = cobj.get("host")
         self.api_port = cobj.get("port")
         #self.debug("Remote combat API URI: %s:%s", self.api_host, self.api_port)
     except CombatUnavailable as e:
         self.cancel_combat(e)
         raise
Example #45
0
    def testHasSender(self):

        test_channel = Channel()

        def sender():
            test_channel.send(True)

        self.assertEquals(False, test_channel.has_sender())

        r = Tasklet.new(sender)()

        Tasklet.sleep(1.0)

        self.assertEquals(True, test_channel.has_sender())

        r.kill()

        Tasklet.sleep(1.0)

        self.assertEquals(False, test_channel.has_sender())
Example #46
0
    def testTree(self):

        def child(prefix, level, i):
            if level < 2:
                for j in range(2):
                    name = prefix + str(j)
                    Tasklet.new(child, name = name)(name, level + 1, j)
            Tasklet.sleep(2)

        Tasklet.new(child, 'child')('child', 0, 0)

        Tasklet.sleep(1)

        #for task, level in Tasklet.current().tree():
        #    print '\t' * level, task.name, level

        flattened = set([(task.name, level) for (task, level) in Tasklet.current().tree()][1:])

        self.assertEquals(set([('child', 1), ('child0', 2), ('child00', 3), ('child01', 3),
                           ('child1', 2), ('child10', 3), ('child11', 3)]), flattened)
Example #47
0
 def testHasReceiver(self):
     
     test_channel = Channel()
     
     def receiver():
         test_channel.receive()
     
     self.assertEquals(False, test_channel.has_receiver())
     
     r = Tasklet.new(receiver)()
     
     Tasklet.sleep(1.0)
     
     self.assertEquals(True, test_channel.has_receiver())
     
     r.kill()
     
     Tasklet.sleep(1.0)
     
     self.assertEquals(False, test_channel.has_receiver())
Example #48
0
    def testTree(self):
        
        def child(prefix, level, i):
            if level < 2:
                for j in range(2):
                    name = prefix + str(j)
                    Tasklet.new(child, name = name)(name, level + 1, j)  
            Tasklet.sleep(2)

        Tasklet.new(child, 'child')('child', 0, 0)

        Tasklet.sleep(1)

        #for task, level in Tasklet.current().tree():
        #    print '\t' * level, task.name, level
            
        flattened = set([(task.name, level) for (task, level) in Tasklet.current().tree()][1:])
        
        self.assertEquals(set([('child', 1), ('child0', 2), ('child00', 3), ('child01', 3), 
                           ('child1', 2), ('child10', 3), ('child11', 3)]), flattened)
Example #49
0
    def testHasSender(self):

        test_channel = Channel()

        def sender():
            test_channel.send(True)

        self.assertEquals(False, test_channel.has_sender())

        r = Tasklet.new(sender)()

        Tasklet.sleep(1.0)

        self.assertEquals(True, test_channel.has_sender())

        r.kill()

        Tasklet.sleep(1.0)

        self.assertEquals(False, test_channel.has_sender())
Example #50
0
    def xtestIdleDisconnect(self):

        pool = Pool(client, DB_ARGS, max_connections=2, connect_timeout=2)

        def qry():
            new, cnn = pool.connect()
            rs = cnn.query("SELECT 1")
            l = list(rs)
            rs.close()
            self.assertEquals([('1', )], l)
            #return it so it becomes idle
            closed = pool.disconnect(cnn)
            self.assertFalse(closed)
            self.assertEquals(1, pool.idle_connection_count)

        qry()

        Tasklet.sleep(20)

        qry()
Example #51
0
    def testHasReceiver(self):

        test_channel = Channel()

        def receiver():
            test_channel.receive()

        self.assertEquals(False, test_channel.has_receiver())

        r = Tasklet.new(receiver)()

        Tasklet.sleep(1.0)

        self.assertEquals(True, test_channel.has_receiver())

        r.kill()

        Tasklet.sleep(1.0)

        self.assertEquals(False, test_channel.has_receiver())
Example #52
0
    def xtestIdleDisconnect(self):
        
        pool = Pool(client, DB_ARGS, max_connections = 2, connect_timeout = 2)
        
        def qry():
            new, cnn = pool.connect()
            rs = cnn.query("SELECT 1")
            l = list(rs)
            rs.close()
            self.assertEquals([('1',)], l)
            #return it so it becomes idle
            closed = pool.disconnect(cnn)
            self.assertFalse(closed)
            self.assertEquals(1, pool.idle_connection_count)

        qry()
        
        Tasklet.sleep(20)
        
        qry()
Example #53
0
 def error(self, exc=None, delay_on_error=0.1):
     "Notify Pool that currently selected connection is bad"
     if exc is None:
         if delay_on_error > 0:
             Tasklet.sleep(delay_on_error)
         conn = self.new_connection()
         self.cput(conn)
         return
     while True:
         bad_host = self.hosts.pop(0)
         self.hosts.append(bad_host)
         self.close_all()
         self.debug("MySQL server %s failed: %s. Trying %s", bad_host, exc, self.hosts[0])
         Tasklet.sleep(1)
         try:
             self.success_counter = 0
             conn = self.new_connection()
             self.cput(conn)
             return
         except Exception as e:
             exc = e
Example #54
0
def setter():
    while len(clients) < N:
        Tasklet.sleep(1.0)
    avg_bts_sec = 0.0
    avg_b_sec = 0.0
    while True:
        #set
        with timer() as tmr:
            bts = 0
            for i in range(B):
                stream = random.choice(clients)
                n = random.randint(0, KV)
                bts += n
                set(stream, 'fooblaatpiet%d' % random.randint(0, KN), 'b' * n)
        bts_sec = tmr.sec(bts)
        #print avg_bts_sec, bts_sec
        avg_bts_sec = gamma_filter(avg_bts_sec, bts_sec, 0.90)
        #print avg_bts_sec, bts_sec
        b_sec = tmr.sec(B)
        avg_b_sec = gamma_filter(avg_b_sec, b_sec, 0.90)
        print 'setter', b_sec, '/sec', avg_b_sec, '/sec', bts_sec / 1024.0 / 1024.0, 'Mb/sec', avg_bts_sec / 1024.0 / 1024.0, 'Mb/sec'
        Tasklet.sleep(1.0)
Example #55
0
def setter():
    while len(clients) < N:
        Tasklet.sleep(1.0)
    avg_bts_sec = 0.0
    avg_b_sec = 0.0
    while True:
        #set
        with timer() as tmr:
            bts = 0
            for i in range(B):
                stream = random.choice(clients)
                n = random.randint(0, KV)
                bts += n
                set(stream, 'fooblaatpiet%d' % random.randint(0, KN), 'b' * n)
        bts_sec = tmr.sec(bts)
        #print avg_bts_sec, bts_sec
        avg_bts_sec = gamma_filter(avg_bts_sec, bts_sec, 0.90)
        #print avg_bts_sec, bts_sec
        b_sec = tmr.sec(B)
        avg_b_sec = gamma_filter(avg_b_sec, b_sec, 0.90)
        print 'setter', b_sec, '/sec', avg_b_sec, '/sec', bts_sec / 1024.0 / 1024.0, 'Mb/sec', avg_bts_sec / 1024.0 / 1024.0, 'Mb/sec'
        Tasklet.sleep(1.0)
Example #56
0
 def error(self, exc=None, delay_on_error=0.1):
     "Notify Pool that currently selected connection is bad"
     if exc is None:
         if delay_on_error > 0:
             Tasklet.sleep(delay_on_error)
         conn = self.new_connection()
         self.cput(conn)
         return
     while True:
         bad_host = self.hosts.pop(0)
         self.hosts.append(bad_host)
         self.close_all()
         self.debug("MySQL server %s failed: %s. Trying %s", bad_host, exc,
                    self.hosts[0])
         Tasklet.sleep(1)
         try:
             self.success_counter = 0
             conn = self.new_connection()
             self.cput(conn)
             return
         except Exception as e:
             exc = e