mirror of https://github.com/databricks/cli.git
78 lines
1.9 KiB
Go
78 lines
1.9 KiB
Go
package telemetry
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestWithDefaultLogger(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
// No default logger set
|
|
ctx1 := WithDefaultLogger(ctx)
|
|
assert.Equal(t, &defaultLogger{}, ctx1.Value(telemetryLoggerKey))
|
|
|
|
// Default logger already set
|
|
assert.PanicsWithError(t, "default telemetry logger already set in the context: *telemetry.defaultLogger", func() {
|
|
WithDefaultLogger(ctx1)
|
|
})
|
|
|
|
// Mock logger already set
|
|
ctx2 := WithMockLogger(ctx)
|
|
assert.NotPanics(t, func() {
|
|
WithDefaultLogger(ctx2)
|
|
})
|
|
|
|
// Unexpected logger type
|
|
type foobar struct{}
|
|
ctx3 := context.WithValue(ctx, telemetryLoggerKey, &foobar{})
|
|
assert.PanicsWithError(t, "unexpected telemetry logger type: *telemetry.foobar", func() {
|
|
WithDefaultLogger(ctx3)
|
|
})
|
|
}
|
|
|
|
func TestWithMockLogger(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
// No logger set
|
|
ctx1 := WithMockLogger(ctx)
|
|
assert.Equal(t, &mockLogger{}, ctx1.Value(telemetryLoggerKey))
|
|
|
|
// Logger already set
|
|
assert.PanicsWithError(t, "telemetry logger already set in the context: *telemetry.mockLogger", func() {
|
|
WithMockLogger(ctx1)
|
|
})
|
|
|
|
// Default logger already set
|
|
ctx2 := WithDefaultLogger(ctx)
|
|
assert.PanicsWithError(t, "telemetry logger already set in the context: *telemetry.defaultLogger", func() {
|
|
WithMockLogger(ctx2)
|
|
})
|
|
}
|
|
|
|
func TestFromContext(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
// No logger set
|
|
assert.PanicsWithError(t, "telemetry logger not found in the context", func() {
|
|
fromContext(ctx)
|
|
})
|
|
|
|
// Default logger set
|
|
ctx1 := WithDefaultLogger(ctx)
|
|
assert.Equal(t, &defaultLogger{}, fromContext(ctx1))
|
|
|
|
// Mock logger set
|
|
ctx2 := WithMockLogger(ctx)
|
|
assert.Equal(t, &mockLogger{}, fromContext(ctx2))
|
|
|
|
// Unexpected logger type
|
|
type foobar struct{}
|
|
ctx3 := context.WithValue(ctx, telemetryLoggerKey, &foobar{})
|
|
assert.PanicsWithError(t, "unexpected telemetry logger type: *telemetry.foobar", func() {
|
|
fromContext(ctx3)
|
|
})
|
|
}
|