From 9af9c9eb66062bec5618c2198952c2f9c5c64769 Mon Sep 17 00:00:00 2001 From: Alex Boten Date: Fri, 10 Sep 2021 09:02:04 -0700 Subject: [PATCH] adding NewNoopMeterProvider to follow trace api --- metric/global/metric_test.go | 2 +- metric/{metric_noop.go => noop.go} | 13 +++++++++--- metric/noop_test.go | 34 ++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 4 deletions(-) rename metric/{metric_noop.go => noop.go} (78%) create mode 100644 metric/noop_test.go diff --git a/metric/global/metric_test.go b/metric/global/metric_test.go index 8f6000245ad..9eee03f9895 100644 --- a/metric/global/metric_test.go +++ b/metric/global/metric_test.go @@ -30,7 +30,7 @@ func (*testMeterProvider) Meter(_ string, _ ...metric.MeterOption) metric.Meter func TestMultipleGlobalMeterProvider(t *testing.T) { p1 := testMeterProvider{} - p2 := metric.NoopMeterProvider{} + p2 := metric.NewNoopMeterProvider() SetMeterProvider(&p1) SetMeterProvider(&p2) diff --git a/metric/metric_noop.go b/metric/noop.go similarity index 78% rename from metric/metric_noop.go rename to metric/noop.go index 30e57b6945b..0259280ad15 100644 --- a/metric/metric_noop.go +++ b/metric/noop.go @@ -21,19 +21,26 @@ import ( "go.opentelemetry.io/otel/metric/number" ) -type NoopMeterProvider struct{} +// NewNoopMeterProvider returns an implementation of MeterProvider that +// performs no operations. The Meter and Instrument created from the returned +// MeterProvider also perform no operations. +func NewNoopMeterProvider() noopMeterProvider { + return noopMeterProvider{} +} + +type noopMeterProvider struct{} type noopInstrument struct{} type noopBoundInstrument struct{} type NoopSync struct{ noopInstrument } type NoopAsync struct{ noopInstrument } -var _ MeterProvider = NoopMeterProvider{} +var _ MeterProvider = noopMeterProvider{} var _ SyncImpl = NoopSync{} var _ BoundSyncImpl = noopBoundInstrument{} var _ AsyncImpl = NoopAsync{} -func (NoopMeterProvider) Meter(_ string, _ ...MeterOption) Meter { +func (noopMeterProvider) Meter(_ string, _ ...MeterOption) Meter { return Meter{} } diff --git a/metric/noop_test.go b/metric/noop_test.go new file mode 100644 index 00000000000..e5a7528a217 --- /dev/null +++ b/metric/noop_test.go @@ -0,0 +1,34 @@ +// Copyright The OpenTelemetry Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package metric + +import ( + "testing" +) + +func TestNewNoopMeterProvider(t *testing.T) { + got, want := NewNoopMeterProvider(), noopMeterProvider{} + if got != want { + t.Errorf("NewNoopMeterProvider() returned %#v, want %#v", got, want) + } +} + +func TestNoopMeterProviderMeter(t *testing.T) { + mp := NewNoopMeterProvider() + got, want := mp.Meter(""), Meter{} + if got != want { + t.Errorf("noopMeterProvider.Meter() returned %#v, want %#v", got, want) + } +}