From 57861507abc1c37f49649fd75a9e1d69fe67eb9f Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Wed, 30 Apr 2025 08:52:23 +0300 Subject: [PATCH] integration: remove failing resolvconf tests (#2549) Signed-off-by: Kristoffer Dalby --- .github/workflows/test-integration.yaml | 1 - integration/dns_test.go | 163 ------------------------ 2 files changed, 164 deletions(-) diff --git a/.github/workflows/test-integration.yaml b/.github/workflows/test-integration.yaml index cfe220ab..58c5705a 100644 --- a/.github/workflows/test-integration.yaml +++ b/.github/workflows/test-integration.yaml @@ -49,7 +49,6 @@ jobs: - TestDERPVerifyEndpoint - TestResolveMagicDNS - TestResolveMagicDNSExtraRecordsPath - - TestValidateResolvConf - TestDERPServerScenario - TestDERPServerWebsocketScenario - TestPingAllByIP diff --git a/integration/dns_test.go b/integration/dns_test.go index 77b0f639..ef6c479b 100644 --- a/integration/dns_test.go +++ b/integration/dns_test.go @@ -238,166 +238,3 @@ func TestResolveMagicDNSExtraRecordsPath(t *testing.T) { assertCommandOutputContains(t, client, []string{"dig", "copy.myvpn.example.com"}, "8.8.8.8") } } - -// TestValidateResolvConf validates that the resolv.conf file -// ends up as expected in our Tailscale containers. -// All the containers are based on Alpine, meaning Tailscale -// will overwrite the resolv.conf file. -// On other platform, Tailscale will integrate with a dns manager -// if available (like systemd-resolved). -func TestValidateResolvConf(t *testing.T) { - IntegrationSkip(t) - - resolvconf := func(conf string) string { - return strings.ReplaceAll(`# resolv.conf(5) file generated by tailscale -# For more info, see https://tailscale.com/s/resolvconf-overwrite -# DO NOT EDIT THIS FILE BY HAND -- CHANGES WILL BE OVERWRITTEN -`+conf, "\t", "") - } - - tests := []struct { - name string - conf map[string]string - wantConfCompareFunc func(*testing.T, string) - }{ - // New config - { - name: "no-config", - conf: map[string]string{ - "HEADSCALE_DNS_BASE_DOMAIN": "", - "HEADSCALE_DNS_MAGIC_DNS": "false", - "HEADSCALE_DNS_NAMESERVERS_GLOBAL": "", - }, - wantConfCompareFunc: func(t *testing.T, got string) { - assert.Contains(t, got, "Generated by Docker Engine") - }, - }, - { - name: "global-only", - conf: map[string]string{ - "HEADSCALE_DNS_BASE_DOMAIN": "", - "HEADSCALE_DNS_MAGIC_DNS": "false", - "HEADSCALE_DNS_NAMESERVERS_GLOBAL": "8.8.8.8 1.1.1.1", - }, - wantConfCompareFunc: func(t *testing.T, got string) { - want := resolvconf(` - nameserver 100.100.100.100 - `) - assert.Equal(t, want, got) - }, - }, - { - name: "base-integration-config", - conf: map[string]string{ - "HEADSCALE_DNS_BASE_DOMAIN": "very-unique-domain.net", - }, - wantConfCompareFunc: func(t *testing.T, got string) { - want := resolvconf(` - nameserver 100.100.100.100 - search very-unique-domain.net - `) - assert.Equal(t, want, got) - }, - }, - { - name: "base-magic-dns-off", - conf: map[string]string{ - "HEADSCALE_DNS_MAGIC_DNS": "false", - "HEADSCALE_DNS_BASE_DOMAIN": "very-unique-domain.net", - }, - wantConfCompareFunc: func(t *testing.T, got string) { - want := resolvconf(` - nameserver 100.100.100.100 - search very-unique-domain.net - `) - assert.Equal(t, want, got) - }, - }, - { - name: "base-extra-search-domains", - conf: map[string]string{ - "HEADSCALE_DNS_SEARCH_DOMAINS": "test1.no test2.no", - "HEADSCALE_DNS_BASE_DOMAIN": "with-local-dns.net", - }, - wantConfCompareFunc: func(t *testing.T, got string) { - want := resolvconf(` - nameserver 100.100.100.100 - search with-local-dns.net test1.no test2.no - `) - assert.Equal(t, want, got) - }, - }, - { - name: "base-nameservers-split", - conf: map[string]string{ - "HEADSCALE_DNS_NAMESERVERS_SPLIT": `{foo.bar.com: ["1.1.1.1"]}`, - "HEADSCALE_DNS_BASE_DOMAIN": "with-local-dns.net", - }, - wantConfCompareFunc: func(t *testing.T, got string) { - want := resolvconf(` - nameserver 100.100.100.100 - search with-local-dns.net - `) - assert.Equal(t, want, got) - }, - }, - { - name: "base-full-no-magic", - conf: map[string]string{ - "HEADSCALE_DNS_MAGIC_DNS": "false", - "HEADSCALE_DNS_BASE_DOMAIN": "all-of.it", - "HEADSCALE_DNS_NAMESERVERS_GLOBAL": `8.8.8.8`, - "HEADSCALE_DNS_SEARCH_DOMAINS": "test1.no test2.no", - // TODO(kradalby): this currently isn't working, need to fix it - // "HEADSCALE_DNS_NAMESERVERS_SPLIT": `{foo.bar.com: ["1.1.1.1"]}`, - // "HEADSCALE_DNS_EXTRA_RECORDS": `[{ name: "prometheus.myvpn.example.com", type: "A", value: "100.64.0.4" }]`, - }, - wantConfCompareFunc: func(t *testing.T, got string) { - want := resolvconf(` - nameserver 100.100.100.100 - search all-of.it test1.no test2.no - `) - assert.Equal(t, want, got) - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - spec := ScenarioSpec{ - NodesPerUser: 3, - Users: []string{"user1", "user2"}, - } - - scenario, err := NewScenario(spec) - assertNoErr(t, err) - defer scenario.ShutdownAssertNoPanics(t) - - err = scenario.CreateHeadscaleEnv([]tsic.Option{}, hsic.WithTestName("resolvconf"), hsic.WithConfigEnv(tt.conf)) - assertNoErrHeadscaleEnv(t, err) - - allClients, err := scenario.ListTailscaleClients() - assertNoErrListClients(t, err) - - err = scenario.WaitForTailscaleSync() - assertNoErrSync(t, err) - - // Poor mans cache - _, err = scenario.ListTailscaleClientsFQDNs() - assertNoErrListFQDN(t, err) - - _, err = scenario.ListTailscaleClientsIPs() - assertNoErrListClientIPs(t, err) - - time.Sleep(30 * time.Second) - - for _, client := range allClients { - b, err := client.ReadFile("/etc/resolv.conf") - assertNoErr(t, err) - - t.Logf("comparing resolv conf of %s", client.Hostname()) - tt.wantConfCompareFunc(t, string(b)) - } - }) - } -}