Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace public InitFromOptions with private ConfigureFromOptions #5417

Merged
merged 3 commits into from
May 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions plugin/storage/badger/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func NewFactoryWithConfig(
logger *zap.Logger,
) (*Factory, error) {
f := NewFactory()
f.InitFromOptions(Options{Primary: cfg})
f.configureFromOptions(&Options{Primary: cfg})
err := f.Initialize(metricsFactory, logger)
if err != nil {
return nil, err
Expand All @@ -115,11 +115,12 @@ func (f *Factory) AddFlags(flagSet *flag.FlagSet) {
// InitFromViper implements plugin.Configurable
func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) {
f.Options.InitFromViper(v, logger)
f.configureFromOptions(f.Options)
}

// InitFromOptions initializes Factory from supplied options
func (f *Factory) InitFromOptions(opts Options) {
f.Options = &opts
func (f *Factory) configureFromOptions(opts *Options) {
f.Options = opts
}

// Initialize implements storage.Factory
Expand Down
12 changes: 8 additions & 4 deletions plugin/storage/badger/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,11 +194,15 @@ func TestBadgerMetrics(t *testing.T) {
require.NoError(t, err)
}

func TestInitFromOptions(t *testing.T) {
func TestConfigureFromOptions(t *testing.T) {
f := NewFactory()
opts := Options{}
f.InitFromOptions(opts)
assert.Equal(t, &opts, f.Options)
opts := &Options{
Primary: NamespaceConfig{
MaintenanceInterval: 42 * time.Second,
},
}
f.configureFromOptions(opts)
assert.Equal(t, opts, f.Options)
}

func TestBadgerStorageFactoryWithConfig(t *testing.T) {
Expand Down
17 changes: 7 additions & 10 deletions plugin/storage/cassandra/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,15 +82,15 @@ func NewFactory() *Factory {

// NewFactoryWithConfig initializes factory with Config.
func NewFactoryWithConfig(
cfg Options,
opts Options,
metricsFactory metrics.Factory,
logger *zap.Logger,
) (*Factory, error) {
f := NewFactory()
// use this to help with testing
b := &withConfigBuilder{
f: f,
cfg: &cfg,
opts: &opts,
metricsFactory: metricsFactory,
logger: logger,
initializer: f.Initialize, // this can be mocked in tests
Expand All @@ -100,15 +100,15 @@ func NewFactoryWithConfig(

type withConfigBuilder struct {
f *Factory
cfg *Options
opts *Options
metricsFactory metrics.Factory
logger *zap.Logger
initializer func(metricsFactory metrics.Factory, logger *zap.Logger) error
}

func (b *withConfigBuilder) build() (*Factory, error) {
b.f.InitFromOptions(b.cfg)
if err := b.cfg.Primary.Validate(); err != nil {
b.f.configureFromOptions(b.opts)
if err := b.opts.Primary.Validate(); err != nil {
return nil, err
}
err := b.initializer(b.metricsFactory, b.logger)
Expand All @@ -126,14 +126,11 @@ func (f *Factory) AddFlags(flagSet *flag.FlagSet) {
// InitFromViper implements plugin.Configurable
func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) {
f.Options.InitFromViper(v)
f.primaryConfig = f.Options.GetPrimary()
if cfg := f.Options.Get(archiveStorageConfig); cfg != nil {
f.archiveConfig = cfg // this is so stupid - see https://golang.org/doc/faq#nil_error
}
f.configureFromOptions(f.Options)
}

// InitFromOptions initializes factory from options.
func (f *Factory) InitFromOptions(o *Options) {
func (f *Factory) configureFromOptions(o *Options) {
f.Options = o
// TODO this is a hack because we do not define defaults in Options
if o.others == nil {
Expand Down
12 changes: 6 additions & 6 deletions plugin/storage/cassandra/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -191,19 +191,19 @@ func TestWriterOptions(t *testing.T) {
assert.Empty(t, options)
}

func TestInitFromOptions(t *testing.T) {
func TestConfigureFromOptions(t *testing.T) {
f := NewFactory()
o := NewOptions("foo", archiveStorageConfig)
o.others[archiveStorageConfig].Enabled = true
f.InitFromOptions(o)
f.configureFromOptions(o)
assert.Equal(t, o, f.Options)
assert.Equal(t, o.GetPrimary(), f.primaryConfig)
assert.Equal(t, o.Get(archiveStorageConfig), f.archiveConfig)
}

func TestNewFactoryWithConfig(t *testing.T) {
t.Run("valid configuration", func(t *testing.T) {
cfg := Options{
opts := &Options{
Primary: namespaceConfig{
Configuration: cassandraCfg.Configuration{
Servers: []string{"localhost:9200"},
Expand All @@ -213,7 +213,7 @@ func TestNewFactoryWithConfig(t *testing.T) {
f := NewFactory()
b := &withConfigBuilder{
f: f,
cfg: &cfg,
opts: opts,
metricsFactory: metrics.NullFactory,
logger: zap.NewNop(),
initializer: func(metricsFactory metrics.Factory, logger *zap.Logger) error { return nil },
Expand All @@ -223,7 +223,7 @@ func TestNewFactoryWithConfig(t *testing.T) {
})
t.Run("connection error", func(t *testing.T) {
expErr := errors.New("made-up error")
cfg := Options{
opts := &Options{
Primary: namespaceConfig{
Configuration: cassandraCfg.Configuration{
Servers: []string{"localhost:9200"},
Expand All @@ -233,7 +233,7 @@ func TestNewFactoryWithConfig(t *testing.T) {
f := NewFactory()
b := &withConfigBuilder{
f: f,
cfg: &cfg,
opts: opts,
metricsFactory: metrics.NullFactory,
logger: zap.NewNop(),
initializer: func(metricsFactory metrics.Factory, logger *zap.Logger) error { return expErr },
Expand Down
11 changes: 5 additions & 6 deletions plugin/storage/es/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func NewFactoryWithConfig(
}

f := NewFactory()
f.InitFromOptions(Options{
f.configureFromOptions(&Options{
Primary: namespaceConfig{
Configuration: cfg,
namespace: primaryNamespace,
Expand All @@ -128,13 +128,12 @@ func (f *Factory) AddFlags(flagSet *flag.FlagSet) {
// InitFromViper implements plugin.Configurable
func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) {
f.Options.InitFromViper(v)
f.primaryConfig = f.Options.GetPrimary()
f.archiveConfig = f.Options.Get(archiveNamespace)
f.configureFromOptions(f.Options)
}

// InitFromOptions configures factory from Options struct.
func (f *Factory) InitFromOptions(o Options) {
f.Options = &o
// configureFromOptions configures factory from Options struct.
func (f *Factory) configureFromOptions(o *Options) {
f.Options = o
f.primaryConfig = f.Options.GetPrimary()
f.archiveConfig = f.Options.Get(archiveNamespace)
}
Expand Down
6 changes: 3 additions & 3 deletions plugin/storage/es/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -261,13 +261,13 @@ func TestArchiveEnabled(t *testing.T) {
assert.NotNil(t, r)
}

func TestInitFromOptions(t *testing.T) {
func TestConfigureFromOptions(t *testing.T) {
f := NewFactory()
o := Options{
o := &Options{
Primary: namespaceConfig{Configuration: escfg.Configuration{Servers: []string{"server"}}},
others: map[string]*namespaceConfig{"es-archive": {Configuration: escfg.Configuration{Servers: []string{"server2"}}}},
}
f.InitFromOptions(o)
f.configureFromOptions(o)
assert.Equal(t, o.GetPrimary(), f.primaryConfig)
assert.Equal(t, o.Get(archiveNamespace), f.archiveConfig)
}
Expand Down
6 changes: 3 additions & 3 deletions plugin/storage/grpc/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ func NewFactoryWithConfig(
logger *zap.Logger,
) (*Factory, error) {
f := NewFactory()
f.InitFromOptions(Options{Configuration: cfg})
f.configureFromOptions(Options{Configuration: cfg})
err := f.Initialize(metricsFactory, logger)
if err != nil {
return nil, err
Expand All @@ -91,8 +91,8 @@ func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) {
f.builder = &f.options.Configuration
}

// InitFromOptions initializes factory from options
func (f *Factory) InitFromOptions(opts Options) {
// configureFromOptions initializes factory from options
func (f *Factory) configureFromOptions(opts Options) {
f.options = opts
f.builder = &f.options.Configuration
}
Expand Down
4 changes: 2 additions & 2 deletions plugin/storage/grpc/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,14 +315,14 @@ func TestWithConfiguration(t *testing.T) {
require.NoError(t, f.Close())
}

func TestInitFromOptions(t *testing.T) {
func TestConfigureFromOptions(t *testing.T) {
f := Factory{}
o := Options{
Configuration: grpcConfig.Configuration{
PluginLogLevel: "info",
},
}
f.InitFromOptions(o)
f.configureFromOptions(o)
assert.Equal(t, o, f.options)
assert.Equal(t, &o.Configuration, f.builder)
}
Expand Down
6 changes: 3 additions & 3 deletions plugin/storage/kafka/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,11 @@ func (f *Factory) AddFlags(flagSet *flag.FlagSet) {
// InitFromViper implements plugin.Configurable
func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) {
f.options.InitFromViper(v)
f.Builder = &f.options.Config
f.configureFromOptions(f.options)
}

// InitFromOptions initializes factory from options.
func (f *Factory) InitFromOptions(o Options) {
// configureFromOptions initializes factory from options.
func (f *Factory) configureFromOptions(o Options) {
f.options = o
f.Builder = &f.options.Config
}
Expand Down
4 changes: 2 additions & 2 deletions plugin/storage/kafka/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -158,10 +158,10 @@ func TestKafkaFactoryDoesNotLogPassword(t *testing.T) {
}
}

func TestInitFromOptions(t *testing.T) {
func TestConfigureFromOptions(t *testing.T) {
f := NewFactory()
o := Options{Topic: "testTopic", Config: kafkaConfig.Configuration{Brokers: []string{"host"}}}
f.InitFromOptions(o)
f.configureFromOptions(o)
assert.Equal(t, o, f.options)
assert.Equal(t, &o.Config, f.Builder)
}
6 changes: 3 additions & 3 deletions plugin/storage/memory/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ func NewFactoryWithConfig(
logger *zap.Logger,
) *Factory {
f := NewFactory()
f.InitFromOptions(Options{Configuration: cfg})
f.configureFromOptions(Options{Configuration: cfg})
_ = f.Initialize(metricsFactory, logger)
return f
}
Expand All @@ -73,8 +73,8 @@ func (f *Factory) InitFromViper(v *viper.Viper, logger *zap.Logger) {
f.options.InitFromViper(v)
}

// InitFromOptions initializes factory from the supplied options
func (f *Factory) InitFromOptions(opts Options) {
// configureFromOptions initializes factory from the supplied options
func (f *Factory) configureFromOptions(opts Options) {
f.options = opts
}

Expand Down
12 changes: 7 additions & 5 deletions plugin/storage/memory/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
"github.com/jaegertracing/jaeger/internal/metrics/fork"
"github.com/jaegertracing/jaeger/internal/metricstest"
"github.com/jaegertracing/jaeger/pkg/config"
memCfg "github.com/jaegertracing/jaeger/pkg/memory/config"
"github.com/jaegertracing/jaeger/pkg/metrics"
"github.com/jaegertracing/jaeger/storage"
)
Expand Down Expand Up @@ -61,11 +62,12 @@ func TestWithConfiguration(t *testing.T) {
assert.Equal(t, 100, f.options.Configuration.MaxTraces)
}

func TestInitFromOptions(t *testing.T) {
o := Options{}
f := Factory{}
f.InitFromOptions(o)
assert.Equal(t, o, f.options)
func TestNewFactoryWithConfig(t *testing.T) {
cfg := memCfg.Configuration{
MaxTraces: 42,
}
f := NewFactoryWithConfig(cfg, metrics.NullFactory, zap.NewNop())
assert.Equal(t, cfg, f.options.Configuration)
}

func TestPublishOpts(t *testing.T) {
Expand Down
Loading