Commit 6c9a5997 authored by Miek Gieben's avatar Miek Gieben Committed by GitHub

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: default avatarMiek Gieben <miek@miek.nl>

* layout and use Errorf
Signed-off-by: default avatarMiek Gieben <miek@miek.nl>
parent eefe49dd
......@@ -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
......
......@@ -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)
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment