def __init__(self, self_address, home_dir='/tmp/', certfile=None, is_init_node=False, node_name='unknown'): Operator.__init__(self, self_address, home_dir, certfile, is_init_node, node_name) self.status = DS_INITIALIZE self.ranges_table = HashRangesTable() if is_init_node: self.ranges_table.append(MIN_HASH, MAX_HASH, self.self_address) self.save_path = os.path.join(home_dir, 'dht_range') if not os.path.exists(self.save_path): os.mkdir(self.save_path) self.__dht_range = FSHashRanges.discovery_range(self.save_path) self.__split_requests_cache = [] self.__start_dht_try_count = 0 self.__init_dht_thread = None if is_init_node: self.status = DS_NORMALWORK self.__check_hash_table_thread = CheckLocalHashTableThread(self) self.__check_hash_table_thread.setName('%s-CheckLocalHashTableThread'%self.node_name) self.__check_hash_table_thread.start() self.__monitor_dht_ranges = MonitorDHTRanges(self) self.__monitor_dht_ranges.setName('%s-MonitorDHTRanges'%self.node_name) self.__monitor_dht_ranges.start()
def __init__(self, self_address, home_dir='/tmp/', key_storage=None, \ is_init_node=False, node_name='unknown', config={}): cur_cfg = {} cur_cfg.update(DEFAULT_DHT_CONFIG) cur_cfg.update(config) Operator.__init__(self, self_address, home_dir, key_storage, \ is_init_node, node_name, cur_cfg) self.status = DS_INITIALIZE self.ranges_table = HashRangesTable() if is_init_node: self.ranges_table.append(MIN_HASH, MAX_HASH, self.self_address) self.save_path = os.path.join(home_dir, 'dht_range') if not os.path.exists(self.save_path): os.mkdir(self.save_path) self.__split_requests_cache = [] self.__dht_range = FSHashRanges.discovery_range(self.save_path, ret_full=is_init_node) self.__start_dht_try_count = 0 self.__init_dht_thread = None if is_init_node: self.status = DS_NORMALWORK self.__check_hash_table_thread = CheckLocalHashTableThread(self) self.__check_hash_table_thread.setName('%s-CheckLocalHashTableThread'%self.node_name) self.__check_hash_table_thread.start() self.__monitor_dht_ranges = MonitorDHTRanges(self) self.__monitor_dht_ranges.setName('%s-MonitorDHTRanges'%self.node_name) self.__monitor_dht_ranges.start()
def test01_discovery_ranges(self): fs_range = FSHashRanges(START_RANGE_HASH, END_RANGE_HASH, TEST_FS_RANGE_DIR) fname, tmp = tmpdata('Test data #1') fs_range.put(100, fname) fname, tmp2 = tmpdata('Test data #2') fs_range.put(900, fname) fname, tmp3 = tmpdata('Test data #3') fs_range.put(10005000, fname) fs_range.split_range(0, 100500) time.sleep(.2) discovered_range = FSHashRanges.discovery_range(TEST_FS_RANGE_DIR) self.assertEqual(discovered_range.get_start(), long(START_RANGE_HASH, 16)) self.assertEqual(discovered_range.get_end(), long(END_RANGE_HASH, 16)) range_dir = discovered_range.get_range_dir() self.assertTrue(os.path.exists(os.path.join(range_dir, '%040x'%100))) self.assertTrue(os.path.exists(os.path.join(range_dir, '%040x'%900))) self.assertTrue(os.path.exists(os.path.join(range_dir, '%040x'%10005000)))