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

[es cit] Use storage factory instead of manual creation #5313

Merged
merged 28 commits into from
Apr 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
5497453
Intialized ES factory
Wise-Wizard Mar 30, 2024
9f6fcf6
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Mar 30, 2024
86cb9a6
Initialized with Viper
Wise-Wizard Mar 30, 2024
5b3d546
Debugging
Wise-Wizard Mar 30, 2024
56e025e
Debugging
Wise-Wizard Mar 30, 2024
ae967db
Debugging-3
Wise-Wizard Mar 30, 2024
0d44d41
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Mar 31, 2024
1dc9cec
Initialized with ES Config
Wise-Wizard Apr 1, 2024
ceeafbc
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Apr 1, 2024
21c464f
Initialized Configuration
Wise-Wizard Apr 1, 2024
c2aba8a
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Apr 2, 2024
7e42382
Removed New Factory
Wise-Wizard Apr 2, 2024
71322ea
Fix Lint Errors
Wise-Wizard Apr 2, 2024
771cabe
Removed Unneccessary Initializations
Wise-Wizard Apr 2, 2024
ff5ce35
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Apr 2, 2024
941647c
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Apr 3, 2024
66e73de
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Apr 4, 2024
823a144
Created a Dummy Fix to ES Factory
Wise-Wizard Apr 4, 2024
2c999fc
Fix Submodule
Wise-Wizard Apr 4, 2024
32262d4
Fix Lint
Wise-Wizard Apr 4, 2024
f691324
Fix failing CI
Wise-Wizard Apr 5, 2024
17f65c3
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Apr 5, 2024
e906787
Added All Tags as Field Bool
Wise-Wizard Apr 5, 2024
a3f2e68
Added All Tags as Field Bool
Wise-Wizard Apr 5, 2024
45b1e59
Merge branch 'main' into Test/ES_Factory
Wise-Wizard Apr 5, 2024
9ff6012
Removed Comments
Wise-Wizard Apr 5, 2024
406985b
Merge branch 'Test/ES_Factory' of https://github.com/Wise-Wizard/jaeg…
Wise-Wizard Apr 5, 2024
2863e8d
simplify
yurishkuro Apr 6, 2024
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
137 changes: 41 additions & 96 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 @@ -28,19 +29,18 @@ import (
"github.com/olivere/elastic"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
sdktrace "go.opentelemetry.io/otel/sdk/trace"
"go.opentelemetry.io/otel/sdk/trace/tracetest"
"go.opentelemetry.io/otel/trace"
"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/dependencystore"
"github.com/jaegertracing/jaeger/plugin/storage/es"
"github.com/jaegertracing/jaeger/plugin/storage/es/mappings"
"github.com/jaegertracing/jaeger/plugin/storage/es/samplingstore"
"github.com/jaegertracing/jaeger/plugin/storage/es/spanstore"
"github.com/jaegertracing/jaeger/storage/dependencystore"
)

const (
Expand All @@ -56,6 +56,8 @@ const (
spanTemplateName = "jaeger-span"
serviceTemplateName = "jaeger-service"
dependenciesTemplateName = "jaeger-dependencies"
primaryNamespace = "es"
archiveNamespace = "es-archive"
)

type ESStorageIntegration struct {
Expand All @@ -67,20 +69,6 @@ type ESStorageIntegration struct {
logger *zap.Logger
}

func (s *ESStorageIntegration) tracerProvider() (trace.TracerProvider, *tracetest.InMemoryExporter, func()) {
exporter := tracetest.NewInMemoryExporter()
tp := sdktrace.NewTracerProvider(
sdktrace.WithSampler(sdktrace.AlwaysSample()),
sdktrace.WithSyncer(exporter),
)
closer := func() {
if err := tp.Shutdown(context.Background()); err != nil {
s.logger.Error("failed to close tracer", zap.Error(err))
}
}
return tp, exporter, closer
}

func (s *ESStorageIntegration) getVersion() (uint, error) {
pingResult, _, err := s.client.Ping(queryURL).Do(context.Background())
if err != nil {
Expand All @@ -99,7 +87,7 @@ func (s *ESStorageIntegration) getVersion() (uint, error) {
return uint(esVersion), nil
}

func (s *ESStorageIntegration) initializeES(t *testing.T, allTagsAsFields bool) error {
func (s *ESStorageIntegration) initializeES(t *testing.T, allTagsAsFields bool) {
rawClient, err := elastic.NewClient(
elastic.SetURL(queryURL),
elastic.SetSniff(false))
Wise-Wizard marked this conversation as resolved.
Show resolved Hide resolved
Expand All @@ -124,7 +112,6 @@ func (s *ESStorageIntegration) initializeES(t *testing.T, allTagsAsFields bool)
// TODO: remove this flag after ES support returning spanKind when get operations
s.GetOperationsMissingSpanKind = true
s.SkipArchiveTest = false
return nil
}

func (s *ESStorageIntegration) esCleanUp(t *testing.T, allTagsAsFields bool) {
Expand Down Expand Up @@ -168,86 +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),
}
spanMapping, serviceMapping, err := mappingBuilder.GetSpanServiceMappings()
require.NoError(t, err)
clientFn := func() estemplate.Client { return client }
require.NoError(t, command.ParseFlags(args))
f.InitFromViper(v, s.logger)
require.NoError(t, f.Initialize(metrics.NullFactory, s.logger))

// Initializing Span Reader and Writer
w := spanstore.NewSpanWriter(
spanstore.SpanWriterParams{
Client: clientFn,
Logger: s.logger,
MetricsFactory: metrics.NullFactory,
IndexPrefix: indexPrefix,
AllTagsAsFields: allTagsAsFields,
TagDotReplacement: tagKeyDeDotChar,
Archive: false,
})
err = w.CreateTemplates(spanMapping, serviceMapping, indexPrefix)
require.NoError(t, err)
tracer, _, closer := s.tracerProvider()
defer closer()
s.SpanWriter = w
s.SpanReader = spanstore.NewSpanReader(spanstore.SpanReaderParams{
Client: clientFn,
Logger: s.logger,
MetricsFactory: metrics.NullFactory,
IndexPrefix: indexPrefix,
MaxSpanAge: maxSpanAge,
TagDotReplacement: tagKeyDeDotChar,
MaxDocCount: defaultMaxDocCount,
Tracer: tracer.Tracer("test"),
Archive: false,
})

// Initializing Archive Span Reader and Writer
s.ArchiveSpanWriter = spanstore.NewSpanWriter(
spanstore.SpanWriterParams{
Client: clientFn,
Logger: s.logger,
MetricsFactory: metrics.NullFactory,
IndexPrefix: indexPrefix,
AllTagsAsFields: allTagsAsFields,
TagDotReplacement: tagKeyDeDotChar,
Archive: true,
})
s.ArchiveSpanReader = spanstore.NewSpanReader(spanstore.SpanReaderParams{
Client: clientFn,
Logger: s.logger,
MetricsFactory: metrics.NullFactory,
IndexPrefix: indexPrefix,
MaxSpanAge: maxSpanAge,
TagDotReplacement: tagKeyDeDotChar,
MaxDocCount: defaultMaxDocCount,
Tracer: tracer.Tracer("test"),
Archive: true,
})

dependencyStore := dependencystore.NewDependencyStore(dependencystore.DependencyStoreParams{
Client: clientFn,
Logger: s.logger,
IndexPrefix: indexPrefix,
IndexDateLayout: indexDateLayout,
MaxDocCount: defaultMaxDocCount,
})
// 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
}

depMapping, err := mappingBuilder.GetDependenciesMappings()
func (s *ESStorageIntegration) initSpanstore(t *testing.T, allTagsAsFields bool) {
f := s.initializeESFactory(t, allTagsAsFields)
var err error
s.SpanWriter, err = f.CreateSpanWriter()
require.NoError(t, err)
err = dependencyStore.CreateTemplates(depMapping)
s.SpanReader, err = f.CreateSpanReader()
require.NoError(t, err)
s.DependencyReader = dependencyStore
s.DependencyWriter = dependencyStore
return nil
s.ArchiveSpanReader, err = f.CreateArchiveSpanReader()
require.NoError(t, err)
s.ArchiveSpanWriter, err = f.CreateArchiveSpanWriter()
require.NoError(t, err)

s.DependencyReader, err = f.CreateDependencyReader()
require.NoError(t, err)
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 @@

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
Loading