OSDN Git Service

new repo
[bytom/vapor.git] / vendor / github.com / spf13 / jwalterweatherman / default_notepad_test.go
1 // Copyright © 2016 Steve Francia <spf@spf13.com>.
2 //
3 // Use of this source code is governed by an MIT-style
4 // license that can be found in the LICENSE file.
5
6 package jwalterweatherman
7
8 import (
9         "bytes"
10         "io/ioutil"
11         "sync"
12         "testing"
13
14         "github.com/stretchr/testify/require"
15 )
16
17 func TestThresholds(t *testing.T) {
18         SetStdoutThreshold(LevelError)
19         require.Equal(t, StdoutThreshold(), LevelError)
20         SetLogThreshold(LevelCritical)
21         require.Equal(t, LogThreshold(), LevelCritical)
22         require.NotEqual(t, StdoutThreshold(), LevelCritical)
23         SetStdoutThreshold(LevelWarn)
24         require.Equal(t, StdoutThreshold(), LevelWarn)
25 }
26
27 func TestDefaultLogging(t *testing.T) {
28         var outputBuf, logBuf bytes.Buffer
29
30         defaultNotepad.logHandle = &logBuf
31         defaultNotepad.outHandle = &outputBuf
32
33         SetLogThreshold(LevelWarn)
34         SetStdoutThreshold(LevelError)
35
36         FATAL.Println("fatal err")
37         CRITICAL.Println("critical err")
38         ERROR.Println("an error")
39         WARN.Println("a warning")
40         INFO.Println("information")
41         DEBUG.Println("debugging info")
42         TRACE.Println("trace")
43
44         require.Contains(t, logBuf.String(), "fatal err")
45         require.Contains(t, logBuf.String(), "critical err")
46         require.Contains(t, logBuf.String(), "an error")
47         require.Contains(t, logBuf.String(), "a warning")
48         require.NotContains(t, logBuf.String(), "information")
49         require.NotContains(t, logBuf.String(), "debugging info")
50         require.NotContains(t, logBuf.String(), "trace")
51
52         require.Contains(t, outputBuf.String(), "fatal err")
53         require.Contains(t, outputBuf.String(), "critical err")
54         require.Contains(t, outputBuf.String(), "an error")
55         require.NotContains(t, outputBuf.String(), "a warning")
56         require.NotContains(t, outputBuf.String(), "information")
57         require.NotContains(t, outputBuf.String(), "debugging info")
58         require.NotContains(t, outputBuf.String(), "trace")
59 }
60
61 func TestLogCounter(t *testing.T) {
62         defaultNotepad.logHandle = ioutil.Discard
63         defaultNotepad.outHandle = ioutil.Discard
64
65         SetLogThreshold(LevelTrace)
66         SetStdoutThreshold(LevelTrace)
67
68         FATAL.Println("fatal err")
69         CRITICAL.Println("critical err")
70         WARN.Println("a warning")
71         WARN.Println("another warning")
72         INFO.Println("information")
73         DEBUG.Println("debugging info")
74         TRACE.Println("trace")
75
76         wg := &sync.WaitGroup{}
77
78         for i := 0; i < 10; i++ {
79                 wg.Add(1)
80                 go func() {
81                         defer wg.Done()
82                         for j := 0; j < 10; j++ {
83                                 ERROR.Println("error", j)
84                                 // check for data races
85                                 require.True(t, LogCountForLevel(LevelError) > uint64(j))
86                                 require.True(t, LogCountForLevelsGreaterThanorEqualTo(LevelError) > uint64(j))
87                         }
88                 }()
89
90         }
91
92         wg.Wait()
93
94         require.Equal(t, uint64(1), LogCountForLevel(LevelFatal))
95         require.Equal(t, uint64(1), LogCountForLevel(LevelCritical))
96         require.Equal(t, uint64(2), LogCountForLevel(LevelWarn))
97         require.Equal(t, uint64(1), LogCountForLevel(LevelInfo))
98         require.Equal(t, uint64(1), LogCountForLevel(LevelDebug))
99         require.Equal(t, uint64(1), LogCountForLevel(LevelTrace))
100         require.Equal(t, uint64(100), LogCountForLevel(LevelError))
101         require.Equal(t, uint64(102), LogCountForLevelsGreaterThanorEqualTo(LevelError))
102 }