aboutsummaryrefslogtreecommitdiff
path: root/plugin/erratic/setup_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/erratic/setup_test.go')
-rw-r--r--plugin/erratic/setup_test.go103
1 files changed, 103 insertions, 0 deletions
diff --git a/plugin/erratic/setup_test.go b/plugin/erratic/setup_test.go
new file mode 100644
index 000000000..759845f7a
--- /dev/null
+++ b/plugin/erratic/setup_test.go
@@ -0,0 +1,103 @@
+package erratic
+
+import (
+ "testing"
+
+ "github.com/mholt/caddy"
+)
+
+func TestSetupErratic(t *testing.T) {
+ c := caddy.NewTestController("dns", `erratic {
+ drop
+ }`)
+ if err := setupErratic(c); err != nil {
+ t.Fatalf("Test 1, expected no errors, but got: %q", err)
+ }
+
+ c = caddy.NewTestController("dns", `erratic`)
+ if err := setupErratic(c); err != nil {
+ t.Fatalf("Test 2, expected no errors, but got: %q", err)
+ }
+
+ c = caddy.NewTestController("dns", `erratic {
+ drop -1
+ }`)
+ if err := setupErratic(c); err == nil {
+ t.Fatalf("Test 4, expected errors, but got: %q", err)
+ }
+}
+
+func TestParseErratic(t *testing.T) {
+ tests := []struct {
+ input string
+ shouldErr bool
+ drop uint64
+ delay uint64
+ truncate uint64
+ }{
+ // oks
+ {`erratic`, false, 2, 0, 0},
+ {`erratic {
+ drop 2
+ delay 3 1ms
+
+ }`, false, 2, 3, 0},
+ {`erratic {
+ truncate 2
+ delay 3 1ms
+
+ }`, false, 0, 3, 2},
+ {`erraric {
+ drop 3
+ delay
+ }`, false, 3, 2, 0},
+ // fails
+ {`erratic {
+ drop -1
+ }`, true, 0, 0, 0},
+ {`erratic {
+ delay -1
+ }`, true, 0, 0, 0},
+ {`erratic {
+ delay 1 2 4
+ }`, true, 0, 0, 0},
+ {`erratic {
+ delay 15.a
+ }`, true, 0, 0, 0},
+ {`erraric {
+ drop 3
+ delay 3 bla
+ }`, true, 0, 0, 0},
+ {`erraric {
+ truncate 15.a
+ }`, true, 0, 0, 0},
+ {`erraric {
+ something-else
+ }`, true, 0, 0, 0},
+ }
+ for i, test := range tests {
+ c := caddy.NewTestController("dns", test.input)
+ e, err := parseErratic(c)
+ if test.shouldErr && err == nil {
+ t.Errorf("Test %v: Expected error but found nil", i)
+ continue
+ } else if !test.shouldErr && err != nil {
+ t.Errorf("Test %v: Expected no error but found error: %v", i, err)
+ continue
+ }
+
+ if test.shouldErr {
+ continue
+ }
+
+ if test.delay != e.delay {
+ t.Errorf("Test %v: Expected delay %d but found: %d", i, test.delay, e.delay)
+ }
+ if test.drop != e.drop {
+ t.Errorf("Test %v: Expected drop %d but found: %d", i, test.drop, e.drop)
+ }
+ if test.truncate != e.truncate {
+ t.Errorf("Test %v: Expected truncate %d but found: %d", i, test.truncate, e.truncate)
+ }
+ }
+}