aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Hanley <felix@userspace.com.au>2019-05-03 03:56:55 +0000
committerFelix Hanley <felix@userspace.com.au>2019-05-03 03:56:55 +0000
commit6294a65ae5ed2740765afdb072006550aac02751 (patch)
tree9568d2964adcef08490a75bfa9b7312ff160e076
parent4ccf7b0a7a32df1c60a69aaafd34d330f5b338e4 (diff)
downloadlogger-6294a65ae5ed2740765afdb072006550aac02751.tar.gz
logger-6294a65ae5ed2740765afdb072006550aac02751.tar.bz2
Clean up all the tests
-rw-r--r--logger_test.go145
-rw-r--r--writers/json/json_test.go30
-rw-r--r--writers/kv/key_value_test.go82
3 files changed, 136 insertions, 121 deletions
diff --git a/logger_test.go b/logger_test.go
index f1d54d7..dc9d574 100644
--- a/logger_test.go
+++ b/logger_test.go
@@ -27,129 +27,50 @@ func TestLoggerOptions(t *testing.T) {
}
}
-func TestDefaultOutput(t *testing.T) {
+func TestLevels(t *testing.T) {
tests := []struct {
- msg string
- names []string
- fields []interface{}
- extras []interface{}
- level message.Level
- minLevel message.Level
- expected string
+ min message.Level
+ level message.Level
+ output bool
}{
- {
- msg: "msg",
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] msg",
- },
- {
- msg: "msg", extras: []interface{}{"one", "two"},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] msg one=two",
- },
- {
- msg: "msg", extras: []interface{}{"one", "two three"},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] msg one=\"two three\"",
- },
- {
- // Odd number of extras
- msg: "msg", extras: []interface{}{"two"},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] msg extra00=two",
- },
- {
- msg: "msg",
- level: message.INFO,
- minLevel: message.ERROR,
- expected: "",
- },
- {
- msg: "msg",
- level: message.INFO,
- minLevel: message.INFO,
- expected: "[info] msg",
- },
- {
- msg: "msg",
- level: message.INFO,
- minLevel: message.DEBUG,
- expected: "[info] msg",
- },
- {
- msg: "msg",
- level: message.DEBUG,
- minLevel: message.ERROR,
- expected: "",
- },
- {
- // Odd number of extras
- msg: "msg", extras: []interface{}{1},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] msg extra00=1",
- },
- {
- msg: "msg", extras: []interface{}{"one", 2.23423},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] msg one=2.23423",
- },
- {
- msg: "msg", extras: []interface{}{"one", 2.23423},
- fields: []interface{}{"request", "1234"},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] msg request=1234 one=2.23423",
- },
- {
- // Odd number of extras
- msg: "msg", extras: []interface{}{1},
- names: []string{"one"},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] one: msg extra00=1",
- },
- {
- // Odd number of extras
- msg: "msg", extras: []interface{}{1},
- names: []string{"one", "two"},
- level: message.ERROR,
- minLevel: message.ERROR,
- expected: "[error] one.two: msg extra00=1",
- },
+ // error
+ {message.ERROR, message.ERROR, true},
+ {message.ERROR, message.WARN, false},
+ {message.ERROR, message.INFO, false},
+ {message.ERROR, message.DEBUG, false},
+ // warn
+ {message.WARN, message.ERROR, true},
+ {message.WARN, message.WARN, true},
+ {message.WARN, message.INFO, false},
+ {message.WARN, message.DEBUG, false},
+ // info
+ {message.INFO, message.ERROR, true},
+ {message.INFO, message.WARN, true},
+ {message.INFO, message.INFO, true},
+ {message.INFO, message.DEBUG, false},
+ // debug
+ {message.DEBUG, message.ERROR, true},
+ {message.DEBUG, message.WARN, true},
+ {message.DEBUG, message.INFO, true},
+ {message.DEBUG, message.DEBUG, true},
}
var buf bytes.Buffer
kv, err := kv.New(kv.SetOutput(&buf))
if err != nil {
t.Fatal("failed to create keyvalue: ", err)
}
+ log, err := New(AddWriter(kv))
+ if err != nil {
+ t.Fatal("failed to create logger: ", err)
+ }
- for _, tt := range tests {
- log, err := New(AddWriter(kv))
- if err != nil {
- t.Fatal("failed to create logger: ", err)
- }
- log.SetLevel(tt.minLevel)
- for _, n := range tt.names {
- log = log.GetNamed(n)
- }
- for i := 0; i < len(tt.fields); i = i + 2 {
- log.SetField(tt.fields[i].(string), tt.fields[i+1])
- }
- log.Log(tt.level, tt.msg, tt.extras...)
+ for i, tt := range tests {
+ log.SetLevel(tt.min)
+ log.Log(tt.level, "test")
actual := strings.TrimSpace(buf.String())
buf.Reset()
- // Skip the timestamp etc.
- if idx := strings.IndexByte(actual, '['); idx > 0 {
- actual = actual[idx:]
- }
- if actual != tt.expected {
- t.Errorf("Log(%s, %v) => %s, expected %s", tt.level, tt.msg, actual, tt.expected)
+ if (len(actual) > 0) != tt.output {
+ t.Errorf("invalid output for test %d", i)
}
}
}
diff --git a/writers/json/json_test.go b/writers/json/json_test.go
index 9a001c2..a6b762e 100644
--- a/writers/json/json_test.go
+++ b/writers/json/json_test.go
@@ -11,7 +11,7 @@ import (
)
func TestWriter(t *testing.T) {
- now := time.Now()
+ now, _ := time.Parse(time.RFC3339, "2019-05-03T13:38:29.987249+10:00")
var tests = []struct {
in message.Message
expected map[string]interface{}
@@ -23,7 +23,10 @@ func TestWriter(t *testing.T) {
Level: message.ERROR,
Content: "msg",
},
- expected: map[string]interface{}{"@level": "error", "@name": "test", "@message": "msg"},
+ expected: map[string]interface{}{
+ "@level": "error", "@name": "test", "@message": "msg",
+ "@time": "2019-05-03T13:38:29.987249+10:00",
+ },
},
{
in: message.Message{
@@ -33,7 +36,10 @@ func TestWriter(t *testing.T) {
Content: "msg",
Extras: []interface{}{"one"},
},
- expected: map[string]interface{}{"@level": "error", "@name": "test", "@message": "msg", "extra00": "one"},
+ expected: map[string]interface{}{
+ "@level": "error", "@name": "test", "@message": "msg", "extra00": "one",
+ "@time": "2019-05-03T13:38:29.987249+10:00",
+ },
},
{
in: message.Message{
@@ -43,7 +49,10 @@ func TestWriter(t *testing.T) {
Content: "msg",
Fields: map[string]interface{}{"one": "1"},
},
- expected: map[string]interface{}{"@level": "error", "@name": "test", "@message": "msg", "one": "1"},
+ expected: map[string]interface{}{
+ "@level": "error", "@name": "test", "@message": "msg", "one": "1",
+ "@time": "2019-05-03T13:38:29.987249+10:00",
+ },
},
{
in: message.Message{
@@ -52,7 +61,10 @@ func TestWriter(t *testing.T) {
Level: message.ERROR,
Content: "msg", Extras: []interface{}{"one", "1", "two", "2", "three", 3, "fo ur", "# 4"},
},
- expected: map[string]interface{}{"@level": "error", "@name": "test", "@message": "msg", "one": "1", "two": "2", "three": float64(3), "fo ur": "# 4"},
+ expected: map[string]interface{}{
+ "@level": "error", "@name": "test", "@message": "msg", "one": "1", "two": "2", "three": float64(3), "fo ur": "# 4",
+ "@time": "2019-05-03T13:38:29.987249+10:00",
+ },
},
{
in: message.Message{
@@ -62,7 +74,10 @@ func TestWriter(t *testing.T) {
Content: "msg",
Extras: []interface{}{"one"}, Fields: map[string]interface{}{"f1": "v1"},
},
- expected: map[string]interface{}{"@level": "debug", "@name": "test", "@message": "msg", "f1": "v1", "extra00": "one"},
+ expected: map[string]interface{}{
+ "@level": "debug", "@name": "test", "@message": "msg", "f1": "v1", "extra00": "one",
+ "@time": "2019-05-03T13:38:29.987249+10:00",
+ },
},
}
@@ -81,9 +96,6 @@ func TestWriter(t *testing.T) {
}
buf.Reset()
- // Ignore time
- delete(raw, "@time")
-
if !reflect.DeepEqual(raw, tt.expected) {
t.Errorf("got %q, expected %q\n", raw, tt.expected)
}
diff --git a/writers/kv/key_value_test.go b/writers/kv/key_value_test.go
index b81f834..a66dbdf 100644
--- a/writers/kv/key_value_test.go
+++ b/writers/kv/key_value_test.go
@@ -1 +1,83 @@
package kv
+
+import (
+ "bytes"
+ "testing"
+ "time"
+
+ "src.userspace.com.au/felix/logger/message"
+)
+
+func TestWriter(t *testing.T) {
+ now, _ := time.Parse(time.RFC3339, "2019-05-03T13:38:29.987249+10:00")
+ var tests = []struct {
+ in message.Message
+ expected string
+ }{
+ {
+ in: message.Message{
+ Time: now,
+ Name: "test",
+ Level: message.ERROR,
+ Content: "msg",
+ },
+ expected: "2019-05-03T13:38:29.987+1000 [error] test: msg",
+ },
+ {
+ in: message.Message{
+ Time: now,
+ Name: "test",
+ Level: message.ERROR,
+ Content: "msg",
+ Extras: []interface{}{"one"},
+ },
+ expected: "2019-05-03T13:38:29.987+1000 [error] test: msg extra00=one",
+ },
+ {
+ in: message.Message{
+ Time: now,
+ Name: "test",
+ Level: message.ERROR,
+ Content: "msg",
+ Fields: map[string]interface{}{"one": "1"},
+ },
+ expected: "2019-05-03T13:38:29.987+1000 [error] test: msg one=1",
+ },
+ {
+ in: message.Message{
+ Time: now,
+ Name: "test",
+ Level: message.ERROR,
+ Content: "msg", Extras: []interface{}{"one", "1", "two", "2", "three", 3, "fo ur", "# 4"},
+ },
+ expected: `2019-05-03T13:38:29.987+1000 [error] test: msg one=1 two=2 three=3 "fo ur"="# 4"`,
+ },
+ {
+ in: message.Message{
+ Time: now,
+ Name: "test",
+ Level: message.DEBUG,
+ Content: "msg",
+ Fields: map[string]interface{}{"f1": "v1"},
+ Extras: []interface{}{"one"},
+ },
+ expected: "2019-05-03T13:38:29.987+1000 [debug] test: msg f1=v1 extra00=one",
+ },
+ }
+
+ var buf bytes.Buffer
+ l, err := New(SetOutput(&buf))
+ if err != nil {
+ panic(err)
+ }
+
+ for _, tt := range tests {
+ l.Write(tt.in)
+ actual := buf.String()
+ buf.Reset()
+
+ if actual != tt.expected {
+ t.Errorf("got %s, expected %s", actual, tt.expected)
+ }
+ }
+}