Skip to content

Commit

Permalink
simplify
Browse files Browse the repository at this point in the history
Signed-off-by: Yuri Shkuro <[email protected]>
  • Loading branch information
yurishkuro committed Apr 6, 2024
1 parent 406985b commit 2863e8d
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 83 deletions.
31 changes: 0 additions & 31 deletions plugin/storage/es/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ import (
"go.uber.org/zap"

"github.com/jaegertracing/jaeger/pkg/es"
estemplate "github.com/jaegertracing/jaeger/pkg/es"
"github.com/jaegertracing/jaeger/pkg/es/config"
"github.com/jaegertracing/jaeger/pkg/fswatcher"
"github.com/jaegertracing/jaeger/pkg/metrics"
Expand Down Expand Up @@ -86,36 +85,6 @@ func NewFactory() *Factory {
}
}

func NewFactoryWithConfigTest(
cfg config.Configuration,
metricsFactory metrics.Factory,
logger *zap.Logger, client estemplate.Client,
) (*Factory, error) {
cfg.Validate()

cfg.MaxDocCount = defaultMaxDocCount
cfg.Enabled = true

archive := make(map[string]*namespaceConfig)
archive[archiveNamespace] = &namespaceConfig{
Configuration: cfg,
namespace: archiveNamespace,
}

f := NewFactory()
f.InitFromOptions(Options{
Primary: namespaceConfig{
Configuration: cfg,
namespace: primaryNamespace,
},
others: archive,
})
f.Initialize(metricsFactory, logger)

f.primaryClient.Store(&client)
return f, nil
}

func NewFactoryWithConfig(
cfg config.Configuration,
metricsFactory metrics.Factory,
Expand Down
80 changes: 33 additions & 47 deletions plugin/storage/integration/elasticsearch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package integration
import (
"context"
"errors"
"fmt"
"net/http"
"strconv"
"strings"
Expand All @@ -29,15 +30,17 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"go.uber.org/zap"
"go.uber.org/zap/zaptest"

"github.com/jaegertracing/jaeger/pkg/config"
estemplate "github.com/jaegertracing/jaeger/pkg/es"
eswrapper "github.com/jaegertracing/jaeger/pkg/es/wrapper"
"github.com/jaegertracing/jaeger/pkg/metrics"
"github.com/jaegertracing/jaeger/pkg/testutils"
"github.com/jaegertracing/jaeger/plugin/storage/es"
"github.com/jaegertracing/jaeger/plugin/storage/es/dependencystore"
"github.com/jaegertracing/jaeger/plugin/storage/es/mappings"
"github.com/jaegertracing/jaeger/plugin/storage/es/samplingstore"
"github.com/jaegertracing/jaeger/storage/dependencystore"
)

const (
Expand Down Expand Up @@ -66,7 +69,6 @@ type ESStorageIntegration struct {
logger *zap.Logger
}


func (s *ESStorageIntegration) getVersion() (uint, error) {
pingResult, _, err := s.client.Ping(queryURL).Do(context.Background())
if err != nil {
Expand Down Expand Up @@ -153,60 +155,44 @@ func (s *ESStorageIntegration) getEsClient(t *testing.T) eswrapper.ClientWrapper
return eswrapper.WrapESClient(s.client, bp, esVersion, s.v8Client)
}

func (s *ESStorageIntegration) initSpanstore(t *testing.T, allTagsAsFields bool) error {
client := s.getEsClient(t)
mappingBuilder := mappings.MappingBuilder{
TemplateBuilder: estemplate.TextTemplateBuilder{},
Shards: 5,
Replicas: 1,
EsVersion: client.GetVersion(),
IndexPrefix: indexPrefix,
UseILM: false,
func (s *ESStorageIntegration) initializeESFactory(t *testing.T, allTagsAsFields bool) *es.Factory {
s.logger = zaptest.NewLogger(t)
f := es.NewFactory()
v, command := config.Viperize(f.AddFlags)
args := []string{
fmt.Sprintf("--es.tags-as-fields.all=%v", allTagsAsFields),
fmt.Sprintf("--es.index-prefix=%v", indexPrefix),
"--es-archive.enabled=true",
fmt.Sprintf("--es-archive.tags-as-fields.all=%v", allTagsAsFields),
fmt.Sprintf("--es-archive.index-prefix=%v", indexPrefix),
}
require.NoError(t, command.ParseFlags(args))
f.InitFromViper(v, s.logger)
require.NoError(t, f.Initialize(metrics.NullFactory, s.logger))

clientFn := func() estemplate.Client { return client }
// TODO ideally we need to close the factory once the test is finished
// but because esCleanup calls initialize() we get a panic later
// t.Cleanup(func() {
// require.NoError(t, f.Close())
// })
return f
}

opts := es.NewOptions(primaryNamespace, archiveNamespace)
cfg := opts.Primary.Configuration
cfg.IndexPrefix = indexPrefix
cfg.Tags.AllAsFields = allTagsAsFields
f, err := es.NewFactoryWithConfigTest(cfg, metrics.NullFactory, s.logger, client)
if err != nil {
return err
}
// Create Span Writer and Reader
func (s *ESStorageIntegration) initSpanstore(t *testing.T, allTagsAsFields bool) {
f := s.initializeESFactory(t, allTagsAsFields)
var err error
s.SpanWriter, err = f.CreateSpanWriter()
if err != nil {
return err
}
require.NoError(t, err)
s.SpanReader, err = f.CreateSpanReader()
if err != nil {
return err
}
require.NoError(t, err)
s.ArchiveSpanReader, err = f.CreateArchiveSpanReader()
if err != nil {
return err
}
require.NoError(t, err)
s.ArchiveSpanWriter, err = f.CreateArchiveSpanWriter()
if err != nil {
return err
}

dependencyStore := dependencystore.NewDependencyStore(dependencystore.DependencyStoreParams{
Client: clientFn,
Logger: s.logger,
IndexPrefix: indexPrefix,
IndexDateLayout: indexDateLayout,
MaxDocCount: defaultMaxDocCount,
})

depMapping, err := mappingBuilder.GetDependenciesMappings()
require.NoError(t, err)
err = dependencyStore.CreateTemplates(depMapping)

s.DependencyReader, err = f.CreateDependencyReader()
require.NoError(t, err)
s.DependencyReader = dependencyStore
s.DependencyWriter = dependencyStore
return nil
s.DependencyWriter = s.DependencyReader.(dependencystore.Writer)
}

func (s *ESStorageIntegration) esRefresh(t *testing.T) {
Expand Down
20 changes: 15 additions & 5 deletions plugin/storage/integration/integration.go
Original file line number Diff line number Diff line change
Expand Up @@ -460,12 +460,22 @@ func (s *StorageIntegration) testGetDependencies(t *testing.T) {

require.NoError(t, s.DependencyWriter.WriteDependencies(time.Now(), expected))
s.refresh(t)
actual, err := s.DependencyReader.GetDependencies(context.Background(), time.Now(), 5*time.Minute)
require.NoError(t, err)
sort.Slice(actual, func(i, j int) bool {
return actual[i].Parent < actual[j].Parent

var actual []model.DependencyLink
found := s.waitForCondition(t, func(t *testing.T) bool {
var err error
actual, err = s.DependencyReader.GetDependencies(context.Background(), time.Now(), 5*time.Minute)
require.NoError(t, err)
sort.Slice(actual, func(i, j int) bool {
return actual[i].Parent < actual[j].Parent
})
return assert.ObjectsAreEqualValues(expected, actual)
})
assert.EqualValues(t, expected, actual)

if !assert.True(t, found) {
t.Log("\t Expected:", expected)
t.Log("\t Actual :", actual)

Check warning on line 477 in plugin/storage/integration/integration.go

View check run for this annotation

Codecov / codecov/patch

plugin/storage/integration/integration.go#L476-L477

Added lines #L476 - L477 were not covered by tests
}
}

// === Sampling Store Integration Tests ===
Expand Down

0 comments on commit 2863e8d

Please sign in to comment.