mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-08-10 13:20:33 +02:00
remove leaking timeout, fix blocking upstreams checks, leaking is per listener, OS resolvers are tested in parallel, reset is only done is os is down
fix test use upstreamIS var init map, fix watcher flag attempt to detect network changes attempt to detect network changes cancel and rerun reinitializeOSResolver cancel and rerun reinitializeOSResolver cancel and rerun reinitializeOSResolver ignore invalid inferaces ignore invalid inferaces allow OS resolver upstream to fail dont wait for dnsWait group on reinit, check for active interfaces to trigger reinit fix unused var simpler active iface check, debug logs dont spam network service name patching on Mac dont wait for os resolver nameserver testing remove test for osresovlers for now async nameserver testing remove unused test
This commit is contained in:
@@ -3,13 +3,10 @@ package ctrld
|
||||
import (
|
||||
"context"
|
||||
"net"
|
||||
"slices"
|
||||
"sync"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"github.com/miekg/dns"
|
||||
)
|
||||
|
||||
@@ -178,71 +175,6 @@ func runLocalPacketConnTestServer(t *testing.T, pc net.PacketConn, handler dns.H
|
||||
return server, addr, nil
|
||||
}
|
||||
|
||||
func Test_initializeOsResolver(t *testing.T) {
|
||||
testNameServerFn = testNameserverTest
|
||||
lanServer1 := "192.168.1.1"
|
||||
lanServer1WithPort := net.JoinHostPort("192.168.1.1", "53")
|
||||
lanServer2 := "10.0.10.69"
|
||||
lanServer2WithPort := net.JoinHostPort("10.0.10.69", "53")
|
||||
lanServer3 := "192.168.40.1"
|
||||
lanServer3WithPort := net.JoinHostPort("192.168.40.1", "53")
|
||||
wanServer := "1.1.1.1"
|
||||
lanServers := []string{lanServer1WithPort, lanServer2WithPort}
|
||||
publicServers := []string{net.JoinHostPort(wanServer, "53")}
|
||||
|
||||
or = newResolverWithNameserver(defaultNameservers())
|
||||
|
||||
// First initialization, initialized servers are saved.
|
||||
initializeOsResolver([]string{lanServer1, lanServer2, wanServer})
|
||||
p := or.initializedLanServers.Load()
|
||||
assert.NotNil(t, p)
|
||||
assert.True(t, slices.Equal(*p, lanServers))
|
||||
assert.True(t, slices.Equal(*or.lanServers.Load(), lanServers))
|
||||
assert.True(t, slices.Equal(*or.publicServers.Load(), publicServers))
|
||||
|
||||
// No new LAN servers, but lanServer2 gone, initialized servers not changed.
|
||||
initializeOsResolver([]string{lanServer1, wanServer})
|
||||
p = or.initializedLanServers.Load()
|
||||
assert.NotNil(t, p)
|
||||
assert.True(t, slices.Equal(*p, lanServers))
|
||||
assert.True(t, slices.Equal(*or.lanServers.Load(), []string{lanServer1WithPort}))
|
||||
assert.True(t, slices.Equal(*or.publicServers.Load(), publicServers))
|
||||
|
||||
// New LAN servers, they are used, initialized servers not changed.
|
||||
initializeOsResolver([]string{lanServer3, wanServer})
|
||||
p = or.initializedLanServers.Load()
|
||||
assert.NotNil(t, p)
|
||||
assert.True(t, slices.Equal(*p, lanServers))
|
||||
assert.True(t, slices.Equal(*or.lanServers.Load(), []string{lanServer3WithPort}))
|
||||
assert.True(t, slices.Equal(*or.publicServers.Load(), publicServers))
|
||||
|
||||
// No LAN server available, initialized servers will be used.
|
||||
initializeOsResolver([]string{wanServer})
|
||||
p = or.initializedLanServers.Load()
|
||||
assert.NotNil(t, p)
|
||||
assert.True(t, slices.Equal(*p, lanServers))
|
||||
assert.True(t, slices.Equal(*or.lanServers.Load(), lanServers))
|
||||
assert.True(t, slices.Equal(*or.publicServers.Load(), publicServers))
|
||||
|
||||
// No Public server, ControlD Public DNS will be used.
|
||||
initializeOsResolver([]string{})
|
||||
p = or.initializedLanServers.Load()
|
||||
assert.NotNil(t, p)
|
||||
assert.True(t, slices.Equal(*p, lanServers))
|
||||
assert.True(t, slices.Equal(*or.lanServers.Load(), lanServers))
|
||||
assert.True(t, slices.Equal(*or.publicServers.Load(), []string{controldPublicDnsWithPort}))
|
||||
|
||||
// No LAN server available, initialized servers is unavailable, nothing will be used.
|
||||
nonSuccessTestServerMap[lanServer1WithPort] = true
|
||||
nonSuccessTestServerMap[lanServer2WithPort] = true
|
||||
initializeOsResolver([]string{wanServer})
|
||||
p = or.initializedLanServers.Load()
|
||||
assert.NotNil(t, p)
|
||||
assert.True(t, slices.Equal(*p, lanServers))
|
||||
assert.Empty(t, *or.lanServers.Load())
|
||||
assert.True(t, slices.Equal(*or.publicServers.Load(), publicServers))
|
||||
}
|
||||
|
||||
func successHandler() dns.HandlerFunc {
|
||||
return func(w dns.ResponseWriter, msg *dns.Msg) {
|
||||
m := new(dns.Msg)
|
||||
@@ -258,9 +190,3 @@ func nonSuccessHandlerWithRcode(rcode int) dns.HandlerFunc {
|
||||
w.WriteMsg(m)
|
||||
}
|
||||
}
|
||||
|
||||
var nonSuccessTestServerMap = map[string]bool{}
|
||||
|
||||
func testNameserverTest(addr string) bool {
|
||||
return !nonSuccessTestServerMap[addr]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user