package logger import ( "context" "testing" "github.com/stretchr/testify/require" ) func BenchmarkLoggerMain(b *testing.B) { ctx := context.Background() prm := Prm{} require.NoError(b, prm.SetLevelString("debug")) require.NoError(b, prm.SetAllowedTags([]string{"main:debug"})) logger, err := NewLogger(prm) require.NoError(b, err) b.ResetTimer() b.ReportAllocs() for range b.N { logger.Debug(ctx, "test debug") logger.Info(ctx, "test info") logger.Warn(ctx, "test warn") logger.Error(ctx, "test error") } } func BenchmarkLoggerLevelLessTagAllowed(b *testing.B) { ctx := context.Background() prm := Prm{} require.NoError(b, prm.SetLevelString("info")) require.NoError(b, prm.SetAllowedTags([]string{"main:debug"})) logger, err := NewLogger(prm) require.NoError(b, err) b.ResetTimer() b.ReportAllocs() for range b.N { logger.Debug(ctx, "test debug") logger.Info(ctx, "test info") logger.Warn(ctx, "test warn") logger.Error(ctx, "test error") } } func BenchmarkLoggerLevelGreaterTagAllowed(b *testing.B) { ctx := context.Background() prm := Prm{} require.NoError(b, prm.SetLevelString("debug")) require.NoError(b, prm.SetAllowedTags([]string{"main:info"})) logger, err := NewLogger(prm) require.NoError(b, err) b.ResetTimer() b.ReportAllocs() for range b.N { logger.Debug(ctx, "test debug") logger.Info(ctx, "test info") logger.Warn(ctx, "test warn") logger.Error(ctx, "test error") } } func BenchmarkLoggerLevelLessTagDisabled(b *testing.B) { ctx := context.Background() prm := Prm{} require.NoError(b, prm.SetLevelString("info")) require.NoError(b, prm.SetAllowedTags([]string{"morph:debug"})) logger, err := NewLogger(prm) require.NoError(b, err) b.ResetTimer() b.ReportAllocs() for range b.N { logger.Debug(ctx, "test debug") logger.Info(ctx, "test info") logger.Warn(ctx, "test warn") logger.Error(ctx, "test error") } } func BenchmarkLoggerLevelGreaterTagDisabled(b *testing.B) { ctx := context.Background() prm := Prm{} require.NoError(b, prm.SetLevelString("debug")) require.NoError(b, prm.SetAllowedTags([]string{"morph:info"})) logger, err := NewLogger(prm) require.NoError(b, err) b.ResetTimer() b.ReportAllocs() for range b.N { logger.Debug(ctx, "test debug") logger.Info(ctx, "test info") logger.Warn(ctx, "test warn") logger.Error(ctx, "test error") } }