Add additional test cases and fix some failing tests
This commit is contained in:
parent
e421cff225
commit
2dc11ce1e3
@ -270,7 +270,7 @@ func TestNetconfig(t *testing.T) {
|
||||
}
|
||||
|
||||
netconfig.DefaultCounterObj = &nftables.CounterObj{Packets: 23, Bytes: 42}
|
||||
if err := netconfig.Apply(tmp, filepath.Join(tmp, "root")); err != nil {
|
||||
if err := netconfig.Apply(tmp, filepath.Join(tmp, "root"), true); err != nil {
|
||||
t.Fatalf("netconfig.Apply: %v", err)
|
||||
}
|
||||
|
||||
@ -278,7 +278,7 @@ func TestNetconfig(t *testing.T) {
|
||||
// already-configured interfaces, addresses, routes, … (and ensure
|
||||
// nftables rules are replaced, not appendend to).
|
||||
netconfig.DefaultCounterObj = &nftables.CounterObj{Packets: 0, Bytes: 0}
|
||||
if err := netconfig.Apply(tmp, filepath.Join(tmp, "root")); err != nil {
|
||||
if err := netconfig.Apply(tmp, filepath.Join(tmp, "root"), true); err != nil {
|
||||
t.Fatalf("netconfig.Apply: %v", err)
|
||||
}
|
||||
|
||||
|
@ -143,6 +143,11 @@ func NewServer(addr, domain string) *Server {
|
||||
}
|
||||
|
||||
func (s *Server) initHostsLocked() {
|
||||
for k := range s.subnames {
|
||||
if k != s.domain {
|
||||
s.Mux.HandleRemove(string(k))
|
||||
}
|
||||
}
|
||||
s.hostsByName = make(map[lcHostname]string)
|
||||
s.hostsByIP = make(map[string]string)
|
||||
s.subnames[s.domain] = make(map[lcHostname]IP)
|
||||
@ -341,6 +346,15 @@ func (s *Server) SetDNSEntries(dnsEntries []IP) {
|
||||
entry.Host = lcHostname(strings.TrimSuffix(dn, "lan")) + s.domain
|
||||
}
|
||||
s.setSubname(entry)
|
||||
hdnSlice := strings.SplitN(string(entry.Host), ".", 2)
|
||||
domain := lcHostname("")
|
||||
if len(hdnSlice) == 2 {
|
||||
domain = lcHostname(hdnSlice[1])
|
||||
}
|
||||
if domain == "" || domain == s.domain {
|
||||
continue
|
||||
}
|
||||
s.Mux.HandleFunc(string(domain), s.subnameHandler(domain))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -642,3 +642,93 @@ func TestSubname(t *testing.T) {
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestDNSEntries(t *testing.T) {
|
||||
r := &recorder{}
|
||||
s := NewServer("127.0.0.2:0", "lan")
|
||||
s.SetLeases([]dhcp4d.Lease{
|
||||
{
|
||||
Hostname: "testtarget",
|
||||
Addr: net.IP{192, 168, 42, 23},
|
||||
},
|
||||
{
|
||||
Hostname: "testtarget-ipv6",
|
||||
Addr: net.ParseIP("fe80:3::"),
|
||||
},
|
||||
})
|
||||
s.SetDNSEntries([]IP{
|
||||
IP{
|
||||
Host: "testtarget",
|
||||
IPv4: net.IP{7, 7, 7, 7},
|
||||
IPv6: net.ParseIP("fe80:1::"),
|
||||
},
|
||||
IP{
|
||||
Host: "testtarget.example.org",
|
||||
IPv4: net.IP{8, 8, 8, 8},
|
||||
IPv6: net.ParseIP("fe80:2::"),
|
||||
},
|
||||
{
|
||||
Host: "testtarget-ipv6",
|
||||
IPv4: net.IP{9, 9, 9, 9},
|
||||
IPv6: net.ParseIP("fe80:9::"),
|
||||
},
|
||||
})
|
||||
|
||||
t.Run("testtarget.", func(t *testing.T) {
|
||||
if err := resolveTestTarget(s, "testtarget.", net.IP{192, 168, 42, 23}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("testtarget.lan.", func(t *testing.T) {
|
||||
if err := resolveTestTarget(s, "testtarget.lan.", net.IP{192, 168, 42, 23}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("testtarget-ipv6.lan. (IPv6)", func(t *testing.T) {
|
||||
if err := resolveTestTarget(s, "testtarget-ipv6.lan.", net.ParseIP("fe80:3::")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("testtarget-ipv6.lan. (no override???)", func(t *testing.T) {
|
||||
if err := resolveTestTarget(s, "testtarget-ipv6.lan.", net.IP{9, 9, 9, 9}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("testtarget.lan. (IPv6) (no override???)", func(t *testing.T) {
|
||||
if err := resolveTestTarget(s, "testtarget.lan.", net.ParseIP("fe80:1::")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("testtarget.example.org.", func(t *testing.T) {
|
||||
if err := resolveTestTarget(s, "testtarget.example.org.", net.IP{8, 8, 8, 8}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("testtarget.example.org. (IPv6)", func(t *testing.T) {
|
||||
if err := resolveTestTarget(s, "testtarget.example.org.", net.ParseIP("fe80:2::")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
})
|
||||
s.SetLeases([]dhcp4d.Lease{
|
||||
{
|
||||
Hostname: "testtarget",
|
||||
Addr: net.IP{192, 168, 42, 23},
|
||||
},
|
||||
})
|
||||
|
||||
t.Run("testtarget.example.org. (deleted)", func(t *testing.T) {
|
||||
m := new(dns.Msg)
|
||||
m.SetQuestion("testtarget.example.org.", dns.TypeA)
|
||||
s.Mux.ServeDNS(r, m)
|
||||
if got, want := r.response.Rcode, dns.RcodeNameError; got != want {
|
||||
t.Fatalf("unexpected rcode: got %v, want %v", got, want)
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user