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()
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
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:
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