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}
|
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)
|
t.Fatalf("netconfig.Apply: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -278,7 +278,7 @@ func TestNetconfig(t *testing.T) {
|
|||||||
// already-configured interfaces, addresses, routes, … (and ensure
|
// already-configured interfaces, addresses, routes, … (and ensure
|
||||||
// nftables rules are replaced, not appendend to).
|
// nftables rules are replaced, not appendend to).
|
||||||
netconfig.DefaultCounterObj = &nftables.CounterObj{Packets: 0, Bytes: 0}
|
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)
|
t.Fatalf("netconfig.Apply: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,6 +143,11 @@ func NewServer(addr, domain string) *Server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) initHostsLocked() {
|
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.hostsByName = make(map[lcHostname]string)
|
||||||
s.hostsByIP = make(map[string]string)
|
s.hostsByIP = make(map[string]string)
|
||||||
s.subnames[s.domain] = make(map[lcHostname]IP)
|
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
|
entry.Host = lcHostname(strings.TrimSuffix(dn, "lan")) + s.domain
|
||||||
}
|
}
|
||||||
s.setSubname(entry)
|
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