-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
Migrate Jaeger internal packages to OTEL contrib and update import paths #37999
Draft
AdityaS8804
wants to merge
11
commits into
open-telemetry:main
Choose a base branch
from
AdityaS8804:main
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+5,411
−23
Draft
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
0552076
Migrate Jaeger internal packages to OTEL contrib
AdityaS8804 d56e9a1
Merge branch 'main' of https://github.com/AdityaS8804/opentelemetry-c…
AdityaS8804 f8b3f2f
Changed paths of migrated code to jaegerreceiver/internal; Added OTEL…
AdityaS8804 8b28155
Removed jaegerreceiver/configmanager/grpc
AdityaS8804 a4a8b8a
Removed jaegerreceiver/configmanager/grpc
AdityaS8804 c0502a3
Added OTEL Metric SDK for receiver/jaegerreceiver/internal/pkg/metrics
AdityaS8804 3847de4
Added required files for tests in jaegerreceiver/internal/testdata
AdityaS8804 0964d42
Added
AdityaS8804 5c54fd8
Added
AdityaS8804 2818127
Added previous metric implementation
AdityaS8804 bd3c06f
Removed commenting errors
AdityaS8804 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
20 changes: 20 additions & 0 deletions
20
receiver/jaegerreceiver/internal/cmd/configmanager/manager.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
// Copyright The OpenTelemetry Authors | ||
// Copyright (c) 2019 The Jaeger Authors. | ||
// Copyright (c) 2017 Uber Technologies, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package configmanager | ||
|
||
import ( | ||
"context" | ||
|
||
"github.com/jaegertracing/jaeger-idl/proto-gen/api_v2" | ||
) | ||
|
||
// TODO this interface could be moved to pkg/clientcfg, along with grpc proxy, | ||
// but not the metrics wrapper (because its metric names are specific to agent). | ||
|
||
// ClientConfigManager decides which sampling strategy a given service should be using. | ||
type ClientConfigManager interface { | ||
GetSamplingStrategy(ctx context.Context, serviceName string) (*api_v2.SamplingStrategyResponse, error) | ||
} |
45 changes: 45 additions & 0 deletions
45
receiver/jaegerreceiver/internal/cmd/configmanager/metrics.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
// Copyright The OpenTelemetry Authors | ||
// Copyright (c) 2018 The Jaeger Authors. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package configmanager | ||
|
||
import ( | ||
"context" | ||
|
||
"github.com/jaegertracing/jaeger-idl/proto-gen/api_v2" | ||
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver/internal/pkg/metrics" | ||
) | ||
|
||
// configManagerMetrics holds metrics related to ClientConfigManager | ||
type configManagerMetrics struct { | ||
// Number of successful sampling rate responses from collector | ||
SamplingSuccess metrics.Counter `metric:"collector-proxy" tags:"result=ok,endpoint=sampling"` | ||
|
||
// Number of failed sampling rate responses from collector | ||
SamplingFailures metrics.Counter `metric:"collector-proxy" tags:"result=err,endpoint=sampling"` | ||
} | ||
|
||
// ManagerWithMetrics is manager with metrics integration. | ||
type ManagerWithMetrics struct { | ||
wrapped ClientConfigManager | ||
metrics configManagerMetrics | ||
} | ||
|
||
// WrapWithMetrics wraps ClientConfigManager and creates metrics for its invocations. | ||
func WrapWithMetrics(manager ClientConfigManager, mFactory metrics.Factory) *ManagerWithMetrics { | ||
m := configManagerMetrics{} | ||
metrics.Init(&m, mFactory, nil) | ||
return &ManagerWithMetrics{wrapped: manager, metrics: m} | ||
} | ||
|
||
// GetSamplingStrategy returns sampling strategy from server. | ||
func (m *ManagerWithMetrics) GetSamplingStrategy(ctx context.Context, serviceName string) (*api_v2.SamplingStrategyResponse, error) { | ||
r, err := m.wrapped.GetSamplingStrategy(ctx, serviceName) | ||
if err != nil { | ||
m.metrics.SamplingFailures.Inc(1) | ||
} else { | ||
m.metrics.SamplingSuccess.Inc(1) | ||
} | ||
return r, err | ||
} |
66 changes: 66 additions & 0 deletions
66
receiver/jaegerreceiver/internal/cmd/configmanager/metrics_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
// Copyright The OpenTelemetry Authors | ||
// Copyright (c) 2018 The Jaeger Authors. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package configmanager | ||
|
||
import ( | ||
"context" | ||
"errors" | ||
"testing" | ||
"time" | ||
|
||
"github.com/stretchr/testify/require" | ||
|
||
"github.com/jaegertracing/jaeger-idl/proto-gen/api_v2" | ||
"github.com/jaegertracing/jaeger/pkg/testutils" | ||
"github.com/open-telemetry/opentelemetry-collector-contrib/receiver/jaegerreceiver/internal/internal/metricstest" | ||
) | ||
|
||
type noopManager struct{} | ||
|
||
func (noopManager) GetSamplingStrategy(_ context.Context, s string) (*api_v2.SamplingStrategyResponse, error) { | ||
if s == "failed" { | ||
return nil, errors.New("failed") | ||
} | ||
return &api_v2.SamplingStrategyResponse{StrategyType: api_v2.SamplingStrategyType_PROBABILISTIC}, nil | ||
} | ||
|
||
func TestMetrics(t *testing.T) { | ||
tests := []struct { | ||
expected []metricstest.ExpectedMetric | ||
err error | ||
}{ | ||
{expected: []metricstest.ExpectedMetric{ | ||
{Name: "collector-proxy", Tags: map[string]string{"result": "ok", "endpoint": "sampling"}, Value: 1}, | ||
{Name: "collector-proxy", Tags: map[string]string{"result": "err", "endpoint": "sampling"}, Value: 0}, | ||
}}, | ||
{expected: []metricstest.ExpectedMetric{ | ||
{Name: "collector-proxy", Tags: map[string]string{"result": "ok", "endpoint": "sampling"}, Value: 0}, | ||
{Name: "collector-proxy", Tags: map[string]string{"result": "err", "endpoint": "sampling"}, Value: 1}, | ||
}, err: errors.New("failed")}, | ||
} | ||
|
||
for _, test := range tests { | ||
t.Run("", func(t *testing.T) { | ||
metricsFactory := metricstest.NewFactory(time.Microsecond) | ||
defer metricsFactory.Stop() | ||
mgr := WrapWithMetrics(&noopManager{}, metricsFactory) | ||
|
||
if test.err != nil { | ||
s, err := mgr.GetSamplingStrategy(context.Background(), test.err.Error()) | ||
require.Nil(t, s) | ||
require.EqualError(t, err, test.err.Error()) | ||
} else { | ||
s, err := mgr.GetSamplingStrategy(context.Background(), "") | ||
require.NoError(t, err) | ||
require.NotNil(t, s) | ||
} | ||
metricsFactory.AssertCounterMetrics(t, test.expected...) | ||
}) | ||
} | ||
} | ||
|
||
func TestMain(m *testing.M) { | ||
testutils.VerifyGoLeaks(m) | ||
} |
68 changes: 68 additions & 0 deletions
68
receiver/jaegerreceiver/internal/cmd/customtransport/buffered_read_transport.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
// Copyright The OpenTelemetry Authors | ||
// Copyright (c) 2019 The Jaeger Authors. | ||
// Copyright (c) 2017 Uber Technologies, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package customtransport | ||
|
||
import ( | ||
"bytes" | ||
"context" | ||
|
||
"github.com/apache/thrift/lib/go/thrift" | ||
) | ||
|
||
// TBufferedReadTransport is a thrift.TTransport that reads from a buffer | ||
type TBufferedReadTransport struct { | ||
readBuf *bytes.Buffer | ||
} | ||
|
||
var _ thrift.TTransport = (*TBufferedReadTransport)(nil) | ||
|
||
// NewTBufferedReadTransport creates a buffer backed TTransport | ||
func NewTBufferedReadTransport(readBuf *bytes.Buffer) (*TBufferedReadTransport, error) { | ||
return &TBufferedReadTransport{readBuf: readBuf}, nil | ||
} | ||
|
||
// IsOpen does nothing as transport is not maintaining the connection | ||
// Required to maintain thrift.TTransport interface | ||
func (*TBufferedReadTransport) IsOpen() bool { | ||
return true | ||
} | ||
|
||
// Open does nothing as transport is not maintaining the connection | ||
// Required to maintain thrift.TTransport interface | ||
func (*TBufferedReadTransport) Open() error { | ||
return nil | ||
} | ||
|
||
// Close does nothing as transport is not maintaining the connection | ||
// Required to maintain thrift.TTransport interface | ||
func (*TBufferedReadTransport) Close() error { | ||
return nil | ||
} | ||
|
||
// Read reads bytes from the local buffer and puts them in the specified buf | ||
func (p *TBufferedReadTransport) Read(buf []byte) (int, error) { | ||
in, err := p.readBuf.Read(buf) | ||
return in, thrift.NewTTransportExceptionFromError(err) | ||
} | ||
|
||
// RemainingBytes returns the number of bytes left to be read from the readBuf | ||
func (p *TBufferedReadTransport) RemainingBytes() uint64 { | ||
//nolint: gosec // G115 | ||
return uint64(p.readBuf.Len()) | ||
} | ||
|
||
// Write writes bytes into the read buffer | ||
// Required to maintain thrift.TTransport interface | ||
func (p *TBufferedReadTransport) Write(buf []byte) (int, error) { | ||
p.readBuf = bytes.NewBuffer(buf) | ||
return len(buf), nil | ||
} | ||
|
||
// Flush does nothing as udp server does not write responses back | ||
// Required to maintain thrift.TTransport interface | ||
func (*TBufferedReadTransport) Flush(_ context.Context) error { | ||
return nil | ||
} |
67 changes: 67 additions & 0 deletions
67
receiver/jaegerreceiver/internal/cmd/customtransport/buffered_read_transport_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
// Copyright The OpenTelemetry Authors | ||
// Copyright (c) 2019 The Jaeger Authors. | ||
// Copyright (c) 2017 Uber Technologies, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package customtransport | ||
|
||
import ( | ||
"bytes" | ||
"context" | ||
"testing" | ||
|
||
"github.com/stretchr/testify/require" | ||
|
||
"github.com/jaegertracing/jaeger/pkg/testutils" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Don't bring more dependencies from jaeger |
||
) | ||
|
||
// TestTBufferedReadTransport tests the TBufferedReadTransport | ||
func TestTBufferedReadTransport(t *testing.T) { | ||
buffer := bytes.NewBuffer([]byte("testString")) | ||
trans, err := NewTBufferedReadTransport(buffer) | ||
require.NotNil(t, trans) | ||
require.NoError(t, err) | ||
require.Equal(t, uint64(10), trans.RemainingBytes()) | ||
|
||
firstRead := make([]byte, 4) | ||
n, err := trans.Read(firstRead) | ||
require.NoError(t, err) | ||
require.Equal(t, 4, n) | ||
require.Equal(t, []byte("test"), firstRead) | ||
require.Equal(t, uint64(6), trans.RemainingBytes()) | ||
|
||
secondRead := make([]byte, 7) | ||
n, err = trans.Read(secondRead) | ||
require.NoError(t, err) | ||
require.Equal(t, 6, n) | ||
require.Equal(t, []byte("String"), secondRead[0:6]) | ||
require.Equal(t, uint64(0), trans.RemainingBytes()) | ||
} | ||
|
||
// TestTBufferedReadTransportEmptyFunctions tests the empty functions in TBufferedReadTransport | ||
func TestTBufferedReadTransportEmptyFunctions(t *testing.T) { | ||
byteArr := make([]byte, 1) | ||
trans, err := NewTBufferedReadTransport(bytes.NewBuffer(byteArr)) | ||
require.NotNil(t, trans) | ||
require.NoError(t, err) | ||
|
||
err = trans.Open() | ||
require.NoError(t, err) | ||
|
||
err = trans.Close() | ||
require.NoError(t, err) | ||
|
||
err = trans.Flush(context.Background()) | ||
require.NoError(t, err) | ||
|
||
n, err := trans.Write(byteArr) | ||
require.Equal(t, 1, n) | ||
require.NoError(t, err) | ||
|
||
isOpen := trans.IsOpen() | ||
require.True(t, isOpen) | ||
} | ||
|
||
func TestMain(m *testing.M) { | ||
testutils.VerifyGoLeaks(m) | ||
} |
15 changes: 15 additions & 0 deletions
15
receiver/jaegerreceiver/internal/cmd/processors/package_test.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
// Copyright The OpenTelemetry Authors | ||
// Copyright (c) 2024 The Jaeger Authors. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package processors | ||
|
||
import ( | ||
"testing" | ||
|
||
"github.com/jaegertracing/jaeger/pkg/testutils" | ||
) | ||
|
||
func TestMain(m *testing.M) { | ||
testutils.VerifyGoLeaks(m) | ||
} |
12 changes: 12 additions & 0 deletions
12
receiver/jaegerreceiver/internal/cmd/processors/processor.go
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// Copyright The OpenTelemetry Authors | ||
// Copyright (c) 2019 The Jaeger Authors. | ||
// Copyright (c) 2017 Uber Technologies, Inc. | ||
// SPDX-License-Identifier: Apache-2.0 | ||
|
||
package processors | ||
|
||
// Processor processes metrics in multiple formats | ||
type Processor interface { | ||
Serve() | ||
Stop() | ||
} |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We said this isn't needed in jaeger receiver