MCPcopy Create free account
hub / github.com/bitcoin/bitcoin / assert_debug_log

Method assert_debug_log

test/functional/test_framework/test_node.py:580–612  ·  view source on GitHub ↗
(self, expected_msgs, unexpected_msgs=None, *, timeout=0)

Source from the content-addressed store, hash-verified

578
579 @contextlib.contextmanager
580 def assert_debug_log(self, expected_msgs, unexpected_msgs=None, *, timeout=0):
581 if unexpected_msgs is None:
582 unexpected_msgs = []
583 assert_equal(type(expected_msgs), list)
584 assert_equal(type(unexpected_msgs), list)
585 remaining_expected = list(expected_msgs)
586
587 time_end = time.time() + timeout * self.timeout_factor
588 prev_size = self.debug_log_size(encoding="utf-8") # Must use same encoding that is used to read() below
589
590 def join_log(log):
591 return " - " + "\n - ".join(log.splitlines())
592
593 yield
594
595 while True:
596 with open(self.debug_log_path, encoding="utf-8", errors="replace") as dl:
597 dl.seek(prev_size)
598 log = dl.read()
599 for unexpected_msg in unexpected_msgs:
600 if unexpected_msg in log:
601 self._raise_assertion_error(f'Unexpected message "{unexpected_msg}" '
602 f'found in log:\n\n{join_log(log)}\n\n')
603 while remaining_expected and remaining_expected[-1] in log:
604 remaining_expected.pop()
605 if not remaining_expected:
606 return
607 if time.time() >= time_end:
608 break
609 time.sleep(0.05)
610 remaining_expected = [e for e in remaining_expected if e not in log]
611 self._raise_assertion_error(f'Expected message(s) {remaining_expected!s} '
612 f'not found in log:\n\n{join_log(log)}\n\n')
613
614 @contextlib.contextmanager
615 def busy_wait_for_debug_log(self, expected_msgs, timeout=60):

Callers 15

expected_errorMethod · 0.80
assert_disk_cleanupMethod · 0.80
test_getnetworkinfoMethod · 0.80
test_sendmsgtopeerMethod · 0.80
run_testMethod · 0.80
run_testMethod · 0.80
run_testMethod · 0.80
out_of_orderMethod · 0.80
run_testMethod · 0.80

Calls 5

debug_log_sizeMethod · 0.95
assert_equalFunction · 0.85
seekMethod · 0.45
readMethod · 0.45

Tested by

no test coverage detected