Skip to content

Commit

Permalink
Merge branch 'main' into renovate/go-1.x
Browse files Browse the repository at this point in the history
  • Loading branch information
yurishkuro authored Feb 12, 2025
2 parents c49a3e2 + fbdd15f commit 5a6c2a1
Show file tree
Hide file tree
Showing 4 changed files with 110 additions and 31 deletions.
6 changes: 5 additions & 1 deletion cmd/all-in-one/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,11 @@ by default uses only in-memory database.`,
if err != nil {
logger.Fatal("Failed to create span writer", zap.Error(err))
}
dependencyReader, err := v2Factory.CreateDependencyReader()
depstoreFactory, ok := v2Factory.(depstore.Factory)
if !ok {
logger.Fatal("Failed to create dependency reader", zap.Error(err))
}
dependencyReader, err := depstoreFactory.CreateDependencyReader()
if err != nil {
logger.Fatal("Failed to create dependency reader", zap.Error(err))
}
Expand Down
7 changes: 6 additions & 1 deletion cmd/query/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
querysvcv2 "github.com/jaegertracing/jaeger/cmd/query/app/querysvc/v2/querysvc"
metricsPlugin "github.com/jaegertracing/jaeger/internal/storage/metricstore"
storage "github.com/jaegertracing/jaeger/internal/storage/v1/factory"
"github.com/jaegertracing/jaeger/internal/storage/v2/api/depstore"
"github.com/jaegertracing/jaeger/internal/storage/v2/v1adapter"
"github.com/jaegertracing/jaeger/pkg/bearertoken"
"github.com/jaegertracing/jaeger/pkg/config"
Expand Down Expand Up @@ -98,7 +99,11 @@ func main() {
if err != nil {
logger.Fatal("Failed to create trace reader", zap.Error(err))
}
dependencyReader, err := v2Factory.CreateDependencyReader()
depstoreFactory, ok := v2Factory.(depstore.Factory)
if !ok {
logger.Fatal("Failed to create dependency reader", zap.Error(err))
}
dependencyReader, err := depstoreFactory.CreateDependencyReader()
if err != nil {
logger.Fatal("Failed to create dependency reader", zap.Error(err))
}
Expand Down
33 changes: 27 additions & 6 deletions internal/storage/v2/v1adapter/factory.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,36 @@ type Factory struct {
ss storage_v1.Factory
}

func NewFactory(ss storage_v1.Factory) *Factory {
return &Factory{
func NewFactory(ss storage_v1.Factory) tracestore.Factory {
factory := &Factory{
ss: ss,
}
}

// Initialize implements tracestore.Factory.
func (*Factory) Initialize(_ context.Context) error {
panic("not implemented")
var (
purger, isPurger = ss.(storage_v1.Purger)
sampler, isSampler = ss.(storage_v1.SamplingStoreFactory)
)

switch {
case isSampler && isPurger:
return struct {
*Factory
storage_v1.Purger
storage_v1.SamplingStoreFactory
}{factory, purger, sampler}
case isPurger:
return struct {
*Factory
storage_v1.Purger
}{factory, purger}
case isSampler:
return struct {
*Factory
storage_v1.SamplingStoreFactory
}{factory, sampler}
default:
return factory
}
}

// Close implements tracestore.Factory.
Expand Down
95 changes: 72 additions & 23 deletions internal/storage/v2/v1adapter/factory_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,82 @@
package v1adapter

import (
"context"
"errors"
"testing"

"github.com/stretchr/testify/require"

storage_v1 "github.com/jaegertracing/jaeger/internal/storage/v1"
dependencyStoreMocks "github.com/jaegertracing/jaeger/internal/storage/v1/api/dependencystore/mocks"
spanstoreMocks "github.com/jaegertracing/jaeger/internal/storage/v1/api/spanstore/mocks"
"github.com/jaegertracing/jaeger/internal/storage/v1/grpc"
factoryMocks "github.com/jaegertracing/jaeger/internal/storage/v1/mocks"
"github.com/jaegertracing/jaeger/internal/storage/v2/api/depstore"
"github.com/jaegertracing/jaeger/internal/storage/v2/api/tracestore"
)

func TestAdapterInitialize(t *testing.T) {
defer func() {
if r := recover(); r == nil {
t.Errorf("initialize did not panic")
}
}()

f := &Factory{}
_ = f.Initialize(context.Background())
}

func TestAdapterCloseNotOk(t *testing.T) {
f := NewFactory(&factoryMocks.Factory{})
require.NoError(t, f.Close(context.Background()))
}

func TestAdapterClose(t *testing.T) {
f := NewFactory(grpc.NewFactory())
require.NoError(t, f.Close(context.Background()))
func TestNewTraceReader(t *testing.T) {
mockFactory := new(factoryMocks.Factory)
mockPurger := new(factoryMocks.Purger)
mockSamplingStoreFactory := new(factoryMocks.SamplingStoreFactory)

tests := []struct {
name string
factory storage_v1.Factory
expectedInterfaces []any
}{
{
name: "No extra interfaces",
factory: mockFactory,
expectedInterfaces: []any{(*tracestore.Factory)(nil), (*depstore.Factory)(nil)},
},
{
name: "Implements Purger",
factory: struct {
storage_v1.Factory
storage_v1.Purger
}{mockFactory, mockPurger},
expectedInterfaces: []any{
(*tracestore.Factory)(nil),
(*depstore.Factory)(nil),
(*storage_v1.Purger)(nil),
},
},
{
name: "Implements SamplingStoreFactory",
factory: struct {
storage_v1.Factory
storage_v1.SamplingStoreFactory
}{mockFactory, mockSamplingStoreFactory},
expectedInterfaces: []any{
(*tracestore.Factory)(nil),
(*depstore.Factory)(nil),
(*storage_v1.SamplingStoreFactory)(nil),
},
},
{
name: "Implements both Purger and SamplingStoreFactory",
factory: struct {
storage_v1.Factory
storage_v1.Purger
storage_v1.SamplingStoreFactory
}{mockFactory, mockPurger, mockSamplingStoreFactory},
expectedInterfaces: []any{
(*tracestore.Factory)(nil),
(*depstore.Factory)(nil),
(*storage_v1.Purger)(nil),
(*storage_v1.SamplingStoreFactory)(nil),
},
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
traceReader := NewFactory(test.factory)
for _, i := range test.expectedInterfaces {
require.Implements(t, i, traceReader)
}
})
}
}

func TestAdapterCreateTraceReader(t *testing.T) {
Expand Down Expand Up @@ -78,7 +123,9 @@ func TestAdapterCreateDependencyReader(t *testing.T) {
f1.On("CreateDependencyReader").Return(new(dependencyStoreMocks.Reader), nil)

f := NewFactory(f1)
r, err := f.CreateDependencyReader()
depFactory, ok := f.(depstore.Factory)
require.True(t, ok)
r, err := depFactory.CreateDependencyReader()
require.NoError(t, err)
require.NotNil(t, r)
}
Expand All @@ -89,7 +136,9 @@ func TestAdapterCreateDependencyReaderError(t *testing.T) {
f1.On("CreateDependencyReader").Return(nil, testErr)

f := NewFactory(f1)
r, err := f.CreateDependencyReader()
depFactory, ok := f.(depstore.Factory)
require.True(t, ok)
r, err := depFactory.CreateDependencyReader()
require.ErrorIs(t, err, testErr)
require.Nil(t, r)
}

0 comments on commit 5a6c2a1

Please sign in to comment.