2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
5 // Licensed under the Apache License, Version 2.0 (the "License");
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://www.apache.org/licenses/LICENSE-2.0
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an "AS IS" BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
17 // This source code is part of the near-RT RIC (RAN Intelligent Controller)
18 // platform project (RICP).
25 "github.com/stretchr/testify/assert"
27 "go.uber.org/zap/zapcore"
33 func TestInitDebugLoggerSuccess(t *testing.T) {
34 log, err := InitLogger(DebugLevel)
37 assert.True(t, log.Logger.Core().Enabled(zap.DebugLevel))
40 func TestInitInfoLoggerSuccess(t *testing.T) {
41 log, err := InitLogger(InfoLevel)
44 assert.True(t, log.Logger.Core().Enabled(zap.InfoLevel))
47 func TestInitInfoLoggerFailure(t *testing.T) {
48 log, err := InitLogger(99)
53 func TestSyncSuccess(t *testing.T){
54 logFile, err := os.Create("./loggerTest.txt")
56 t.Errorf("logger_test.TestSyncSuccess - failed to create file, error: %s", err)
60 log, err := InitLogger(DebugLevel)
62 t.Errorf("logger_test.TestSyncSuccess - failed to initialize logger, error: %s", err)
68 logFile, err = os.Open("./loggerTest.txt")
70 t.Errorf("logger_test.TestSyncSuccess - failed to open file, error: %s", err)
73 _, err = io.Copy(&buf, logFile)
75 t.Errorf("logger_test.TestSyncSuccess - failed to copy bytes, error: %s", err)
77 debugRecord,_ :=buf.ReadString('\n')
78 errorRecord,_ :=buf.ReadString('\n')
80 assert.NotEmpty(t, debugRecord)
81 assert.Empty(t, errorRecord)
82 err = os.Remove("./loggerTest.txt")
84 t.Errorf("logger_test.TestSyncSuccess - failed to remove file, error: %s", err)
89 func TestSyncFailure(t *testing.T){
90 log, err := InitLogger(DebugLevel)
95 func TestDebugEnabledFalse(t *testing.T){
96 entryNum, log := countRecords(InfoLevel, t)
97 assert.False(t, log.DebugEnabled())
98 assert.Equal(t,3, entryNum)
101 func TestDebugEnabledTrue(t *testing.T){
102 entryNum, log := countRecords(DebugLevel, t)
103 assert.True(t, log.DebugEnabled())
104 assert.Equal(t,4, entryNum)
107 func TestDPanicfDebugLevel(t *testing.T){
108 assert.True(t,validateRecordExists(DebugLevel, zap.DPanicLevel, t))
111 func TestDPanicfInfoLevel(t *testing.T){
112 assert.True(t,validateRecordExists(InfoLevel, zap.DPanicLevel, t))
115 func TestErrorfDebugLevel(t *testing.T) {
116 assert.True(t,validateRecordExists(DebugLevel, zap.ErrorLevel, t))
119 func TestErrorfInfoLevel(t *testing.T) {
120 assert.True(t,validateRecordExists(InfoLevel, zap.ErrorLevel, t))
123 func TestInfofDebugLevel(t *testing.T) {
124 assert.True(t,validateRecordExists(DebugLevel, zap.InfoLevel, t))
127 func TestInfofInfoLevel(t *testing.T) {
128 assert.True(t,validateRecordExists(InfoLevel, zap.InfoLevel, t))
131 func TestDebugfDebugLevel(t *testing.T) {
132 assert.True(t,validateRecordExists(DebugLevel, zap.DebugLevel, t))
135 func TestDebugfInfoLevel(t *testing.T) {
136 assert.False(t,validateRecordExists(InfoLevel, zap.DebugLevel, t))
139 func TestInfofFatalLevel(t *testing.T) {
140 assert.False(t,validateRecordExists(FatalLevel, zap.InfoLevel, t))
143 func TestDebugfFatalLevel(t *testing.T) {
144 assert.False(t,validateRecordExists(FatalLevel, zap.DebugLevel, t))
147 func TestLogLevelTokenToLevel(t *testing.T) {
148 level, ok := LogLevelTokenToLevel("deBug")
150 assert.True(t, level == DebugLevel)
152 level, ok = LogLevelTokenToLevel("infO")
154 assert.True(t, level == InfoLevel)
156 level, ok = LogLevelTokenToLevel("Warn")
158 assert.True(t, level == WarnLevel)
160 level, ok = LogLevelTokenToLevel("eRror")
162 assert.True(t, level == ErrorLevel)
164 level, ok = LogLevelTokenToLevel("Dpanic ")
166 assert.True(t, level == DPanicLevel)
168 level, ok = LogLevelTokenToLevel(" panic ")
170 assert.True(t, level == PanicLevel)
172 level, ok = LogLevelTokenToLevel("fatal")
174 assert.True(t, level == FatalLevel)
176 level, ok = LogLevelTokenToLevel("zzz")
178 assert.True(t, level > FatalLevel)
181 func countRecords(logLevel LogLevel, t *testing.T) (int, *Logger){
185 log, err := InitLogger(logLevel)
187 t.Errorf("logger_test.TestSyncFailure - failed to initialize logger, error: %s", err)
189 log.Infof("%v, %v, %v", 1, "abc", 0.1)
190 log.Debugf("%v, %v, %v", 1, "abc", 0.1)
191 log.Errorf("%v, %v, %v", 1, "abc", 0.1)
192 log.DPanicf("%v, %v, %v", 1, "abc", 0.1)
195 t.Errorf("logger_test.TestSyncFailure - failed to close writer, error: %s", err)
199 _, err = io.Copy(&buf, r)
201 t.Errorf("logger_test.TestSyncFailure - failed to copy bytes, error: %s", err)
204 s,_:= buf.ReadString('\n')
207 s,_= buf.ReadString('\n')
212 func validateRecordExists(logLevel LogLevel, recordLevel zapcore.Level, t *testing.T) bool {
216 log, err := InitLogger(logLevel)
218 t.Errorf("logger_test.TestSyncFailure - failed to initialize logger, error: %s", err)
222 log.Debugf("%v, %v, %v", 1, "abc", 0.1)
224 log.Infof("%v, %v, %v", 1, "abc", 0.1)
226 log.Errorf("%v, %v, %v", 1, "abc", 0.1)
227 case zap.DPanicLevel:
228 log.DPanicf("%v, %v, %v", 1, "abc", 0.1)
232 t.Errorf("logger_test.TestSyncFailure - failed to close writer, error: %s", err)
236 _, err = io.Copy(&buf, r)
238 t.Errorf("logger_test.TestSyncFailure - failed to copy bytes, error: %s", err)
241 s,_:= buf.ReadString('\n')
244 s,_= buf.ReadString('\n')