Merge: + dhcpd, clients, dnsfilter: add more tests
#788 * commit '25da23497a19118a22b97d64749fa70337544116': + dnsfilter: more tests + dhcpd, clients: add more tests
This commit is contained in:
commit
1c9abd6107
|
@ -38,12 +38,19 @@ func TestDHCP(t *testing.T) {
|
||||||
|
|
||||||
p = make(dhcp4.Packet, 241)
|
p = make(dhcp4.Packet, 241)
|
||||||
|
|
||||||
// Reserve an IP
|
// Discover and reserve an IP
|
||||||
hw = []byte{3, 2, 3, 4, 5, 6}
|
hw = []byte{3, 2, 3, 4, 5, 6}
|
||||||
p.SetCHAddr(hw)
|
p.SetCHAddr(hw)
|
||||||
lease, _ = s.reserveLease(p)
|
p.SetCIAddr([]byte{0, 0, 0, 0})
|
||||||
check(t, bytes.Equal(lease.HWAddr, hw), "lease.HWAddr")
|
opt = make(dhcp4.Options, 10)
|
||||||
check(t, bytes.Equal(lease.IP, []byte{1, 1, 1, 1}), "lease.IP")
|
p2 = s.handleDiscover(p, opt)
|
||||||
|
opt = p2.ParseOptions()
|
||||||
|
check(t, bytes.Equal(opt[dhcp4.OptionDHCPMessageType], []byte{byte(dhcp4.Offer)}), "dhcp4.Offer")
|
||||||
|
check(t, bytes.Equal(p2.YIAddr(), []byte{1, 1, 1, 1}), "p2.YIAddr")
|
||||||
|
check(t, bytes.Equal(p2.CHAddr(), hw), "p2.CHAddr")
|
||||||
|
check(t, bytes.Equal(opt[dhcp4.OptionIPAddressLeaseTime], dhcp4.OptionsLeaseTime(5*time.Second)), "OptionIPAddressLeaseTime")
|
||||||
|
check(t, bytes.Equal(opt[dhcp4.OptionServerIdentifier], s.ipnet.IP), "OptionServerIdentifier")
|
||||||
|
|
||||||
lease = s.findLease(p)
|
lease = s.findLease(p)
|
||||||
check(t, bytes.Equal(lease.HWAddr, hw), "lease.HWAddr")
|
check(t, bytes.Equal(lease.HWAddr, hw), "lease.HWAddr")
|
||||||
check(t, bytes.Equal(lease.IP, []byte{1, 1, 1, 1}), "lease.IP")
|
check(t, bytes.Equal(lease.IP, []byte{1, 1, 1, 1}), "lease.IP")
|
||||||
|
@ -88,6 +95,8 @@ func TestDHCP(t *testing.T) {
|
||||||
check(t, bytes.Equal(opt[dhcp4.OptionIPAddressLeaseTime], dhcp4.OptionsLeaseTime(5*time.Second)), "OptionIPAddressLeaseTime")
|
check(t, bytes.Equal(opt[dhcp4.OptionIPAddressLeaseTime], dhcp4.OptionsLeaseTime(5*time.Second)), "OptionIPAddressLeaseTime")
|
||||||
check(t, bytes.Equal(opt[dhcp4.OptionServerIdentifier], s.ipnet.IP), "OptionServerIdentifier")
|
check(t, bytes.Equal(opt[dhcp4.OptionServerIdentifier], s.ipnet.IP), "OptionServerIdentifier")
|
||||||
|
|
||||||
|
check(t, bytes.Equal(s.FindIPbyMAC(hw), []byte{1, 1, 1, 1}), "FindIPbyMAC")
|
||||||
|
|
||||||
// Commit the previously reserved lease #2
|
// Commit the previously reserved lease #2
|
||||||
hw = []byte{2, 2, 3, 4, 5, 6}
|
hw = []byte{2, 2, 3, 4, 5, 6}
|
||||||
p.SetCHAddr(hw)
|
p.SetCHAddr(hw)
|
||||||
|
@ -103,10 +112,28 @@ func TestDHCP(t *testing.T) {
|
||||||
lease, _ = s.reserveLease(p)
|
lease, _ = s.reserveLease(p)
|
||||||
check(t, lease == nil, "lease == nil")
|
check(t, lease == nil, "lease == nil")
|
||||||
|
|
||||||
|
s.reset()
|
||||||
|
testStaticLeases(t, &s)
|
||||||
|
|
||||||
s.reset()
|
s.reset()
|
||||||
misc(t, &s)
|
misc(t, &s)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testStaticLeases(t *testing.T, s *Server) {
|
||||||
|
var err error
|
||||||
|
var l Lease
|
||||||
|
l.IP = []byte{1, 1, 1, 1}
|
||||||
|
l.HWAddr = []byte{2, 2, 3, 4, 5, 6}
|
||||||
|
err = s.AddStaticLease(l)
|
||||||
|
check(t, err == nil, "AddStaticLease")
|
||||||
|
|
||||||
|
ll := s.StaticLeases()
|
||||||
|
check(t, len(ll) != 0 && bytes.Equal(ll[0].IP, []byte{1, 1, 1, 1}), "StaticLeases")
|
||||||
|
|
||||||
|
err = s.RemoveStaticLease(l)
|
||||||
|
check(t, err == nil, "RemoveStaticLease")
|
||||||
|
}
|
||||||
|
|
||||||
// Small tests that don't require a static server's state
|
// Small tests that don't require a static server's state
|
||||||
func misc(t *testing.T, s *Server) {
|
func misc(t *testing.T, s *Server) {
|
||||||
var p, p2 dhcp4.Packet
|
var p, p2 dhcp4.Packet
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/bluele/gcache"
|
||||||
"github.com/miekg/dns"
|
"github.com/miekg/dns"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -557,3 +558,17 @@ func BenchmarkSafeSearchParallel(b *testing.B) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestDnsfilterDialCache(t *testing.T) {
|
||||||
|
d := Dnsfilter{}
|
||||||
|
dialCache = gcache.New(1).LRU().Expiration(30 * time.Minute).Build()
|
||||||
|
|
||||||
|
d.shouldBeInDialCache("hostname")
|
||||||
|
if searchInDialCache("hostname") != "" {
|
||||||
|
t.Errorf("searchInDialCache")
|
||||||
|
}
|
||||||
|
addToDialCache("hostname", "1.1.1.1")
|
||||||
|
if searchInDialCache("hostname") != "1.1.1.1" {
|
||||||
|
t.Errorf("searchInDialCache")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -29,6 +29,16 @@ func TestClients(t *testing.T) {
|
||||||
t.Fatalf("clientAdd #2")
|
t.Fatalf("clientAdd #2")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c, b = clientFind("1.1.1.1")
|
||||||
|
if !b || c.Name != "client1" {
|
||||||
|
t.Fatalf("clientFind #1")
|
||||||
|
}
|
||||||
|
|
||||||
|
c, b = clientFind("2.2.2.2")
|
||||||
|
if !b || c.Name != "client2" {
|
||||||
|
t.Fatalf("clientFind #2")
|
||||||
|
}
|
||||||
|
|
||||||
// failed add - name in use
|
// failed add - name in use
|
||||||
c = Client{
|
c = Client{
|
||||||
IP: "1.2.3.5",
|
IP: "1.2.3.5",
|
||||||
|
|
Loading…
Reference in New Issue