blob: 88794b2dc010ac188c3fc8b2b59564893af56762 [file] [log] [blame]
khenaidoo7da372d2018-09-21 16:03:09 -04001/*
2 * Copyright 2018-present Open Networking Foundation
3
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7
8 * http://www.apache.org/licenses/LICENSE-2.0
9
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package log
17
18import (
khenaidoo7da372d2018-09-21 16:03:09 -040019 "github.com/stretchr/testify/assert"
20 "google.golang.org/grpc/grpclog"
21 "testing"
22)
23
24/*
25Prerequite: Start the kafka/zookeeper containers.
26*/
27
khenaidoo6f2fbe32019-01-18 16:16:50 -050028var testLogger Logger
khenaidoo7da372d2018-09-21 16:03:09 -040029
khenaidoo89b0e942018-10-21 21:11:33 -040030func TestInit(t *testing.T) {
khenaidoo7da372d2018-09-21 16:03:09 -040031 var err error
khenaidoo6f2fbe32019-01-18 16:16:50 -050032 testLogger, err = AddPackage(JSON, ErrorLevel, nil)
khenaidoo7da372d2018-09-21 16:03:09 -040033 assert.NotNil(t, testLogger)
34 assert.Nil(t, err)
35}
36
37func verifyLogLevel(t *testing.T, minimumLevel int) {
khenaidoo6f2fbe32019-01-18 16:16:50 -050038 SetAllLogLevel(minimumLevel)
khenaidoo7da372d2018-09-21 16:03:09 -040039 var success bool
40 for i := 0; i < 6; i++ {
41 success = testLogger.V(i)
khenaidoo89b0e942018-10-21 21:11:33 -040042 if i == 1 && minimumLevel == 2 {
khenaidoo7da372d2018-09-21 16:03:09 -040043 // TODO: Update the test when a new version of Zap logger is available. It has a bug with that
44 // specific combination
45 continue
46 }
47 if i < minimumLevel {
48 assert.False(t, success)
49 } else {
50 assert.True(t, success)
51 }
52 }
53}
54
khenaidoo89b0e942018-10-21 21:11:33 -040055func TestLogLevelDebug(t *testing.T) {
khenaidoo7da372d2018-09-21 16:03:09 -040056 for i := 0; i < 6; i++ {
57 verifyLogLevel(t, i)
58 }
59}
60
khenaidoo89b0e942018-10-21 21:11:33 -040061func TestUpdateAllLoggers(t *testing.T) {
khenaidoo6f2fbe32019-01-18 16:16:50 -050062 err := UpdateAllLoggers(Fields{"update": "update"})
khenaidoo7da372d2018-09-21 16:03:09 -040063 assert.Nil(t, err)
64}
65
khenaidoo89b0e942018-10-21 21:11:33 -040066func TestUpdateLoggers(t *testing.T) {
khenaidoo6f2fbe32019-01-18 16:16:50 -050067 testLogger, err := UpdateLogger(Fields{"update": "update"})
khenaidoo7da372d2018-09-21 16:03:09 -040068 assert.Nil(t, err)
69 assert.NotNil(t, testLogger)
70}
71
72func TestUseAsGrpcLoggerV2(t *testing.T) {
73 var grpcLogger grpclog.LoggerV2
khenaidoo6f2fbe32019-01-18 16:16:50 -050074 thisLogger, _ := AddPackage(JSON, ErrorLevel, nil)
khenaidoo7da372d2018-09-21 16:03:09 -040075 grpcLogger = thisLogger
76 assert.NotNil(t, grpcLogger)
khenaidoo89b0e942018-10-21 21:11:33 -040077}
khenaidoo6f2fbe32019-01-18 16:16:50 -050078
79func TestUpdateLogLevel(t *testing.T) {
80 // Let's create a bunch of logger each with a separate package
81 myLoggers := make(map[string]Logger)
82 pkgNames := []string{"/rw_core/core", "/db/model", "/kafka"}
83 for _, name := range pkgNames {
84 myLoggers[name], _ = AddPackage(JSON, ErrorLevel, nil, []string{name}...)
85 }
86 //Test updates to log levels
87 levels := []int{0, 1, 2, 3, 4, 5}
88 for _, expectedLevel := range levels {
89 for _, name := range pkgNames {
90 SetPackageLogLevel(name, expectedLevel)
91 l, err := GetPackageLogLevel(name)
92 assert.Nil(t, err)
93 assert.Equal(t, l, expectedLevel)
94 }
95 }
96 //Test set all package level
97 for _, expectedLevel := range levels {
98 SetAllLogLevel(expectedLevel)
99 for _, name := range pkgNames {
100 l, err := GetPackageLogLevel(name)
101 assert.Nil(t, err)
102 assert.Equal(t, l, expectedLevel)
103 }
104 }
105}