grpc-go/internal/grpctest/tlogger_test.go

132 lines
3.0 KiB
Go

/*
*
* Copyright 2020 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package grpctest
import (
"regexp"
"testing"
"google.golang.org/grpc/grpclog"
)
type s struct {
Tester
}
func Test(t *testing.T) {
RunSubTests(t, s{})
}
func (s) TestInfo(*testing.T) {
grpclog.Info("Info", "message.")
}
func (s) TestInfoln(*testing.T) {
grpclog.Infoln("Info", "message.")
}
func (s) TestInfof(*testing.T) {
grpclog.Infof("%v %v.", "Info", "message")
}
func (s) TestInfoDepth(*testing.T) {
grpclog.InfoDepth(0, "Info", "depth", "message.")
}
func (s) TestWarning(*testing.T) {
grpclog.Warning("Warning", "message.")
}
func (s) TestWarningln(*testing.T) {
grpclog.Warningln("Warning", "message.")
}
func (s) TestWarningf(*testing.T) {
grpclog.Warningf("%v %v.", "Warning", "message")
}
func (s) TestWarningDepth(*testing.T) {
grpclog.WarningDepth(0, "Warning", "depth", "message.")
}
func (s) TestError(*testing.T) {
const numErrors = 10
ExpectError("Expected error")
ExpectError("Expected ln error")
ExpectError("Expected formatted error")
ExpectErrorN("Expected repeated error", numErrors)
grpclog.Error("Expected", "error")
grpclog.Errorln("Expected", "ln", "error")
grpclog.Errorf("%v %v %v", "Expected", "formatted", "error")
for i := 0; i < numErrors; i++ {
grpclog.Error("Expected repeated error")
}
}
func (s) TestInit(t *testing.T) {
// Reset the atomic value
tLoggerAtomic.Store(&tLogger{errors: map[*regexp.Regexp]int{}})
// Test initial state
tl := getLogger()
if tl == nil {
t.Fatal("getLogger() returned nil")
}
if tl.errors == nil {
t.Error("tl.errors is nil")
}
if len(tl.errors) != 0 {
t.Errorf("tl.errors = %v; want empty map", tl.errors)
}
if tl.initialized {
t.Error("tl.initialized = true; want false")
}
if tl.t != nil {
t.Error("tl.t is not nil")
}
if !tl.start.IsZero() {
t.Error("tl.start is not zero")
}
}
func (s) TestGetLogger(t *testing.T) {
// Save original logger
origLogger := getLogger()
defer tLoggerAtomic.Store(origLogger)
// Create new logger
newLogger := &tLogger{errors: map[*regexp.Regexp]int{}}
tLoggerAtomic.Store(newLogger)
// Verify new logger is retrieved
retrievedLogger := getLogger()
if retrievedLogger != newLogger {
t.Error("getLogger() did not return the newly stored logger")
}
// Restore original logger
tLoggerAtomic.Store(origLogger)
// Verify original logger is retrieved
retrievedLogger = getLogger()
if retrievedLogger != origLogger {
t.Error("getLogger() did not return the original logger after restore")
}
}