def test_josn_support(self): '''It should convert to json and back''' node_list = NodeList([Node(KeyBytes(), ('127.0.0.1', 12345))]) self.assertEqual(node_list, NodeList.from_json_loadable(node_list.to_json_dumpable()))
def run(self, controller, node, key): d = controller._template_dict() d[JSONKeys.RPC] = JSONKeys.RPCs.FIND_NODE d[JSONKeys.KEY] = key.base64 task = controller._network.send(node.address, d, timeout=True) self.hook_task(task) data_packet = task.result() if not data_packet: _logger.debug('Find node timeout %s←%s', controller.node, node) return controller._update_routing_table_from_data_packet(data_packet) dict_obj = data_packet.dict_obj node_list = dict_obj.get(JSONKeys.NODES) if node_list: try: nodes = NodeList.from_json_loadable(node_list) except ValueError as e: _logger.debug('Find node invalid %s←%s err=%s', controller.node, node, e) else: _logger.debug('Find node nodes %s←%s len=%d', controller.node, node, len(nodes)) return nodes _logger.debug('Find node invalid %s←%s', controller.node, node)
def run(self, controller, node, key, index): d = controller._template_dict() d[JSONKeys.RPC] = JSONKeys.RPCs.FIND_VALUE d[JSONKeys.KEY] = key.base64 if index: d[JSONKeys.INDEX] = index.base64 future = controller._network.send(node.address, d, timeout=True) data_packet = future.result() if not data_packet: _logger.debug('Find value timeout %s←%s', controller.node, node) return controller._update_routing_table_from_data_packet(data_packet) dict_obj = data_packet.dict_obj if JSONKeys.VALUES in dict_obj: kvp_info_list = KVPExchangeInfoList.from_json_loadable( dict_obj[JSONKeys.VALUES]) _logger.debug('Find value %s←%s dictlen=%d', controller.node, node, len(kvp_info_list)) return FindValueFromNodeResult(kvp_info_list, None) elif JSONKeys.NODES in dict_obj: try: nodes = NodeList.from_json_loadable(dict_obj[JSONKeys.NODES]) except ValueError as e: _logger.debug('Find value node invalid %s←%s err=%s', controller.node, node, e) else: _logger.debug('Find value nodes %s←%s len=%d', controller.node, node, len(nodes)) return FindValueFromNodeResult(None, nodes)