class StdVals: terminal = Links(((5, b"test1"), )) term_bits = (True, ) holes = Ranges(()) incon = Links(()) conflicts = {} con_terminal = terminal
class InconVals: terminal = Links(((0, b"gen"), (5, b"test1"))) term_bits = ( True, False, ) holes = Ranges(((1, 4), )) incon = Links(((4, b"test1"), )) con_terminal = Links(((0, b"gen"), )) conflicts = {(5, b"test1"): {1: (b"gen", ), 5: (b"test2", )}}
def test_missing_blocks(self, create_batches, insert_function, chain): batches = create_batches(num_batches=1, num_blocks=100) incons = ((0, 10), (30, 40), (50, 60), (80, 100)) holes = ranges({i for i in range(100)} - expand_ranges(Ranges(incons))) for ran in incons: wrap_return(insert_function(chain, batches[0][ran[0]:ran[1]])) assert len(chain.consistent_terminal) == 1 assert chain.consistent_terminal[0][0] == 10 # Fill up the holes for i in range(len(holes)): ran = holes[i] wrap_return( insert_function(chain, batches[0][ran[0] - 1:ran[1] + 1])) assert len(chain.consistent_terminal) == 1 assert chain.consistent_terminal[0][0] == incons[i + 1][1]
def test_blocks_by_frontier_diff_no_chain(self, monkeypatch, std_vals): monkeypatch.setattr(MockBlockStore, "get_hash_by_dot", lambda _, dot_bytes: self.test_hash) monkeypatch.setattr(MockBlockStore, "get_block_by_hash", lambda _, blob_hash: self.block_blob) monkeypatch.setattr(MockChain, "get_dots_by_seq_num", lambda _, seq_num: list("dot1")) # init chain chain_id = self.chain_id # self.dbms.chains[chain_id] = MockChain() frontier_diff = FrontierDiff(Ranges(((1, 1), )), {}) set_to_request = set() blobs = self.dbms.get_block_blobs_by_frontier_diff( chain_id, frontier_diff, set_to_request) assert len(set_to_request) == 0 assert len(list(blobs)) == 0
def test_blocks_by_frontier_diff(self, monkeypatch, std_vals): monkeypatch.setattr(MockBlockStore, "get_hash_by_dot", lambda _, dot_bytes: bytes(dot_bytes)) monkeypatch.setattr(MockBlockStore, "get_block_by_hash", lambda _, blob_hash: bytes(blob_hash)) monkeypatch.setattr(MockChain, "get_dots_by_seq_num", lambda _, seq_num: ("dot1", "dot2")) # init chain chain_id = self.chain_id self.dbms.chains[chain_id] = MockChain() frontier_diff = FrontierDiff(Ranges(((1, 2), )), {(1, ShortKey("efef")): {}}) vals_to_request = set() blobs = self.dbms.get_block_blobs_by_frontier_diff( chain_id, frontier_diff, vals_to_request) assert len(vals_to_request) == 0 assert len(blobs) == 3