mirror of
https://github.com/coredns/coredns.git
synced 2025-11-01 10:43:17 -04:00
Plugin/BIND - extend the syntax to allow multiple addresses (#1512)
* Extend bind to allow multiple addresses. UTs added. Changes the log for server starting, adding address when available * update readme for bind * fixes after review * minor fix on readme * accept multiple BIND directives in blocserver, consolidate the addresses * fixes after review - format logging server address, variable names
This commit is contained in:
committed by
Miek Gieben
parent
a0834b1dd5
commit
76455c6a0d
@@ -29,3 +29,93 @@ func TestHandlers(t *testing.T) {
|
||||
t.Errorf("Expected [testPlugin] from Handlers, got %v", hs)
|
||||
}
|
||||
}
|
||||
|
||||
func TestGroupingServers(t *testing.T) {
|
||||
for i, test := range []struct {
|
||||
configs []*Config
|
||||
expectedGroups []string
|
||||
failing bool
|
||||
}{
|
||||
// single config -> one group
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{""}},
|
||||
},
|
||||
expectedGroups: []string{"dns://:53"},
|
||||
failing: false},
|
||||
|
||||
// 2 configs on different port -> 2 groups
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{""}},
|
||||
{Transport: "dns", Zone: ".", Port: "54", ListenHosts: []string{""}},
|
||||
},
|
||||
expectedGroups: []string{"dns://:53", "dns://:54"},
|
||||
failing: false},
|
||||
|
||||
// 2 configs on same port, same broadcast address, diff zones -> 1 group
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{""}},
|
||||
{Transport: "dns", Zone: "com.", Port: "53", ListenHosts: []string{""}},
|
||||
},
|
||||
expectedGroups: []string{"dns://:53"},
|
||||
failing: false},
|
||||
|
||||
// 2 configs on same port, same address, diff zones -> 1 group
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{"127.0.0.1"}},
|
||||
{Transport: "dns", Zone: ".", Port: "54", ListenHosts: []string{""}},
|
||||
},
|
||||
expectedGroups: []string{"dns://127.0.0.1:53", "dns://:54"},
|
||||
failing: false},
|
||||
|
||||
// 2 configs on diff ports, 3 different address, diff zones -> 3 group
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{"127.0.0.1", "::1"}},
|
||||
{Transport: "dns", Zone: ".", Port: "54", ListenHosts: []string{""}}},
|
||||
expectedGroups: []string{"dns://127.0.0.1:53", "dns://[::1]:53", "dns://:54"},
|
||||
failing: false},
|
||||
|
||||
// 2 configs on same port, same unicast address, diff zones -> 1 group
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{"127.0.0.1", "::1"}},
|
||||
{Transport: "dns", Zone: "com.", Port: "53", ListenHosts: []string{"127.0.0.1", "::1"}},
|
||||
},
|
||||
expectedGroups: []string{"dns://127.0.0.1:53", "dns://[::1]:53"},
|
||||
failing: false},
|
||||
|
||||
// 2 configs on same port, total 2 diff addresses, diff zones -> 2 groups
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{"127.0.0.1"}},
|
||||
{Transport: "dns", Zone: "com.", Port: "53", ListenHosts: []string{"::1"}},
|
||||
},
|
||||
expectedGroups: []string{"dns://127.0.0.1:53", "dns://[::1]:53"},
|
||||
failing: false},
|
||||
|
||||
// 2 configs on same port, total 3 diff addresses, diff zones -> 3 groups
|
||||
{configs: []*Config{
|
||||
{Transport: "dns", Zone: ".", Port: "53", ListenHosts: []string{"127.0.0.1", "::1"}},
|
||||
{Transport: "dns", Zone: "com.", Port: "53", ListenHosts: []string{""}}},
|
||||
expectedGroups: []string{"dns://127.0.0.1:53", "dns://[::1]:53", "dns://:53"},
|
||||
failing: false},
|
||||
} {
|
||||
groups, err := groupConfigsByListenAddr(test.configs)
|
||||
if err != nil {
|
||||
if !test.failing {
|
||||
t.Fatalf("test %d, expected no errors, but got: %v", i, err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
if test.failing {
|
||||
t.Fatalf("test %d, expected to failed but did not, returned values", i)
|
||||
}
|
||||
if len(groups) != len(test.expectedGroups) {
|
||||
t.Errorf("test %d : expected the group's size to be %d, was %d", i, len(test.expectedGroups), len(groups))
|
||||
continue
|
||||
}
|
||||
for _, v := range test.expectedGroups {
|
||||
if _, ok := groups[v]; !ok {
|
||||
t.Errorf("test %d : expected value %v to be in the group, was not", i, v)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user