123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 |
- // Copyright 2020-2021 InfluxData, Inc. All rights reserved.
- // Use of this source code is governed by MIT
- // license that can be found in the LICENSE file.
- package log_test
- import (
- "fmt"
- "log"
- "strings"
- "testing"
- logi "github.com/influxdata/influxdb-client-go/v2/internal/log"
- dlog "github.com/influxdata/influxdb-client-go/v2/log"
- "github.com/stretchr/testify/assert"
- )
- func logMessages() {
- dlog.Log.Debug("Debug")
- dlog.Log.Debugf("Debugf %s %d", "message", 1)
- dlog.Log.Info("Info")
- dlog.Log.Infof("Infof %s %d", "message", 2)
- dlog.Log.Warn("Warn")
- dlog.Log.Warnf("Warnf %s %d", "message", 3)
- dlog.Log.Error("Error")
- dlog.Log.Errorf("Errorf %s %d", "message", 4)
- }
- func verifyLogs(t *testing.T, sb *strings.Builder, logLevel uint, prefix string) {
- if logLevel >= dlog.DebugLevel {
- assert.True(t, strings.Contains(sb.String(), prefix+" D! Debug"))
- assert.True(t, strings.Contains(sb.String(), prefix+" D! Debugf message 1"))
- } else {
- assert.False(t, strings.Contains(sb.String(), prefix+" D! Debug"))
- assert.False(t, strings.Contains(sb.String(), prefix+" D! Debugf message 1"))
- }
- if logLevel >= dlog.InfoLevel {
- assert.True(t, strings.Contains(sb.String(), prefix+" I! Info"))
- assert.True(t, strings.Contains(sb.String(), prefix+" I! Infof message 2"))
- } else {
- assert.False(t, strings.Contains(sb.String(), prefix+" I! Info"))
- assert.False(t, strings.Contains(sb.String(), prefix+" I! Infof message 2"))
- }
- if logLevel >= dlog.WarningLevel {
- assert.True(t, strings.Contains(sb.String(), prefix+" W! Warn"))
- assert.True(t, strings.Contains(sb.String(), prefix+" W! Warnf message 3"))
- } else {
- assert.False(t, strings.Contains(sb.String(), prefix+" W! Warn"))
- assert.False(t, strings.Contains(sb.String(), prefix+" W! Warnf message 3"))
- }
- if logLevel >= dlog.ErrorLevel {
- assert.True(t, strings.Contains(sb.String(), prefix+" E! Error"))
- assert.True(t, strings.Contains(sb.String(), prefix+" E! Errorf message 4"))
- }
- }
- func TestLogging(t *testing.T) {
- var sb strings.Builder
- log.SetOutput(&sb)
- log.SetFlags(0)
- //test default settings
- logMessages()
- verifyLogs(t, &sb, dlog.ErrorLevel, "influxdb2client")
- sb.Reset()
- dlog.Log.SetLogLevel(dlog.WarningLevel)
- logMessages()
- verifyLogs(t, &sb, dlog.WarningLevel, "influxdb2client")
- sb.Reset()
- dlog.Log.SetLogLevel(dlog.InfoLevel)
- logMessages()
- verifyLogs(t, &sb, dlog.InfoLevel, "influxdb2client")
- sb.Reset()
- dlog.Log.SetLogLevel(dlog.DebugLevel)
- logMessages()
- verifyLogs(t, &sb, dlog.DebugLevel, "influxdb2client")
- sb.Reset()
- dlog.Log.SetPrefix("client")
- logMessages()
- verifyLogs(t, &sb, dlog.DebugLevel, "client")
- }
- func TestCustomLogger(t *testing.T) {
- var sb strings.Builder
- log.SetOutput(&sb)
- log.SetFlags(0)
- dlog.Log = &testLogger{}
- //test default settings
- logMessages()
- verifyLogs(t, &sb, dlog.DebugLevel, "testlogger")
- }
- type testLogger struct {
- }
- func (l *testLogger) LogLevel() uint {
- return 0
- }
- func (l *testLogger) SetLogLevel(_ uint) {
- }
- func (l *testLogger) SetPrefix(_ string) {
- }
- func (l *testLogger) Debugf(format string, v ...interface{}) {
- log.Print("testlogger", " D! ", fmt.Sprintf(format, v...))
- }
- func (l *testLogger) Debug(msg string) {
- log.Print("testlogger", " D! ", msg)
- }
- func (l *testLogger) Infof(format string, v ...interface{}) {
- log.Print("testlogger", " I! ", fmt.Sprintf(format, v...))
- }
- func (l *testLogger) Info(msg string) {
- log.Print("testlogger", " I! ", msg)
- }
- func (l *testLogger) Warnf(format string, v ...interface{}) {
- log.Print("testlogger", " W! ", fmt.Sprintf(format, v...))
- }
- func (l *testLogger) Warn(msg string) {
- log.Print("testlogger", " W! ", msg)
- }
- func (l *testLogger) Errorf(format string, v ...interface{}) {
- log.Print("testlogger", " E! ", fmt.Sprintf(format, v...))
- }
- func (l *testLogger) Error(msg string) {
- log.Print("testlogger", " [E]! ", msg)
- }
- type nullWriter struct{}
- func (m *nullWriter) Write(p []byte) (n int, err error) {
- return len(p), nil
- }
- func BenchmarkLogger(b *testing.B) {
- // run the Fib function b.N times
- log.SetOutput(&nullWriter{})
- dlog.Log.SetLogLevel(dlog.DebugLevel)
- for n := 0; n < b.N; n++ {
- for i := 0; i < 5; i++ {
- go logi.Debug("Log nothing")
- }
- }
- }
|