Skip to content

Commit

Permalink
Test case for MappingBuilder returning error
Browse files Browse the repository at this point in the history
Signed-off-by: JaeguKim <rlaworn1993@gmail.com>
  • Loading branch information
JaeguKim committed Apr 12, 2024
1 parent 0356039 commit 5c5c5b5
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 7 deletions.
17 changes: 11 additions & 6 deletions plugin/storage/es/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ type Factory struct {
archiveClient atomic.Pointer[es.Client]

watchers []*fswatcher.FSWatcher

templateBuilder es.TemplateBuilder
}

// NewFactory creates a new Factory.
Expand Down Expand Up @@ -171,6 +173,8 @@ func (f *Factory) Initialize(metricsFactory metrics.Factory, logger *zap.Logger)
}
}

f.templateBuilder = es.TextTemplateBuilder{}

return nil
}

Expand All @@ -195,7 +199,7 @@ func (f *Factory) CreateSpanReader() (spanstore.Reader, error) {

// CreateSpanWriter implements storage.Factory
func (f *Factory) CreateSpanWriter() (spanstore.Writer, error) {
return createSpanWriter(f.getPrimaryClient, f.primaryConfig, false, f.metricsFactory, f.logger)
return createSpanWriter(f.getPrimaryClient, f.primaryConfig, false, f.metricsFactory, f.logger, f.templateBuilder)
}

// CreateDependencyReader implements storage.Factory
Expand All @@ -216,7 +220,7 @@ func (f *Factory) CreateArchiveSpanWriter() (spanstore.Writer, error) {
if !f.archiveConfig.Enabled {
return nil, nil
}
return createSpanWriter(f.getArchiveClient, f.archiveConfig, true, f.metricsFactory, f.logger)
return createSpanWriter(f.getArchiveClient, f.archiveConfig, true, f.metricsFactory, f.logger, f.templateBuilder)
}

func createSpanReader(
Expand Down Expand Up @@ -255,6 +259,7 @@ func createSpanWriter(
archive bool,
mFactory metrics.Factory,
logger *zap.Logger,
templateBuilder es.TemplateBuilder,
) (spanstore.Writer, error) {
var tags []string
var err error
Expand Down Expand Up @@ -282,7 +287,7 @@ func createSpanWriter(

// Creating a template here would conflict with the one created for ILM resulting to no index rollover
if cfg.CreateIndexTemplates && !cfg.UseILM {
mappingBuilder := mappingBuilderFromConfig(cfg)
mappingBuilder := getMappingBuilder(cfg, templateBuilder)
spanMapping, serviceMapping, err := mappingBuilder.GetSpanServiceMappings()
if err != nil {
return nil, err
Expand All @@ -307,7 +312,7 @@ func (f *Factory) CreateSamplingStore(maxBuckets int) (samplingstore.Store, erro
})

if f.primaryConfig.CreateIndexTemplates && !f.primaryConfig.UseILM {
mappingBuilder := mappingBuilderFromConfig(f.primaryConfig)
mappingBuilder := getMappingBuilder(f.primaryConfig, f.templateBuilder)
sampleMapping, err := mappingBuilder.GetSamplingMappings()
if err != nil {
return nil, err
Expand All @@ -320,9 +325,9 @@ func (f *Factory) CreateSamplingStore(maxBuckets int) (samplingstore.Store, erro
return store, nil
}

func mappingBuilderFromConfig(cfg *config.Configuration) mappings.MappingBuilder {
func getMappingBuilder(cfg *config.Configuration, templateBuilder es.TemplateBuilder) mappings.MappingBuilder {
return mappings.MappingBuilder{
TemplateBuilder: es.TextTemplateBuilder{},
TemplateBuilder: templateBuilder,
Shards: cfg.NumShards,
Replicas: cfg.NumReplicas,
EsVersion: cfg.Version,
Expand Down
24 changes: 24 additions & 0 deletions plugin/storage/es/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,30 @@ func TestTagKeysAsFields(t *testing.T) {
}
}

func TestMappingBuilderError(t *testing.T) {
f := NewFactory()
f.primaryConfig = &escfg.Configuration{CreateIndexTemplates: true}
f.archiveConfig = &escfg.Configuration{}
f.newClientFn = (&mockClientBuilder{createTemplateError: errors.New("template-error")}).NewClient
err := f.Initialize(metrics.NullFactory, zap.NewNop())
require.NoError(t, err)
defer f.Close()

tb := mocks.TemplateBuilder{}
ta := mocks.TemplateApplier{}
ta.On("Execute", mock.Anything, mock.Anything).Return(errors.New("template load error"))
tb.On("Parse", mock.Anything).Return(&ta, nil)
f.templateBuilder = &tb

w, err := f.CreateSpanWriter()
assert.Nil(t, w)
require.Error(t, err, "mapping-builder-error")

s, err := f.CreateSamplingStore(1)
assert.Nil(t, s)
require.Error(t, err, "mapping-builder-error")
}

func TestCreateTemplateError(t *testing.T) {
f := NewFactory()
f.primaryConfig = &escfg.Configuration{CreateIndexTemplates: true}
Expand Down
2 changes: 1 addition & 1 deletion storage/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
"github.com/jaegertracing/jaeger/pkg/distributedlock"
"github.com/jaegertracing/jaeger/pkg/metrics"
"github.com/jaegertracing/jaeger/storage/dependencystore"
metricsstore "github.com/jaegertracing/jaeger/storage/metricsstore"
"github.com/jaegertracing/jaeger/storage/metricsstore"
"github.com/jaegertracing/jaeger/storage/samplingstore"
"github.com/jaegertracing/jaeger/storage/spanstore"
)
Expand Down

0 comments on commit 5c5c5b5

Please sign in to comment.