Skip to content
This repository has been archived by the owner on May 23, 2024. It is now read-only.

Sample logger #609

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 4 additions & 2 deletions config/config.go
Expand Up @@ -247,7 +247,7 @@ func (c Configuration) NewTracer(options ...Option) (opentracing.Tracer, io.Clos

sampler := opts.sampler
if sampler == nil {
s, err := c.Sampler.NewSampler(c.ServiceName, tracerMetrics)
s, err := c.Sampler.NewSampler(c.ServiceName, tracerMetrics, opts.logger)
if err != nil {
return nil, nil, err
}
Expand Down Expand Up @@ -365,6 +365,7 @@ func (c Configuration) InitGlobalTracer(
func (sc *SamplerConfig) NewSampler(
serviceName string,
metrics *jaeger.Metrics,
logger jaeger.Logger,
) (jaeger.Sampler, error) {
samplerType := strings.ToLower(sc.Type)
if samplerType == jaeger.SamplerTypeConst {
Expand All @@ -385,7 +386,7 @@ func (sc *SamplerConfig) NewSampler(
if samplerType == jaeger.SamplerTypeRemote || sc.Type == "" {
sc2 := *sc
sc2.Type = jaeger.SamplerTypeProbabilistic
initSampler, err := sc2.NewSampler(serviceName, nil)
initSampler, err := sc2.NewSampler(serviceName, nil, logger)
if err != nil {
return nil, err
}
Expand All @@ -396,6 +397,7 @@ func (sc *SamplerConfig) NewSampler(
jaeger.SamplerOptions.MaxOperations(sc.MaxOperations),
jaeger.SamplerOptions.OperationNameLateBinding(sc.OperationNameLateBinding),
jaeger.SamplerOptions.SamplingRefreshInterval(sc.SamplingRefreshInterval),
jaeger.SamplerOptions.Logger(logger),
}
options = append(options, sc.Options...)
return jaeger.NewRemotelyControlledSampler(serviceName, options...), nil
Expand Down
56 changes: 51 additions & 5 deletions config/config_test.go
Expand Up @@ -18,6 +18,7 @@ import (
"fmt"
"io"
"os"
"sync"
"testing"
"time"

Expand All @@ -40,22 +41,67 @@ func TestNewSamplerConst(t *testing.T) {
}{{1, true}, {0, false}}
for _, tst := range constTests {
cfg := &SamplerConfig{Type: jaeger.SamplerTypeConst, Param: tst.param}
s, err := cfg.NewSampler("x", nil)
s, err := cfg.NewSampler("x", nil, log.NullLogger)
require.NoError(t, err)
s1, ok := s.(*jaeger.ConstSampler)
require.True(t, ok, "converted to constSampler")
require.Equal(t, tst.decision, s1.Decision, "decision")
}
}

type testLogger struct {
called bool
mutex sync.RWMutex
}

func (t *testLogger) Error(msg string) {
t.mutex.Lock()
defer t.mutex.Unlock()
t.called = true
}

func (t *testLogger) Infof(msg string, args ...interface{}) {
t.mutex.Lock()
defer t.mutex.Unlock()
t.called = true
}

func (t *testLogger) Debugf(msg string, args ...interface{}) {
t.mutex.Lock()
defer t.mutex.Unlock()
t.called = true
}

func (t *testLogger) isCalled() bool {
t.mutex.RLock()
defer t.mutex.RUnlock()
return t.called
}

func TestNewSamplerRemoteLogger(t *testing.T) {
constTests := []struct {
param float64
decision bool
}{{1, true}, {0, false}}
for _, tst := range constTests {
cfg := &SamplerConfig{Type: jaeger.SamplerTypeRemote, Param: tst.param}
logger := &testLogger{}
s, err := cfg.NewSampler("x", nil, logger)
require.NoError(t, err)
_, ok := s.(*jaeger.RemotelyControlledSampler)
require.True(t, ok, "converted to constSampler")
require.True(t, logger.isCalled(), "logger method is called")
}
}

func TestNewSamplerProbabilistic(t *testing.T) {
constTests := []struct {
param float64
error bool
}{{1.5, true}, {0.5, false}}
for _, tst := range constTests {
cfg := &SamplerConfig{Type: jaeger.SamplerTypeProbabilistic, Param: tst.param}
s, err := cfg.NewSampler("x", nil)
s, err := cfg.NewSampler("x", nil, log.NullLogger)
if tst.error {
require.Error(t, err)
} else {
Expand Down Expand Up @@ -154,7 +200,7 @@ func TestSamplerConfig(t *testing.T) {
setEnv(t, envSamplerMaxOperations, "10")
setEnv(t, envSamplerRefreshInterval, "1m1s") // 61 seconds

//existing SamplerConfig data
// existing SamplerConfig data
sc := SamplerConfig{
Type: "const-sample-config",
Param: 2,
Expand Down Expand Up @@ -190,7 +236,7 @@ func TestSamplerConfigOptions(t *testing.T) {
jaeger.SamplerOptions.InitialSampler(initSampler),
},
}
sampler, err := cfg.NewSampler("service", jaeger.NewNullMetrics())
sampler, err := cfg.NewSampler("service", jaeger.NewNullMetrics(), log.NullLogger)
require.NoError(t, err)
defer sampler.Close()
assert.Same(t, initSampler, sampler.(*jaeger.RemotelyControlledSampler).Sampler())
Expand Down Expand Up @@ -562,7 +608,7 @@ func TestParsingUserPasswordErrorEnv(t *testing.T) {

func TestInvalidSamplerType(t *testing.T) {
cfg := &SamplerConfig{MaxOperations: 10}
s, err := cfg.NewSampler("x", jaeger.NewNullMetrics())
s, err := cfg.NewSampler("x", jaeger.NewNullMetrics(), log.NullLogger)
require.NoError(t, err)
rcs, ok := s.(*jaeger.RemotelyControlledSampler)
require.True(t, ok, "converted to RemotelyControlledSampler")
Expand Down