Skip to content

Commit

Permalink
Make scope attributes as identifying for Meter (#5926)
Browse files Browse the repository at this point in the history
Towards #3368
  • Loading branch information
pellared authored Oct 30, 2024
1 parent 3742c54 commit ee56fb9
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 13 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm
- `go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc` now keeps the metadata already present in the context when `WithHeaders` is used. (#5911)
- `go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc` now keeps the metadata already present in the context when `WithHeaders` is used. (#5915)
- Support scope attributes and make them as identifying for `Tracer` in `go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/trace`. (#5924)
- Support scope attributes and make them as identifying for `Meter` in `go.opentelemetry.io/otel` and `go.opentelemetry.io/otel/sdk/metric`. (#5926)

<!-- Released section -->
<!-- Don't change this section unless doing release -->
Expand Down
1 change: 1 addition & 0 deletions internal/global/meter.go
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ func (p *meterProvider) Meter(name string, opts ...metric.MeterOption) metric.Me
name: name,
version: c.InstrumentationVersion(),
schema: c.SchemaURL(),
attrs: c.InstrumentationAttributes(),
}

if p.meters == nil {
Expand Down
21 changes: 12 additions & 9 deletions internal/global/meter_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/metric"
"go.opentelemetry.io/otel/metric/noop"
)
Expand Down Expand Up @@ -397,17 +398,18 @@ func TestRegistrationDelegation(t *testing.T) {
}

func TestMeterIdentity(t *testing.T) {
type id struct{ name, ver, url string }
type id struct{ name, ver, url, attr string }

ids := []id{
{"name-a", "version-a", "url-a"},
{"name-a", "version-a", "url-b"},
{"name-a", "version-b", "url-a"},
{"name-a", "version-b", "url-b"},
{"name-b", "version-a", "url-a"},
{"name-b", "version-a", "url-b"},
{"name-b", "version-b", "url-a"},
{"name-b", "version-b", "url-b"},
{"name-a", "version-a", "url-a", ""},
{"name-a", "version-a", "url-a", "attr"},
{"name-a", "version-a", "url-b", ""},
{"name-a", "version-b", "url-a", ""},
{"name-a", "version-b", "url-b", ""},
{"name-b", "version-a", "url-a", ""},
{"name-b", "version-a", "url-b", ""},
{"name-b", "version-b", "url-a", ""},
{"name-b", "version-b", "url-b", ""},
}

provider := &meterProvider{}
Expand All @@ -416,6 +418,7 @@ func TestMeterIdentity(t *testing.T) {
i.name,
metric.WithInstrumentationVersion(i.ver),
metric.WithSchemaURL(i.url),
metric.WithInstrumentationAttributes(attribute.String("key", i.attr)),
)
}

Expand Down
8 changes: 5 additions & 3 deletions sdk/metric/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,17 @@ func (mp *MeterProvider) Meter(name string, options ...metric.MeterOption) metri

c := metric.NewMeterConfig(options...)
s := instrumentation.Scope{
Name: name,
Version: c.InstrumentationVersion(),
SchemaURL: c.SchemaURL(),
Name: name,
Version: c.InstrumentationVersion(),
SchemaURL: c.SchemaURL(),
Attributes: c.InstrumentationAttributes(),
}

global.Info("Meter created",
"Name", s.Name,
"Version", s.Version,
"SchemaURL", s.SchemaURL,
"Attributes", s.Attributes,
)

return mp.meters.Lookup(s, func() *meter {
Expand Down
2 changes: 1 addition & 1 deletion sdk/metric/provider_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ func TestMeterProviderReturnsSameMeter(t *testing.T) {

assert.Same(t, mtr, mp.Meter(""))
assert.NotSame(t, mtr, mp.Meter("diff"))
assert.Same(t, mtr, mp.Meter("", api.WithInstrumentationAttributes(attribute.String("k", "v")))) // TODO (#3368): Change to assert.NotSame.
assert.NotSame(t, mtr, mp.Meter("", api.WithInstrumentationAttributes(attribute.String("k", "v"))))
}

func TestEmptyMeterName(t *testing.T) {
Expand Down

0 comments on commit ee56fb9

Please sign in to comment.