Tracing: Various improvements (#88308)
This commit is contained in:
@@ -5,6 +5,7 @@ import (
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/infra/usagestats"
|
||||
encryptionprovider "github.com/grafana/grafana/pkg/services/encryption/provider"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
@@ -17,7 +18,7 @@ func SetupTestService(tb testing.TB) *Service {
|
||||
provider := encryptionprovider.ProvideEncryptionProvider()
|
||||
settings := setting.NewCfg()
|
||||
|
||||
service, err := ProvideEncryptionService(provider, usMock, settings)
|
||||
service, err := ProvideEncryptionService(tracing.InitializeTracerForTest(), provider, usMock, settings)
|
||||
require.NoError(tb, err)
|
||||
|
||||
return service
|
||||
|
||||
@@ -7,7 +7,10 @@ import (
|
||||
"errors"
|
||||
"fmt"
|
||||
|
||||
"go.opentelemetry.io/otel/attribute"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/log"
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/infra/usagestats"
|
||||
"github.com/grafana/grafana/pkg/services/encryption"
|
||||
"github.com/grafana/grafana/pkg/setting"
|
||||
@@ -24,7 +27,8 @@ const (
|
||||
// Service must not be used for encryption.
|
||||
// Use secrets.Service implementing envelope encryption instead.
|
||||
type Service struct {
|
||||
log log.Logger
|
||||
tracer tracing.Tracer
|
||||
log log.Logger
|
||||
|
||||
cfg *setting.Cfg
|
||||
usageMetrics usagestats.Service
|
||||
@@ -34,12 +38,14 @@ type Service struct {
|
||||
}
|
||||
|
||||
func ProvideEncryptionService(
|
||||
tracer tracing.Tracer,
|
||||
provider encryption.Provider,
|
||||
usageMetrics usagestats.Service,
|
||||
cfg *setting.Cfg,
|
||||
) (*Service, error) {
|
||||
s := &Service{
|
||||
log: log.New("encryption"),
|
||||
tracer: tracer,
|
||||
log: log.New("encryption"),
|
||||
|
||||
ciphers: provider.ProvideCiphers(),
|
||||
deciphers: provider.ProvideDeciphers(),
|
||||
@@ -93,6 +99,9 @@ func (s *Service) registerUsageMetrics() {
|
||||
}
|
||||
|
||||
func (s *Service) Decrypt(ctx context.Context, payload []byte, secret string) ([]byte, error) {
|
||||
ctx, span := s.tracer.Start(ctx, "encryption.service.Decrypt")
|
||||
defer span.End()
|
||||
|
||||
var err error
|
||||
defer func() {
|
||||
if err != nil {
|
||||
@@ -115,6 +124,8 @@ func (s *Service) Decrypt(ctx context.Context, payload []byte, secret string) ([
|
||||
return nil, err
|
||||
}
|
||||
|
||||
span.SetAttributes(attribute.String("encryption.algorithm", algorithm))
|
||||
|
||||
var decrypted []byte
|
||||
decrypted, err = decipher.Decrypt(ctx, toDecrypt, secret)
|
||||
|
||||
@@ -163,6 +174,9 @@ func (s *Service) deriveEncryptionAlgorithm(payload []byte) (string, []byte, err
|
||||
}
|
||||
|
||||
func (s *Service) Encrypt(ctx context.Context, payload []byte, secret string) ([]byte, error) {
|
||||
ctx, span := s.tracer.Start(ctx, "encryption.service.Encrypt")
|
||||
defer span.End()
|
||||
|
||||
var err error
|
||||
defer func() {
|
||||
if err != nil {
|
||||
@@ -179,6 +193,8 @@ func (s *Service) Encrypt(ctx context.Context, payload []byte, secret string) ([
|
||||
return nil, err
|
||||
}
|
||||
|
||||
span.SetAttributes(attribute.String("encryption.algorithm", algorithm))
|
||||
|
||||
var encrypted []byte
|
||||
encrypted, err = cipher.Encrypt(ctx, payload, secret)
|
||||
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/grafana/grafana/pkg/infra/tracing"
|
||||
"github.com/grafana/grafana/pkg/infra/usagestats"
|
||||
"github.com/grafana/grafana/pkg/services/encryption"
|
||||
"github.com/grafana/grafana/pkg/services/encryption/provider"
|
||||
@@ -20,7 +21,7 @@ func Test_Service(t *testing.T) {
|
||||
usageStats := &usagestats.UsageStatsMock{}
|
||||
settings := setting.NewCfg()
|
||||
|
||||
svc, err := ProvideEncryptionService(encProvider, usageStats, settings)
|
||||
svc, err := ProvideEncryptionService(tracing.InitializeTracerForTest(), encProvider, usageStats, settings)
|
||||
require.NoError(t, err)
|
||||
|
||||
t.Run("decrypt empty payload should return error", func(t *testing.T) {
|
||||
@@ -79,7 +80,7 @@ func Test_Service_MissingProvider(t *testing.T) {
|
||||
usageStats := &usagestats.UsageStatsMock{}
|
||||
settings := setting.NewCfg()
|
||||
|
||||
service, err := ProvideEncryptionService(encProvider, usageStats, settings)
|
||||
service, err := ProvideEncryptionService(tracing.InitializeTracerForTest(), encProvider, usageStats, settings)
|
||||
assert.Nil(t, service)
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user