def run(self): address = '127.0.0.1:%s'%self.port operator = DHTOperator(address, self.home_dir, is_init_node=self.init_node, node_name=self.port) self.operator = operator operator.register_operation('ManageNeighbour', ManageNeighbour) operator.register_operation('DiscoveryOperation', DiscoveryOperation) operator.register_operation('TopologyCognition', TopologyCognition) operator.register_operation('GetRangeDataRequest', GetRangeDataRequestOperation) operator.register_operation('GetRangesTable', GetRangesTableOperation) operator.register_operation('PutDataBlock', PutDataBlockOperation) operator.register_operation('SplitRangeCancel', SplitRangeCancelOperation) operator.register_operation('SplitRangeRequest', SplitRangeRequestOperation) operator.register_operation('UpdateHashRangeTable', UpdateHashRangeTableOperation) operator.register_operation('CheckHashRangeTable', CheckHashRangeTableOperation) server = FriServer('0.0.0.0', self.port, operator, server_name='node_%s'%self.port) ret = server.start() if not ret: print 'ERROR: server does not started!' return self.stopped = False while not self.stopped: time.sleep(0.1) server.stop()
def test02_ssl_bad_cert(self): keystorage = FileBasedKeyStorage(VALID_STORAGE, PASSWD) inv_keystorage = FileBasedKeyStorage(INVALID_STORAGE, PASSWD) server1 = server2 = None try: operator = Operator('127.0.0.1:1986', key_storage=keystorage) operator.neighbours = ['127.0.0.1:1987'] operator.register_operation('ECHO', EchoOperation) server1 = FriServer('0.0.0.0', 1986, operator, 10, 'node_1', keystorage) ret = server1.start() self.assertEqual(ret, True) operator = Operator('127.0.0.1:1987', key_storage=inv_keystorage) operator.neighbours = ['127.0.0.1:1986'] operator.register_operation('ECHO', EchoOperation) server2 = FriServer('0.0.0.0', 1987, operator, 10, 'node_2', inv_keystorage) ret = server2.start() self.assertEqual(ret, True) packet = { 'message_id': 323232, 'method': 'ECHO', 'sync': False, 'sender': '127.0.0.1:1987', 'parameters': {'message': 'test message'}} packet_obj = FabnetPacketRequest(**packet) rcode, rmsg = operator.call_node('127.0.0.1:1986', packet_obj) self.assertEqual(rcode, 1, rmsg) time.sleep(.1) finally: if server1: server1.stop() if server2: server2.stop()
def __start_server(self, processor_class, routine, ks=None, add_args=()): server_name = 'test-node' cur_thread = threading.current_thread() cur_thread.setName('%s-main'%server_name) workers_mgr = WorkersManager(processor_class, min_count=1, max_count=8, \ server_name=server_name, init_params=(ks,)) fri_server = FriServer('127.0.0.1', 6666, workers_mgr, server_name) fri_server.start() try: routine() finally: fri_server.stop()
def __test_server(self, keystorage=None): server1 = server2 = None try: operator = Operator('127.0.0.1:1986', key_storage=keystorage) operator.neighbours = ['127.0.0.1:1987'] operator.register_operation('ECHO', EchoOperation) server1 = FriServer('0.0.0.0', 1986, operator, 10, 'node_1', keystorage) ret = server1.start() self.assertEqual(ret, True) operator = Operator('127.0.0.1:1987', key_storage=keystorage) operator.neighbours = ['127.0.0.1:1986'] operator.register_operation('ECHO', EchoOperation) server2 = FriServer('0.0.0.0', 1987, operator, 10, 'node_2', keystorage) ret = server2.start() self.assertEqual(ret, True) packet = { 'message_id': 323232, 'method': 'ECHO', 'sync': False, 'sender': '127.0.0.1:1987', 'parameters': {'message': 'test message'}} if keystorage: packet['session_id'] = keystorage.get_node_cert_key() packet_obj = FabnetPacketRequest(**packet) rcode, rmsg = operator.call_node('127.0.0.1:1986', packet_obj) self.assertEqual(rcode, 0, rmsg) operator.wait_response(323232, 1) self.assertEqual(os.path.exists('/tmp/server1.out'), True) self.assertEqual(os.path.exists('/tmp/server2.out'), True) request = json.loads(open('/tmp/server1.out').read()) response = json.loads(open('/tmp/server2.out').read()) self.assertEqual(request, packet) good_resp = {'from_node': '127.0.0.1:1986','message_id': 323232, 'ret_code': 0, 'ret_message': 'ok', 'ret_parameters': {'message': 'test message'}} self.assertEqual(response, good_resp) finally: if server1: server1.stop() if server2: server2.stop()
def test_big_data_test(self): keystorage = FileBasedKeyStorage(VALID_STORAGE, PASSWD) try: operator = Operator("127.0.0.1:1986", key_storage=keystorage) operator.neighbours = ["127.0.0.1:1987"] operator.register_operation("ECHO", EchoOperation) server1 = FriServer("0.0.0.0", 1986, operator, 10, "node_1", keystorage) ret = server1.start() self.assertEqual(ret, True) operator = Operator("127.0.0.1:1987", key_storage=keystorage) operator.neighbours = ["127.0.0.1:1986"] operator.register_operation("ECHO", EchoOperation) server2 = FriServer("0.0.0.0", 1987, operator, 10, "node_2", keystorage) ret = server2.start() self.assertEqual(ret, True) print "Init big data..." data = "0123456789" * 900000 print "Done" data += "" packet = { "message_id": 323232, "method": "ECHO", "sync": False, "sender": "127.0.0.1:1987", "binary_data": data, } t0 = datetime.now() packet_obj = FabnetPacketRequest(**packet) rcode, rmsg = operator.call_node("127.0.0.1:1986", packet_obj) self.assertEqual(rcode, 0, rmsg) operator.wait_response(323232, 20) print "Echo big data time: %s" % (datetime.now() - t0) time.sleep(1) rcv_data = open("/tmp/big_message.out").read() self.assertEqual(len(rcv_data), len(data)) os.remove("/tmp/big_message.out") finally: if server1: server1.stop() if server2: server2.stop()
def run(self): address = '127.0.0.1:%s'%self.port operator = Operator(address) self.operator = operator operator.register_operation('ManageNeighbour', ManageNeighbour) operator.register_operation('DiscoveryOperation', DiscoveryOperation) operator.register_operation('TopologyCognition', TopologyCognition) server = FriServer('0.0.0.0', self.port, operator, server_name='node_%s'%self.port) ret = server.start() if not ret: return self.stopped = False while not self.stopped: time.sleep(0.1) server.stop()
def test_discovery_operation(self): server1 = server2 = None try: operator = Operator('127.0.0.1:1986') operator.register_operation('ManageNeighbour', ManageNeighbour) operator.register_operation('DiscoveryOperation', DiscoveryOperation) operator.register_operation('TopologyCognition', TopologyCognition) server1 = FriServer('0.0.0.0', 1986, operator, server_name='node_1') ret = server1.start() self.assertEqual(ret, True) operator1 = Operator('127.0.0.1:1987') operator1.register_operation('ManageNeighbour', ManageNeighbour) operator1.register_operation('DiscoveryOperation', DiscoveryOperation) operator1.register_operation('TopologyCognition', TopologyCognition) server2 = FriServer('0.0.0.0', 1987, operator1, server_name='node_2') ret = server2.start() self.assertEqual(ret, True) packet = { 'message_id': 323232, 'method': 'DiscoveryOperation', 'sender': '127.0.0.1:1987', 'parameters': {}} packet_obj = FabnetPacketRequest(**packet) rcode, rmsg = operator1.call_node('127.0.0.1:1986', packet_obj) self.assertEqual(rcode, 0, rmsg) time.sleep(1) self.assertEqual(operator.upper_neighbours, ['127.0.0.1:1987']) self.assertEqual(operator.superior_neighbours, ['127.0.0.1:1987']) self.assertEqual(operator1.upper_neighbours, ['127.0.0.1:1986']) self.assertEqual(operator1.superior_neighbours, ['127.0.0.1:1986']) finally: if server1: server1.stop() if server2: server2.stop()
class Node: def __init__(self, hostname, port, home_dir, node_name='anonymous_node', ks_path=None, ks_passwd=None): self.hostname = hostname self.port = port self.home_dir = home_dir self.node_name = node_name if ks_path: self.keystore = init_keystore(ks_path, ks_passwd) else: self.keystore = None self.server = None def start(self, neighbour): address = '%s:%s' % (self.hostname, self.port) if not neighbour: is_init_node = True else: is_init_node = False operator = OPERATOR(address, self.home_dir, self.keystore, is_init_node, self.node_name) for (op_name, op_class) in OPERATIONS_MAP.items(): operator.register_operation(op_name, op_class) self.server = FriServer(self.hostname, self.port, operator, \ server_name=self.node_name, \ keystorage=self.keystore) started = self.server.start() if not started: return started if is_init_node: return True packet = FabnetPacketRequest(method='DiscoveryOperation', sender=address) rcode, rmsg = self.server.operator.call_node(neighbour, packet) if rcode: logger.warning('Neighbour %s does not respond!'%neighbour) return True def stop(self): return self.server.stop()
def test_discovery_operation(self): server1 = server2 = None try: operator = Operator("127.0.0.1:1986") operator.register_operation("ManageNeighbour", ManageNeighbour) operator.register_operation("DiscoveryOperation", DiscoveryOperation) operator.register_operation("TopologyCognition", TopologyCognition) server1 = FriServer("0.0.0.0", 1986, operator, server_name="node_1") ret = server1.start() self.assertEqual(ret, True) operator1 = Operator("127.0.0.1:1987") operator1.register_operation("ManageNeighbour", ManageNeighbour) operator1.register_operation("DiscoveryOperation", DiscoveryOperation) operator1.register_operation("TopologyCognition", TopologyCognition) server2 = FriServer("0.0.0.0", 1987, operator1, server_name="node_2") ret = server2.start() self.assertEqual(ret, True) packet = { "message_id": 323232, "method": "DiscoveryOperation", "sender": "127.0.0.1:1987", "parameters": {}, } packet_obj = FabnetPacketRequest(**packet) rcode, rmsg = operator1.call_node("127.0.0.1:1986", packet_obj) self.assertEqual(rcode, 0, rmsg) operator1.wait_response(323232, 1) server1.stop() time.sleep(3) server1 = None self.assertEqual(operator.upper_neighbours, ["127.0.0.1:1987"]) self.assertEqual(operator.superior_neighbours, ["127.0.0.1:1987"]) self.assertEqual(operator1.upper_neighbours, []) self.assertEqual(operator1.superior_neighbours, []) finally: if server1: server1.stop() if server2: server2.stop()