aboutsummaryrefslogtreecommitdiff
path: root/middleware/auto/watcher_test.go
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2016-10-17 18:37:56 +0100
committerGravatar GitHub <noreply@github.com> 2016-10-17 18:37:56 +0100
commitd536272201b117e18c909a921358fa19dee89f35 (patch)
tree35bf3d9a118401cb6e51d6bc20e1e7eb3b0b5f95 /middleware/auto/watcher_test.go
parent2eafe3ee94bc4b1e94000bc74f8ee524132ae27c (diff)
downloadcoredns-d536272201b117e18c909a921358fa19dee89f35.tar.gz
coredns-d536272201b117e18c909a921358fa19dee89f35.tar.zst
coredns-d536272201b117e18c909a921358fa19dee89f35.zip
middleware/auto: add (#333)
Add auto-load middleware that automatically picks up zones. Every X seconds it will scan for new zones. Add tests and documentation. Make 'make test' use -race.
Diffstat (limited to 'middleware/auto/watcher_test.go')
-rw-r--r--middleware/auto/watcher_test.go48
1 files changed, 48 insertions, 0 deletions
diff --git a/middleware/auto/watcher_test.go b/middleware/auto/watcher_test.go
new file mode 100644
index 000000000..751c78c0d
--- /dev/null
+++ b/middleware/auto/watcher_test.go
@@ -0,0 +1,48 @@
+package auto
+
+import (
+ "io/ioutil"
+ "log"
+ "os"
+ "path"
+ "regexp"
+ "testing"
+)
+
+func TestWatcher(t *testing.T) {
+ log.SetOutput(ioutil.Discard)
+
+ tempdir, err := createFiles()
+ if err != nil {
+ if tempdir != "" {
+ os.RemoveAll(tempdir)
+ }
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(tempdir)
+
+ ldr := loader{
+ directory: tempdir,
+ re: regexp.MustCompile(`db\.(.*)`),
+ template: `${1}`,
+ }
+
+ z := &Zones{}
+
+ z.Walk(ldr)
+
+ // example.org and example.com should exist
+ if x := len(z.Z["example.org."].All()); x != 4 {
+ t.Fatalf("expected 4 RRs, got %d", x)
+ }
+ if x := len(z.Z["example.com."].All()); x != 4 {
+ t.Fatalf("expected 4 RRs, got %d", x)
+ }
+
+ // Now remove one file, rescan and see if it's gone.
+ if err := os.Remove(path.Join(tempdir, "db.example.com")); err != nil {
+ t.Fatal(err)
+ }
+
+ z.Walk(ldr)
+}