Пример #1
0
    def test00_test_echo(self):
        def echo_worker(name, err_queue):
            cl = OperatorClient('test_node')
            msg = 'Hello, I am %s'%name
            for i in xrange(100):
                ret_msg = cl.echo(msg)
                if ret_msg != msg:
                    error = '%s != %s'%(ret_msg, msg)
                    print 'ERROR: %s'%error
                    err_queue.put(error)

        proc = OperatorProcess(Operator, None, None, None, None, server_name='test_node')
        proc.start()
        time.sleep(1)
        try:
            processes = []
            errors = Queue()
            for i in xrange(20):
                p = Thread(target=echo_worker, args=('worker #%i'%i, errors))
                processes.append(p)

            t0 = datetime.now()
            for p in processes:
                p.start()

            for p in processes:
                p.join()

            if not errors.empty():
                raise Exception('ERROR in threads...')
            print 'stress time: %s'%(datetime.now()-t0)
        finally:
            proc.stop()
            proc.join()
Пример #2
0
    def start(self, neighbour):
        address = '%s:%s' % (self.hostname, self.port)
        if not neighbour:
            is_init_node = True
        else:
            is_init_node = False

        operator_class = OPERATORS_MAP.get(self.node_type, None)
        if operator_class is None:
            logger.error('Node type "%s" does not found!'%self.node_type)
            return False

        op_proc = OperatorProcess(operator_class, address, self.home_dir, self.keystore, \
                                    is_init_node, self.node_name, config=self.config)
        op_proc.start_carefully()

        try:
            oper_manager = OperationsManager(operator_class.OPERATIONS_LIST, self.node_name, self.keystore)
            workers_mgr = WorkersManager(OperationsProcessor, server_name=self.node_name, \
                                            init_params=(oper_manager, self.keystore))
            fri_server = FriServer(self.bind_host, self.port, workers_mgr, self.node_name)
            started = fri_server.start()
            if not started:
                raise Exception('FriServer does not started!')
        except Exception, err:
            time.sleep(1)
            op_proc.stop()
            op_proc.join()
            raise err
Пример #3
0
    def test01_ret_struct(self):
        proc = OperatorProcess(Operator, None, None, None, None, server_name='test_node')
        proc.start()
        time.sleep(1)
        try:
            cl = OperatorClient('test_node')
            ret = cl.test_ret_struct('test message', 123456)
            self.assertEqual(len(ret), 2)
            self.assertEqual(ret[0], 'str_param=test message, int_param=123456')
            self.assertEqual(ret[1],  {'s':'test message', 'i':123456})

            ret = cl.test_object(FabnetPacketRequest(method='TestMethod', parameters={'tst': 213}))
            self.assertEqual(ret.ret_code, 0, ret.ret_message)

            try:
                cl.raise_exception('test exception')
            except Exception, err:
                from fabnet.core.fri_base import FriException
                self.assertEqual(err.__class__, FriException)
                self.assertEqual(str(err), 'test exception')
            else:
Пример #4
0
    def __start_node(self, node_name, ks=None):
        server_name = node_name
        cur_thread = threading.current_thread()
        cur_thread.setName('%s-main'%server_name)

        proc = OperatorProcess(Operator, '127.0.0.1:6666', '/tmp', ks, True, server_name)

        proc.start_carefully()

        try:
            oper_manager = OperationsManager([EchoOperation, EchoWithCallOperation, UnauthOper], server_name, ks)
            workers_mgr = WorkersManager(OperationsProcessor, min_count=2, max_count=8, \
                                    server_name=server_name, init_params=(oper_manager, ks))
            fri_server = FriServer('127.0.0.1', 6666, workers_mgr, server_name)
            fri_server.start()
        except Exception, err:
            time.sleep(1)
            proc.stop()
            proc.join()
            raise err