diff --git a/tests/util/test_docker.py b/tests/util/test_docker.py index 41f4492..983292e 100644 --- a/tests/util/test_docker.py +++ b/tests/util/test_docker.py @@ -27,12 +27,10 @@ def test_docker_compose_renderer_local(in_docker_container: MagicMock, primary_h assert renderer.map_service("openvpn-server") == IPv4Address("1.2.3.4") -@patch("docker.resolve") @patch("docker.in_docker_container") -def test_docker_compose_renderer_dind(in_docker_container: MagicMock, resolve: MagicMock) -> None: - resolve.return_value = IPv4Address("5.6.7.8") +def test_docker_compose_renderer_dind(in_docker_container: MagicMock) -> None: in_docker_container.return_value = True renderer = DockerInDockerComposeRenderer(OPENVPN_COMPOSE_TEMPLATE) assert renderer.port_mappings["udp"]["openvpn"] == 1194 - assert renderer.map_service("openvpn-server") == IPv4Address("5.6.7.8") + assert renderer.map_service("openvpn-server") == "openvpn-server" diff --git a/util/docker.py b/util/docker.py index 14d8615..7d4e1a2 100644 --- a/util/docker.py +++ b/util/docker.py @@ -9,7 +9,7 @@ import yaml from fs import create_temp_dir -from network import get_free_tcp_port, get_free_udp_port, primary_host_ip, resolve +from network import get_free_tcp_port, get_free_udp_port, primary_host_ip def in_docker_container() -> bool: @@ -109,7 +109,7 @@ def map_service(self, hostname: str) -> str | IPv4Address: # currently, it seems the OpenWrt in QEMU DNS resolver is not able to forward # its requests to the hosts DNS server; but as routing works in general, # when mapping a hostname, we use the host's DNS resolver directly - return resolve(hostname) + return hostname def create_compose_renderer(compose_template: str) -> ComposeRenderer: diff --git a/util/openwrt.py b/util/openwrt.py index 5b038ba..87217df 100644 --- a/util/openwrt.py +++ b/util/openwrt.py @@ -45,3 +45,10 @@ def enable_dhcp(runner: Runner) -> None: service.restart(runner, "network", wait=1) if not wait_for(partial(get_gateway_ip, runner), "gateway IP has been assigned", delay=1): raise NetworkConfigurationError("no gateway has been assigned on time.") + + +def enable_local_dns_queries(runner: Runner) -> None: + uci.set(runner, "dhcp.@dnsmasq[0].domainneeded", "0") + uci.set(runner, "dhcp.@dnsmasq[0].rebind_protection", "0") + uci.commit(runner, "dhcp") + service.restart(runner, "dnsmasq") diff --git a/util/strategy/qemu_strategy.py b/util/strategy/qemu_strategy.py index f48bbfa..3df5d71 100644 --- a/util/strategy/qemu_strategy.py +++ b/util/strategy/qemu_strategy.py @@ -9,7 +9,7 @@ from labgrid.step import Step from labgrid.strategy import Strategy, StrategyError from labgrid.util import get_free_port -from openwrt import enable_dhcp +from openwrt import enable_dhcp, enable_local_dns_queries from .status import Status @@ -107,6 +107,7 @@ def transition(self, status: Status | str, *, step: Step | None = None) -> None: assert self.shell enable_dhcp(self.shell) + enable_local_dns_queries(self.shell) elif status == Status.ssh: self.transition(Status.internet)