Ejemplo n.º 1
0
    def test_wait_for_and_get_block(self):
        bts = self.bts
        b = Blockchain(steem_instance=bts, max_block_wait_repetition=18)
        start_num = b.get_current_block_num()
        blocknum = start_num
        last_fetched_block_num = None
        for i in range(3):
            block = b.wait_for_and_get_block(blocknum)
            last_fetched_block_num = block.block_num
            blocknum = last_fetched_block_num + 1
        self.assertEqual(last_fetched_block_num, start_num + 2)

        b2 = Blockchain(steem_instance=bts, max_block_wait_repetition=1)
        with self.assertRaises(BlockWaitTimeExceeded):
            for i in range(300):
                block = b2.wait_for_and_get_block(blocknum)
                last_fetched_block_num = block.block_num
                blocknum = last_fetched_block_num + 2
Ejemplo n.º 2
0
 def test_wait_for_and_get_block(self, node_param):
     if node_param == "non_appbase":
         bts = self.bts
     else:
         bts = self.appbase
     b = Blockchain(steem_instance=bts, max_block_wait_repetition=6)
     start_num = b.get_current_block_num()
     blocknum = start_num
     last_fetched_block_num = None
     for i in range(3):
         block = b.wait_for_and_get_block(blocknum)
         last_fetched_block_num = block.block_num
         blocknum = last_fetched_block_num + 2
     self.assertEqual(last_fetched_block_num, start_num + 4)
Ejemplo n.º 3
0
def find_block_num_by_timestamp(blockchain: Blockchain, low_block_num,
                                high_block_num, key_timestamp):
    low = low_block_num
    high = high_block_num

    while high >= low:
        mid = low + (high - low) // 2
        mid_block = blockchain.wait_for_and_get_block(mid)
        is_equal_timestamp = (mid_block["timestamp"] - timedelta(seconds=5) <=
                              key_timestamp <=
                              mid_block["timestamp"] + timedelta(seconds=5))
        if is_equal_timestamp:
            return mid
        elif mid_block["timestamp"] < key_timestamp:
            low = mid + 1
        else:
            high = mid - 1

    return None