/
baseFileWriter_test.go
128 lines (109 loc) · 2.88 KB
/
baseFileWriter_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
// Copyright (c) 2015, huangjunwei <huangjunwei@youmi.net>. All rights reserved.
package blog4go
import (
"os/exec"
"testing"
"time"
)
func TestBaseFileWriterBasicOperation(t *testing.T) {
err := NewBaseFileWriter("/tmp/mylog.log", true)
if nil != err {
t.Errorf("Failed when initializing base file writer. err: %s", err.Error())
}
defer func() {
Close()
// clean logs
_, err = exec.Command("/bin/sh", "-c", "/bin/rm /tmp/*.log*").Output()
if nil != err {
t.Errorf("clean files failed. err: %s", err.Error())
}
}()
// duplicate init
err = NewBaseFileWriter("/tmp/mylog.log", true)
if ErrAlreadyInit != err {
t.Errorf("Duplicate initialization check failed. err: %s", err.Error())
}
// test file writer hook
hook := NewMyHook()
blog.SetHook(hook)
blog.SetHookLevel(INFO)
blog.Debug("something")
blog.Debugf("%s", "something")
// sync
if 0 != hook.Cnt() {
t.Error("hook called not valid")
}
if DEBUG == hook.Level() || "something" == hook.Message() {
t.Errorf("hook parameters wrong. level: %s, message: %s", hook.Level().String(), hook.Message())
}
blog.SetHookAsync(true)
blog.Info("yes")
// async
// wait for hook called
time.Sleep(1 * time.Millisecond)
if 1 != hook.Cnt() {
t.Error("hook not called")
}
if INFO != hook.Level() || "yes" != hook.Message() {
t.Errorf("hook parameters wrong. level: %d, message: %s", hook.Level(), hook.Message())
}
// sync
blog.SetHookAsync(false)
blog.Warn("warn")
if 2 != hook.Cnt() {
t.Error("hook not called")
}
if WARNING != hook.Level() || "warn" != hook.Message() {
t.Errorf("hook parameters wrong. level: %d, message: %s", hook.Level(), hook.Message())
}
// test basic operations
blog.SetTags(map[string]string{"tagName": "tagValue"})
blog.Tags()
blog.Debug("Debug", 1)
blog.Debugf("%s", "Debug")
blog.Trace("Trace", 2)
blog.Tracef("%s", "Trace")
blog.Info("Info", 3)
blog.Infof("%s", "Info")
blog.Warn("Warn", 4)
blog.Warnf("%s", "Warn")
blog.Error("Error", 5)
blog.Errorf("%s", "Error")
blog.Critical("Critical", 6)
blog.Criticalf("%s", "Critical")
blog.flush()
blog.SetHookAsync(true)
blog.Colored()
blog.SetColored(true)
blog.TimeRotated()
blog.SetTimeRotated(true)
blog.Level()
blog.SetLevel(CRITICAL)
blog.Retentions()
blog.SetRetentions(0)
blog.SetRetentions(7)
blog.RotateLines()
blog.SetRotateLines(0)
blog.SetRotateLines(100000)
blog.RotateSize()
blog.SetRotateSize(0)
blog.SetRotateSize(1024 * 1024 * 500)
blog.Debug("Debug", 1)
blog.Debugf("%s\\", "Debug")
blog.Trace("Trace", 2)
blog.Tracef("%s", "Trace")
blog.Info("Info", 3)
blog.Infof("%s", "Info")
blog.Warn("Warn", 4)
blog.Warnf("%s", "Warn")
blog.Error("Error", 5)
blog.Errorf("%s", "Error")
blog.Critical("Critical", 6)
blog.Criticalf("%s", "Critical")
// wait for timeRotate run
time.Sleep(1 * time.Second)
blog.Close()
time.Sleep(1 * time.Second)
blog.Debug("Debug", 1)
blog.Debugf("%s", "Debug")
}