Files
velero/pkg/util/logging/log_counter_hook_test.go
Matthieu MOREL 07ea14962c fix require-error rule from testifylint
Signed-off-by: Matthieu MOREL <matthieu.morel35@gmail.com>
2025-06-23 15:39:54 +00:00

137 lines
3.5 KiB
Go

package logging
import (
"errors"
"fmt"
"testing"
"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/vmware-tanzu/velero/pkg/util/results"
)
func TestLogHook_Fire(t *testing.T) {
hook := NewLogHook()
entry := &logrus.Entry{
Level: logrus.ErrorLevel,
Data: logrus.Fields{
"namespace": "test-namespace",
"error": errors.New("test-error"),
"resource": "test-resource",
"name": "test-name",
},
Message: "test-message",
}
err := hook.Fire(entry)
require.NoError(t, err)
// Verify the counts
assert.Equal(t, 1, hook.counts[logrus.ErrorLevel])
// Verify the entries
expectedResult := &results.Result{}
expectedResult.Add("test-namespace", fmt.Errorf(" resource: /test-resource name: /test-name message: /test-message error: /%v", entry.Data["error"]))
assert.Equal(t, expectedResult, hook.entries[logrus.ErrorLevel])
entry1 := &logrus.Entry{
Level: logrus.ErrorLevel,
Data: logrus.Fields{
"error.message": errors.New("test-error"),
"resource": "test-resource",
"name": "test-name",
},
Message: "test-message",
}
err = hook.Fire(entry1)
require.NoError(t, err)
// Verify the counts
assert.Equal(t, 2, hook.counts[logrus.ErrorLevel])
// Verify the entries
expectedResult = &results.Result{}
expectedResult.Add("test-namespace", fmt.Errorf(" resource: /test-resource name: /test-name message: /test-message error: /%v", entry.Data["error"]))
expectedResult.AddVeleroError(fmt.Errorf(" resource: /test-resource name: /test-name message: /test-message error: /%v", entry1.Data["error.message"]))
assert.Equal(t, expectedResult, hook.entries[logrus.ErrorLevel])
}
func TestLogHook_Levels(t *testing.T) {
hook := NewLogHook()
levels := hook.Levels()
expectedLevels := []logrus.Level{
logrus.PanicLevel,
logrus.FatalLevel,
logrus.ErrorLevel,
logrus.WarnLevel,
logrus.InfoLevel,
logrus.DebugLevel,
logrus.TraceLevel,
}
assert.Equal(t, expectedLevels, levels)
}
func TestLogHook_GetCount(t *testing.T) {
hook := NewLogHook()
// Set up test data
hook.counts[logrus.ErrorLevel] = 5
hook.counts[logrus.WarnLevel] = 10
// Test GetCount for ErrorLevel
count := hook.GetCount(logrus.ErrorLevel)
assert.Equal(t, 5, count)
// Test GetCount for WarnLevel
count = hook.GetCount(logrus.WarnLevel)
assert.Equal(t, 10, count)
// Test GetCount for other levels
count = hook.GetCount(logrus.InfoLevel)
assert.Equal(t, 0, count)
count = hook.GetCount(logrus.DebugLevel)
assert.Equal(t, 0, count)
}
func TestLogHook_GetEntries(t *testing.T) {
hook := NewLogHook()
// Set up test data
entry := &logrus.Entry{
Level: logrus.ErrorLevel,
Data: logrus.Fields{
"namespace": "test-namespace",
"error": errors.New("test-error"),
"resource": "test-resource",
"name": "test-name",
},
Message: "test-message",
}
expectedResult := &results.Result{}
expectedResult.Add("test-namespace", fmt.Errorf(" resource: /test-resource name: /test-name message: /test-message error: /%v", entry.Data["error"]))
hook.entries[logrus.ErrorLevel] = expectedResult
// Test GetEntries for ErrorLevel
result := hook.GetEntries(logrus.ErrorLevel)
assert.Equal(t, *expectedResult, result)
// Test GetEntries for WarnLevel
result = hook.GetEntries(logrus.WarnLevel)
assert.Equal(t, results.Result{}, result)
// Test GetEntries for other levels
result = hook.GetEntries(logrus.InfoLevel)
assert.Equal(t, results.Result{}, result)
result = hook.GetEntries(logrus.DebugLevel)
assert.Equal(t, results.Result{}, result)
}