mirror of
https://github.com/Control-D-Inc/ctrld.git
synced 2026-07-16 13:17:19 +02:00
test: isolate VPN DNS settling tests from host adapters
This commit is contained in:
committed by
Cuong Manh Le
parent
6c5489873b
commit
5ccbf63e58
+9
-1
@@ -52,6 +52,9 @@ type vpnDNSManager struct {
|
|||||||
// state for one guarded refresh cycle because Windows can briefly report an
|
// state for one guarded refresh cycle because Windows can briefly report an
|
||||||
// intermediate empty adapter/DNS state after sleep/wake or reconnect.
|
// intermediate empty adapter/DNS state after sleep/wake or reconnect.
|
||||||
retainedAfterEmptyDiscovery bool
|
retainedAfterEmptyDiscovery bool
|
||||||
|
// discoverVPNDNS is injected for tests so Refresh does not depend on the
|
||||||
|
// runner host's real VPN/virtual adapter state.
|
||||||
|
discoverVPNDNS func(context.Context) []ctrld.VPNDNSConfig
|
||||||
// Called when VPN DNS server list changes, to update intercept exemptions.
|
// Called when VPN DNS server list changes, to update intercept exemptions.
|
||||||
onServersChanged vpnDNSExemptFunc
|
onServersChanged vpnDNSExemptFunc
|
||||||
}
|
}
|
||||||
@@ -63,6 +66,7 @@ func newVPNDNSManager(logger *atomic.Pointer[ctrld.Logger], exemptFunc vpnDNSExe
|
|||||||
return &vpnDNSManager{
|
return &vpnDNSManager{
|
||||||
routes: make(map[string][]string),
|
routes: make(map[string][]string),
|
||||||
logger: logger,
|
logger: logger,
|
||||||
|
discoverVPNDNS: ctrld.DiscoverVPNDNS,
|
||||||
onServersChanged: exemptFunc,
|
onServersChanged: exemptFunc,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -74,7 +78,11 @@ func (m *vpnDNSManager) Refresh(ctx context.Context, guardAgainstNoNameservers .
|
|||||||
guardedRefresh := len(guardAgainstNoNameservers) > 0 && guardAgainstNoNameservers[0]
|
guardedRefresh := len(guardAgainstNoNameservers) > 0 && guardAgainstNoNameservers[0]
|
||||||
|
|
||||||
ctrld.Log(ctx, logger.Debug(), "Refreshing VPN DNS configurations")
|
ctrld.Log(ctx, logger.Debug(), "Refreshing VPN DNS configurations")
|
||||||
configs := ctrld.DiscoverVPNDNS(ctx)
|
discoverVPNDNS := m.discoverVPNDNS
|
||||||
|
if discoverVPNDNS == nil {
|
||||||
|
discoverVPNDNS = ctrld.DiscoverVPNDNS
|
||||||
|
}
|
||||||
|
configs := discoverVPNDNS(ctx)
|
||||||
|
|
||||||
// Detect exit mode: if the default route goes through a VPN DNS interface,
|
// Detect exit mode: if the default route goes through a VPN DNS interface,
|
||||||
// the VPN is routing ALL traffic (exit node / full tunnel). This is more
|
// the VPN is routing ALL traffic (exit node / full tunnel). This is more
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ func TestVPNDNSRefreshRetainsStateForOneGuardedEmptyDiscovery(t *testing.T) {
|
|||||||
gotExemptions = exemptions
|
gotExemptions = exemptions
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
m.discoverVPNDNS = func(context.Context) []ctrld.VPNDNSConfig { return nil }
|
||||||
m.configs = []ctrld.VPNDNSConfig{{
|
m.configs = []ctrld.VPNDNSConfig{{
|
||||||
InterfaceName: "Ethernet 6",
|
InterfaceName: "Ethernet 6",
|
||||||
Servers: []string{"10.25.37.21", "10.25.37.22"},
|
Servers: []string{"10.25.37.21", "10.25.37.22"},
|
||||||
@@ -47,6 +48,7 @@ func TestVPNDNSRefreshClearsOnSecondGuardedEmptyDiscovery(t *testing.T) {
|
|||||||
gotExemptions = exemptions
|
gotExemptions = exemptions
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
m.discoverVPNDNS = func(context.Context) []ctrld.VPNDNSConfig { return nil }
|
||||||
m.configs = []ctrld.VPNDNSConfig{{
|
m.configs = []ctrld.VPNDNSConfig{{
|
||||||
InterfaceName: "Ethernet 6",
|
InterfaceName: "Ethernet 6",
|
||||||
Servers: []string{"10.25.37.21"},
|
Servers: []string{"10.25.37.21"},
|
||||||
|
|||||||
Reference in New Issue
Block a user