Пример #1
0
    def testAddNode(self):
        data = range(100)

        new_port = random.randint(10000, 30000)
        new_node = 'localhost:%s' % new_port
        new_rpc_server = ColaRPCServer(('localhost', new_port))
        thd = threading.Thread(target=new_rpc_server.serve_forever)
        thd.setDaemon(True)
        thd.start()
        new_dir = tempfile.mkdtemp()
        ns = list(self.nodes)
        ns.append(new_node)
        new_mq = MessageQueue(new_dir, new_rpc_server, new_node, ns)

        try:
            self.mq0.add_node(new_node)
            self.mq1.add_node(new_node)
            self.mq2.add_node(new_node)

            self.mq0.put(data)

            self.assertEqual(data, sorted(self.mq0.get(size=100)))
        finally:
            try:
                new_rpc_server.shutdown()
                new_mq.shutdown()
            finally:
                shutil.rmtree(new_dir)
Пример #2
0
 def testMqProxy(self):
     self.mq = MessageQueue(self.dir_, None, self.addr, self.addrs,
                               copies=0, n_priorities=1)
     self.proxy = MpMessageQueueClient(self.mq.new_connection('0'))
     
     try:
         test_obj = Url(u'http://qinxuye.me/三星')
         self.proxy.put(test_obj, )
         self.assertEqual(self.proxy.get(), test_obj)
         test_obj = u'三星'
         self.proxy.put(test_obj, )
         self.assertEqual(self.proxy.get(), test_obj)
     finally:
         self.mq.shutdown()
Пример #3
0
    def init_mq(self):
        mq_store_dir = os.path.join(self.root, 'store')
        mq_backup_dir = os.path.join(self.root, 'backup')
        if not os.path.exists(mq_store_dir):
            os.makedirs(mq_store_dir)
        if not os.path.exists(mq_backup_dir):
            os.makedirs(mq_backup_dir)

        self.mq = MessageQueue(self.nodes,
                               self.local,
                               self.rpc_server,
                               copies=self.copies)
        self.mq.init_store(mq_store_dir,
                           mq_backup_dir,
                           verify_exists_hook=self._init_bloom_filter())
Пример #4
0
    def init_mq(self):
        mq_dir = os.path.join(self.working_dir, 'mq')
        copies = self.job_desc.settings.job.copies
        n_priorities = self.job_desc.settings.job.priorities

        kw = {
            'app_name': self.job_name,
            'copies': copies,
            'n_priorities': n_priorities,
            'deduper': self.deduper
        }
        self.mq = MessageQueue(mq_dir, self.rpc_server, self.ctx.worker_addr,
                               self.ctx.addrs[:], **kw)
        # register shutdown callback
        self.shutdown_callbacks.append(self.mq.shutdown)
Пример #5
0
 def setUp(self):
     ports = tuple([random.randint(10000, 30000) for _ in range(3)])
     self.nodes = ['localhost:%s'%port for port in ports]
     self.dirs = [tempfile.mkdtemp() for _ in range(len(ports))]
     self.size = len(ports)
     
     for i in range(self.size):
         setattr(self, 'rpc_server%s'%i, ColaRPCServer(('localhost', ports[i])))
         setattr(self, 'mq%s'%i, 
             MessageQueue(self.dirs[i], getattr(self, 'rpc_server%s'%i), 
                          self.nodes[i], self.nodes[:])
         )
         thd = threading.Thread(target=getattr(self, 'rpc_server%s'%i).serve_forever)
         thd.setDaemon(True)
         thd.start()
         
     self.client = MessageQueueClient(self.nodes)
Пример #6
0
    def init_mq(self,
                nodes,
                local_node,
                loc,
                verify_exists_hook=None,
                copies=1):
        mq_store_dir = os.path.join(loc, 'store')
        mq_backup_dir = os.path.join(loc, 'backup')
        if not os.path.exists(mq_store_dir):
            os.mkdir(mq_store_dir)
        if not os.path.exists(mq_backup_dir):
            os.mkdir(mq_backup_dir)

        # MQ relative
        self.mq = MessageQueue(nodes,
                               local_node,
                               self.rpc_server,
                               copies=copies)
        self.mq.init_store(mq_store_dir,
                           mq_backup_dir,
                           verify_exists_hook=verify_exists_hook)
Пример #7
0
    def setUp(self):
        ports = (11111, 11211, 11311)
        self.nodes = ['localhost:%s' % port for port in ports]
        self.dirs = [tempfile.mkdtemp() for _ in range(2 * len(ports))]
        self.size = len(ports)

        for i in range(self.size):
            setattr(self, 'rpc_server%s' % i,
                    ColaRPCServer(('localhost', ports[i])))
            setattr(
                self, 'mq%s' % i,
                MessageQueue(self.nodes[:], self.nodes[i],
                             getattr(self, 'rpc_server%s' % i)))
            getattr(self, 'mq%s' % i).init_store(self.dirs[2 * i],
                                                 self.dirs[2 * i + 1])
            thd = threading.Thread(target=getattr(self, 'rpc_server%s' %
                                                  i).serve_forever)
            thd.setDaemon(True)
            thd.start()

        self.client = MessageQueueClient(self.nodes)
Пример #8
0
 def __init__(self, nodes, copies=1):
     self.nodes = nodes
     self.hash_ring = HashRing(self.nodes)
     self.copies = max(min(len(self.nodes) - 1, copies), 0)
     self.mq = MessageQueue(nodes, copies=copies)