Exemplo n.º 1
0
def calculate_xor_distances_for_masternodes(pastelids):
    """
    `pastelids` - list of pastelids of masternodes. PastelID is a string.
    """
    mns_db = Masternode.get_active_nodes().where(
        Masternode.pastel_id.in_(pastelids))
    for mn in mns_db:
        for chunk in Chunk.select():
            # we store chunk.chunk_id as CharField, but essentially it's very long integer (more then 8 bytes,
            # doesn't fit in database INT type)
            xor_distance = calculate_xor_distance(mn.pastel_id,
                                                  int(chunk.chunk_id))
            ChunkMnDistance.create(chunk=chunk,
                                   masternode=mn,
                                   distance=str(xor_distance))
Exemplo n.º 2
0
 def test_refresh_masternode_list(self, bc_obj, get_blockchain_connection):
     bc_obj.return_value.masternode_list.return_value = mn_list
     get_blockchain_connection.return_value.masternode_list.return_value = mn_list
     self.assertEqual(Masternode.get_active_nodes().count(), 0)
     refresh_masternode_list()
     self.assertEqual(Masternode.get_active_nodes().count(), 3)
     self.assertEqual(ChunkMnDistance.select().count(), 0)
Exemplo n.º 3
0
def calculate_xor_distances_for_chunks(chunk_ids):
    """
    `chunk_ids` - list of chunks ids. Chunk ID is a very long integer.
    """
    chunk_storage_logger.info(
        'Calculating XOR distance for {} chunks...'.format(len(chunk_ids)))
    chunk_ids_str = [str(x) for x in chunk_ids]
    chunks_db = Chunk.select().where(Chunk.chunk_id.in_(chunk_ids_str))
    counter = 0
    for chunk in chunks_db:
        for mn in Masternode.get_active_nodes():
            # we store chunk.chunk_id as CharField, but essentially it's very long integer (more then 8 bytes,
            # doesn't fit in database INT type)
            xor_distance = calculate_xor_distance(mn.pastel_id,
                                                  int(chunk.chunk_id))
            ChunkMnDistance.create(chunk=chunk,
                                   masternode=mn,
                                   distance=str(xor_distance))
            counter += 1
    chunk_storage_logger.info('..Caculated {} distances'.format(counter))
Exemplo n.º 4
0
 def test_calculate_xor_distances_for_masternodes(
         self, bc_obj, get_blockchain_connection):
     bc_obj.return_value.masternode_list.return_value = mn_list
     get_blockchain_connection.return_value.masternode_list.return_value = mn_list
     for i in range(3):
         Chunk.create(
             chunk_id=
             '1231231231231231232323934384834890089238429382938429384934{}'.
             format(i),
             image_hash=b'asdasdasd')
     refresh_masternode_list()
     self.assertEqual(Masternode.get_active_nodes().count(), 3)
     self.assertEqual(ChunkMnDistance.select().count(), 9)
Exemplo n.º 5
0
 def test_xor_distance_task_with_2_chunks(self):
     Chunk.create(
         chunk_id=
         '4529959709239007853998547086821683042815765622154307906125136018'
         '25293195444578222995977844421809007120124095843869086665678514889'
         '572116942841928123088049',
         image_hash=b'123123123')
     Chunk.create(
         chunk_id=
         '4529959709239007853998547086821683042815765622154307906125136018'
         '25293195444578222995977844421809007120124095843869086665678514889'
         '572116942841928123088041',
         image_hash=b'123123123')
     self.assertEqual(Chunk.select()[0].indexed, False)
     index_new_chunks()
     self.assertEqual(len(ChunkMnDistance.select()), 4)
     self.assertEqual(Chunk.select()[0].indexed, True)
     self.assertEqual(Chunk.select()[1].indexed, True)
Exemplo n.º 6
0
 def test_xor_distance_task_without_chunks_without_masternodes(self):
     Masternode.delete()
     self.assertEqual(len(Chunk.select()), 0)
     index_new_chunks()
     self.assertEqual(len(ChunkMnDistance.select()), 0)
Exemplo n.º 7
0
 def test_xor_distance_task_without_chunks(self):
     self.assertEqual(len(Chunk.select()), 0)
     index_new_chunks()
     self.assertEqual(len(ChunkMnDistance.select()), 0)