Exemplo n.º 1
0
def test_update_dns_cache(monkeypatch, _cache_file):
    def _getaddrinfo(host,
                     port,
                     family=None,
                     socktype=None,
                     proto=None,
                     flags=None):
        # Needs to return [(family, type, proto, canonname, sockaddr)] but only
        # caring about the address
        return {
            ("blub", socket.AF_INET):
            [(family, None, None, None, ("127.0.0.13", 1337))],
            ("bla", socket.AF_INET):
            [(family, None, None, None, ("127.0.0.37", 1337))],
            ("dual", socket.AF_INET):
            [(family, None, None, None, ("127.0.0.42", 1337))],
        }[(host, family)]

    monkeypatch.setattr(socket, "getaddrinfo", _getaddrinfo)

    ts = Scenario()
    ts.add_host("blub", tags={"criticality": "offline"})
    ts.add_host("bla")
    ts.add_host("dual", tags={"address_family": "ip-v4v6"})
    ts.apply(monkeypatch)

    assert ip_lookup.update_dns_cache() == (3, ["dual"])

    # Check persisted data
    cache = ip_lookup._load_ip_lookup_cache(lock=False)
    assert cache[("blub", 4)] == "127.0.0.13"
    assert ("dual", 6) not in cache
Exemplo n.º 2
0
def test_update_dns_cache(monkeypatch: MonkeyPatch) -> None:
    def _getaddrinfo(host,
                     port,
                     family=None,
                     socktype=None,
                     proto=None,
                     flags=None):
        # Needs to return [(family, type, proto, canonname, sockaddr)] but only
        # caring about the address
        return {
            ("blub", socket.AF_INET):
            [(family, None, None, None, ("127.0.0.13", 1337))],
            ("bla", socket.AF_INET):
            [(family, None, None, None, ("127.0.0.37", 1337))],
            ("dual", socket.AF_INET):
            [(family, None, None, None, ("127.0.0.42", 1337))],
        }[(host, family)]

    monkeypatch.setattr(socket, "getaddrinfo", _getaddrinfo)

    ts = Scenario()
    ts.add_host(HostName("blub"), tags={"criticality": "offline"})
    ts.add_host(HostName("bla"))
    ts.add_host(HostName("dual"), tags={"address_family": "ip-v4v6"})
    ts.apply(monkeypatch)

    config_cache = config.get_config_cache()
    assert (ip_lookup.update_dns_cache(
        host_configs=(config_cache.get_host_config(hn)
                      for hn in config_cache.all_active_hosts()),
        configured_ipv4_addresses={},
        configured_ipv6_addresses={},
        simulation_mode=False,
        override_dns=None,
    ) == (3, ["dual"]))

    # Check persisted data
    cache = ip_lookup.IPLookupCache({})
    cache.load_persisted()
    assert cache[(HostName("blub"), socket.AF_INET)] == "127.0.0.13"
    assert cache.get((HostName("dual"), socket.AF_INET6)) is None