plugin/file: fix setting ReloadInterval (#3017)

* plugin/file: fix setting ReloadInterval

The reload interval was only correctly set if there was an extra
block for the file. Move this down to set up.

Add test case that fails before, but now works.

Signed-off-by: Miek Gieben <miek@miek.nl>

* layout and use Errorf

Signed-off-by: Miek Gieben <miek@miek.nl>
This commit is contained in:
Miek Gieben
2019-07-18 14:56:59 +00:00
committed by GitHub
parent eefe49dd3e
commit 6c9a599761
2 changed files with 39 additions and 3 deletions

View File

@@ -97,7 +97,6 @@ func fileParse(c *caddy.Controller) (Zones, error) {
names = append(names, origins[i])
}
upstr := upstream.New()
t := []string{}
var e error
@@ -128,11 +127,15 @@ func fileParse(c *caddy.Controller) (Zones, error) {
if t != nil {
z[origin].TransferTo = append(z[origin].TransferTo, t...)
}
z[origin].ReloadInterval = reload
z[origin].Upstream = upstr
}
}
}
for origin := range z {
z[origin].ReloadInterval = reload
z[origin].Upstream = upstream.New()
}
if openErr != nil {
if reload == 0 {
// reload hasn't been set make this a fatal error

View File

@@ -2,6 +2,7 @@ package file
import (
"testing"
"time"
"github.com/coredns/coredns/plugin/test"
@@ -90,3 +91,35 @@ func TestFileParse(t *testing.T) {
}
}
}
func TestParseReload(t *testing.T) {
name, rm, err := test.TempFile(".", dbMiekNL)
if err != nil {
t.Fatal(err)
}
defer rm()
tests := []struct {
input string
reload time.Duration
}{
{
`file ` + name + ` example.org.`,
1 * time.Minute,
},
{
`file ` + name + ` example.org. {
reload 5s
}`,
5 * time.Second,
},
}
for i, test := range tests {
c := caddy.NewTestController("dns", test.input)
z, _ := fileParse(c)
if x := z.Z["example.org."].ReloadInterval; x != test.reload {
t.Errorf("Test %d expected reload to be %s, but got %s", i, test.reload, x)
}
}
}