def METHOD_NAME(self):
    peers_dat = os.path.join(self.nodes[0].chain_path, "peers.dat")
    init_error = lambda reason: (
        f"Error: Invalid or corrupt peers.dat \\({reason}\\). If you believe this "
        f"is a bug, please report it to {self.config['environment']['PACKAGE_BUGREPORT']}. "
        f'As a workaround, you can move the file \\("{re.escape(peers_dat)}"\\) out of the way \\(rename, '
        "move, or delete\\) to have a new one created on the next start."
    )
    self.log.info("Check that mocked addrman is valid")
    self.stop_node(0)
    write_addrman(peers_dat)
    with self.nodes[0].assert_debug_log(["Loaded 0 addresses from peers.dat"]):
        self.start_node(0, extra_args=["-checkaddrman=1"])
    assert_equal(self.nodes[0].getnodeaddresses(), [])
    self.log.info("Check that addrman with negative lowest_compatible cannot be read")
    self.stop_node(0)
    write_addrman(peers_dat, lowest_compatible=-32)
    self.nodes[0].assert_start_raises_init_error(
        expected_msg=init_error(
            "Corrupted addrman database: The compat value \\(0\\) is lower "
            "than the expected minimum value 32.: (.+)"
        ),
        match=ErrorMatch.FULL_REGEX,
    )
    self.log.info("Check that addrman from future is overwritten with new addrman")
    self.stop_node(0)
    write_addrman(peers_dat, lowest_compatible=111)
    assert_equal(os.path.exists(peers_dat + ".bak"), False)
    with self.nodes[0].assert_debug_log([
            f'Creating new peers.dat because the file version was not compatible ("{peers_dat}"). Original backed up to peers.dat.bak',
    ]):
        self.start_node(0)
    assert_equal(self.nodes[0].getnodeaddresses(), [])
    assert_equal(os.path.exists(peers_dat + ".bak"), True)
    self.log.info("Check that corrupt addrman cannot be read (EOF)")
    self.stop_node(0)
    with open(peers_dat, "wb") as f:
        f.write(serialize_addrman()[:-1])
    self.nodes[0].assert_start_raises_init_error(
        expected_msg=init_error("AutoFile::read: end of file.*"),
        match=ErrorMatch.FULL_REGEX,
    )
    self.log.info("Check that corrupt addrman cannot be read (magic)")
    self.stop_node(0)
    write_addrman(peers_dat, net_magic="signet")
    self.nodes[0].assert_start_raises_init_error(
        expected_msg=init_error("Invalid network magic number"),
        match=ErrorMatch.FULL_REGEX,
    )
    self.log.info("Check that corrupt addrman cannot be read (checksum)")
    self.stop_node(0)
    write_addrman(peers_dat, mock_checksum=b"ab" * 32)
    self.nodes[0].assert_start_raises_init_error(
        expected_msg=init_error("Checksum mismatch, data corrupted"),
        match=ErrorMatch.FULL_REGEX,
    )
    self.log.info("Check that corrupt addrman cannot be read (len_tried)")
    self.stop_node(0)
    write_addrman(peers_dat, len_tried=-1)
    self.nodes[0].assert_start_raises_init_error(
        expected_msg=init_error("Corrupt AddrMan serialization: nTried=-1, should be in \\[0, 16384\\]:.*"),
        match=ErrorMatch.FULL_REGEX,
    )
    self.log.info("Check that corrupt addrman cannot be read (len_new)")
    self.stop_node(0)
    write_addrman(peers_dat, len_new=-1)
    self.nodes[0].assert_start_raises_init_error(
        expected_msg=init_error("Corrupt AddrMan serialization: nNew=-1, should be in \\[0, 65536\\]:.*"),
        match=ErrorMatch.FULL_REGEX,
    )
    self.log.info("Check that corrupt addrman cannot be read (failed check)")
    self.stop_node(0)
    write_addrman(peers_dat, bucket_key=0)
    self.nodes[0].assert_start_raises_init_error(
        expected_msg=init_error("Corrupt data. Consistency check failed with code -16: .*"),
        match=ErrorMatch.FULL_REGEX,
    )
    self.log.info("Check that missing addrman is recreated")
    self.stop_node(0)
    os.remove(peers_dat)
    with self.nodes[0].assert_debug_log([
            f'Creating peers.dat because the file was not found ("{peers_dat}")',
    ]):
        self.start_node(0)
    assert_equal(self.nodes[0].getnodeaddresses(), [])