You've already forked opentelemetry-go
							
							
				mirror of
				https://github.com/open-telemetry/opentelemetry-go.git
				synced 2025-10-31 00:07:40 +02:00 
			
		
		
		
	Move Number to api/metric package (#706)
Co-authored-by: Joshua MacDonald <jmacd@users.noreply.github.com>
This commit is contained in:
		| @@ -21,6 +21,8 @@ import ( | ||||
| 	"fmt" | ||||
| 	"strconv" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/internal" | ||||
| ) | ||||
|  | ||||
| // Key represents the key part in key-value pairs. It's a string. The | ||||
| @@ -60,7 +62,7 @@ const ( | ||||
| func Bool(v bool) Value { | ||||
| 	return Value{ | ||||
| 		vtype:   BOOL, | ||||
| 		numeric: boolToRaw(v), | ||||
| 		numeric: internal.BoolToRaw(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -68,7 +70,7 @@ func Bool(v bool) Value { | ||||
| func Int64(v int64) Value { | ||||
| 	return Value{ | ||||
| 		vtype:   INT64, | ||||
| 		numeric: int64ToRaw(v), | ||||
| 		numeric: internal.Int64ToRaw(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -76,7 +78,7 @@ func Int64(v int64) Value { | ||||
| func Uint64(v uint64) Value { | ||||
| 	return Value{ | ||||
| 		vtype:   UINT64, | ||||
| 		numeric: uint64ToRaw(v), | ||||
| 		numeric: internal.Uint64ToRaw(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -84,7 +86,7 @@ func Uint64(v uint64) Value { | ||||
| func Float64(v float64) Value { | ||||
| 	return Value{ | ||||
| 		vtype:   FLOAT64, | ||||
| 		numeric: float64ToRaw(v), | ||||
| 		numeric: internal.Float64ToRaw(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -92,7 +94,7 @@ func Float64(v float64) Value { | ||||
| func Int32(v int32) Value { | ||||
| 	return Value{ | ||||
| 		vtype:   INT32, | ||||
| 		numeric: int32ToRaw(v), | ||||
| 		numeric: internal.Int32ToRaw(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -100,7 +102,7 @@ func Int32(v int32) Value { | ||||
| func Uint32(v uint32) Value { | ||||
| 	return Value{ | ||||
| 		vtype:   UINT32, | ||||
| 		numeric: uint32ToRaw(v), | ||||
| 		numeric: internal.Uint32ToRaw(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -108,7 +110,7 @@ func Uint32(v uint32) Value { | ||||
| func Float32(v float32) Value { | ||||
| 	return Value{ | ||||
| 		vtype:   FLOAT32, | ||||
| 		numeric: float32ToRaw(v), | ||||
| 		numeric: internal.Float32ToRaw(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -283,43 +285,43 @@ func (v Value) Type() ValueType { | ||||
| // AsBool returns the bool value. Make sure that the Value's type is | ||||
| // BOOL. | ||||
| func (v Value) AsBool() bool { | ||||
| 	return rawToBool(v.numeric) | ||||
| 	return internal.RawToBool(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsInt32 returns the int32 value. Make sure that the Value's type is | ||||
| // INT32. | ||||
| func (v Value) AsInt32() int32 { | ||||
| 	return rawToInt32(v.numeric) | ||||
| 	return internal.RawToInt32(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsInt64 returns the int64 value. Make sure that the Value's type is | ||||
| // INT64. | ||||
| func (v Value) AsInt64() int64 { | ||||
| 	return rawToInt64(v.numeric) | ||||
| 	return internal.RawToInt64(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsUint32 returns the uint32 value. Make sure that the Value's type | ||||
| // is UINT32. | ||||
| func (v Value) AsUint32() uint32 { | ||||
| 	return rawToUint32(v.numeric) | ||||
| 	return internal.RawToUint32(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsUint64 returns the uint64 value. Make sure that the Value's type is | ||||
| // UINT64. | ||||
| func (v Value) AsUint64() uint64 { | ||||
| 	return rawToUint64(v.numeric) | ||||
| 	return internal.RawToUint64(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsFloat32 returns the float32 value. Make sure that the Value's | ||||
| // type is FLOAT32. | ||||
| func (v Value) AsFloat32() float32 { | ||||
| 	return rawToFloat32(v.numeric) | ||||
| 	return internal.RawToFloat32(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsFloat64 returns the float64 value. Make sure that the Value's | ||||
| // type is FLOAT64. | ||||
| func (v Value) AsFloat64() float64 { | ||||
| 	return rawToFloat64(v.numeric) | ||||
| 	return internal.RawToFloat64(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsString returns the string value. Make sure that the Value's type | ||||
|   | ||||
| @@ -332,7 +332,7 @@ func (m *meter) RecordBatch(ctx context.Context, labels []core.KeyValue, measure | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (inst *syncImpl) RecordOne(ctx context.Context, number core.Number, labels []core.KeyValue) { | ||||
| func (inst *syncImpl) RecordOne(ctx context.Context, number metric.Number, labels []core.KeyValue) { | ||||
| 	if instPtr := (*metric.SyncImpl)(atomic.LoadPointer(&inst.delegate)); instPtr != nil { | ||||
| 		(*instPtr).RecordOne(ctx, number, labels) | ||||
| 	} | ||||
| @@ -340,7 +340,7 @@ func (inst *syncImpl) RecordOne(ctx context.Context, number core.Number, labels | ||||
|  | ||||
| // Bound instrument initialization | ||||
|  | ||||
| func (bound *syncHandle) RecordOne(ctx context.Context, number core.Number) { | ||||
| func (bound *syncHandle) RecordOne(ctx context.Context, number metric.Number) { | ||||
| 	instPtr := (*metric.SyncImpl)(atomic.LoadPointer(&bound.inst.delegate)) | ||||
| 	if instPtr == nil { | ||||
| 		return | ||||
| @@ -371,7 +371,7 @@ func (m *meter) withName(opts []metric.Option) []metric.Option { | ||||
|  | ||||
| func (m *meter) NewInt64Counter(name string, opts ...metric.Option) (metric.Int64Counter, error) { | ||||
| 	return metric.WrapInt64CounterInstrument(m.newSync( | ||||
| 		metric.NewDescriptor(name, metric.CounterKind, core.Int64NumberKind, m.withName(opts)...), | ||||
| 		metric.NewDescriptor(name, metric.CounterKind, metric.Int64NumberKind, m.withName(opts)...), | ||||
| 		func(other metric.Meter) (metric.SyncImpl, error) { | ||||
| 			return syncCheck(other.NewInt64Counter(name, opts...)) | ||||
| 		})) | ||||
| @@ -379,7 +379,7 @@ func (m *meter) NewInt64Counter(name string, opts ...metric.Option) (metric.Int6 | ||||
|  | ||||
| func (m *meter) NewFloat64Counter(name string, opts ...metric.Option) (metric.Float64Counter, error) { | ||||
| 	return metric.WrapFloat64CounterInstrument(m.newSync( | ||||
| 		metric.NewDescriptor(name, metric.CounterKind, core.Float64NumberKind, m.withName(opts)...), | ||||
| 		metric.NewDescriptor(name, metric.CounterKind, metric.Float64NumberKind, m.withName(opts)...), | ||||
| 		func(other metric.Meter) (metric.SyncImpl, error) { | ||||
| 			return syncCheck(other.NewFloat64Counter(name, opts...)) | ||||
| 		})) | ||||
| @@ -387,7 +387,7 @@ func (m *meter) NewFloat64Counter(name string, opts ...metric.Option) (metric.Fl | ||||
|  | ||||
| func (m *meter) NewInt64Measure(name string, opts ...metric.Option) (metric.Int64Measure, error) { | ||||
| 	return metric.WrapInt64MeasureInstrument(m.newSync( | ||||
| 		metric.NewDescriptor(name, metric.MeasureKind, core.Int64NumberKind, m.withName(opts)...), | ||||
| 		metric.NewDescriptor(name, metric.MeasureKind, metric.Int64NumberKind, m.withName(opts)...), | ||||
| 		func(other metric.Meter) (metric.SyncImpl, error) { | ||||
| 			return syncCheck(other.NewInt64Measure(name, opts...)) | ||||
| 		})) | ||||
| @@ -395,7 +395,7 @@ func (m *meter) NewInt64Measure(name string, opts ...metric.Option) (metric.Int6 | ||||
|  | ||||
| func (m *meter) NewFloat64Measure(name string, opts ...metric.Option) (metric.Float64Measure, error) { | ||||
| 	return metric.WrapFloat64MeasureInstrument(m.newSync( | ||||
| 		metric.NewDescriptor(name, metric.MeasureKind, core.Float64NumberKind, m.withName(opts)...), | ||||
| 		metric.NewDescriptor(name, metric.MeasureKind, metric.Float64NumberKind, m.withName(opts)...), | ||||
| 		func(other metric.Meter) (metric.SyncImpl, error) { | ||||
| 			return syncCheck(other.NewFloat64Measure(name, opts...)) | ||||
| 		})) | ||||
| @@ -403,7 +403,7 @@ func (m *meter) NewFloat64Measure(name string, opts ...metric.Option) (metric.Fl | ||||
|  | ||||
| func (m *meter) RegisterInt64Observer(name string, callback metric.Int64ObserverCallback, opts ...metric.Option) (metric.Int64Observer, error) { | ||||
| 	return metric.WrapInt64ObserverInstrument(m.newAsync( | ||||
| 		metric.NewDescriptor(name, metric.ObserverKind, core.Int64NumberKind, m.withName(opts)...), | ||||
| 		metric.NewDescriptor(name, metric.ObserverKind, metric.Int64NumberKind, m.withName(opts)...), | ||||
| 		func(other metric.Meter) (metric.AsyncImpl, error) { | ||||
| 			return asyncCheck(other.RegisterInt64Observer(name, callback, opts...)) | ||||
| 		})) | ||||
| @@ -411,7 +411,7 @@ func (m *meter) RegisterInt64Observer(name string, callback metric.Int64Observer | ||||
|  | ||||
| func (m *meter) RegisterFloat64Observer(name string, callback metric.Float64ObserverCallback, opts ...metric.Option) (metric.Float64Observer, error) { | ||||
| 	return metric.WrapFloat64ObserverInstrument(m.newAsync( | ||||
| 		metric.NewDescriptor(name, metric.ObserverKind, core.Float64NumberKind, m.withName(opts)...), | ||||
| 		metric.NewDescriptor(name, metric.ObserverKind, metric.Float64NumberKind, m.withName(opts)...), | ||||
| 		func(other metric.Meter) (metric.AsyncImpl, error) { | ||||
| 			return asyncCheck(other.RegisterFloat64Observer(name, callback, opts...)) | ||||
| 		})) | ||||
|   | ||||
| @@ -38,7 +38,7 @@ type measured struct { | ||||
| 	Name        string | ||||
| 	LibraryName string | ||||
| 	Labels      map[core.Key]core.Value | ||||
| 	Number      core.Number | ||||
| 	Number      metric.Number | ||||
| } | ||||
|  | ||||
| func asStructs(batches []metrictest.Batch) []measured { | ||||
| @@ -64,8 +64,8 @@ func asMap(kvs ...core.KeyValue) map[core.Key]core.Value { | ||||
| 	return m | ||||
| } | ||||
|  | ||||
| var asInt = core.NewInt64Number | ||||
| var asFloat = core.NewFloat64Number | ||||
| var asInt = metric.NewInt64Number | ||||
| var asFloat = metric.NewFloat64Number | ||||
|  | ||||
| func TestDirect(t *testing.T) { | ||||
| 	internal.ResetForTest() | ||||
|   | ||||
| @@ -12,80 +12,80 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| 
 | ||||
| package core | ||||
| package internal | ||||
| 
 | ||||
| import ( | ||||
| 	"math" | ||||
| 	"unsafe" | ||||
| ) | ||||
| 
 | ||||
| func boolToRaw(b bool) uint64 { | ||||
| func BoolToRaw(b bool) uint64 { | ||||
| 	if b { | ||||
| 		return 1 | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
| 
 | ||||
| func rawToBool(r uint64) bool { | ||||
| func RawToBool(r uint64) bool { | ||||
| 	return r != 0 | ||||
| } | ||||
| 
 | ||||
| func int64ToRaw(i int64) uint64 { | ||||
| func Int64ToRaw(i int64) uint64 { | ||||
| 	return uint64(i) | ||||
| } | ||||
| 
 | ||||
| func rawToInt64(r uint64) int64 { | ||||
| func RawToInt64(r uint64) int64 { | ||||
| 	return int64(r) | ||||
| } | ||||
| 
 | ||||
| func uint64ToRaw(u uint64) uint64 { | ||||
| func Uint64ToRaw(u uint64) uint64 { | ||||
| 	return u | ||||
| } | ||||
| 
 | ||||
| func rawToUint64(r uint64) uint64 { | ||||
| func RawToUint64(r uint64) uint64 { | ||||
| 	return r | ||||
| } | ||||
| 
 | ||||
| func float64ToRaw(f float64) uint64 { | ||||
| func Float64ToRaw(f float64) uint64 { | ||||
| 	return math.Float64bits(f) | ||||
| } | ||||
| 
 | ||||
| func rawToFloat64(r uint64) float64 { | ||||
| func RawToFloat64(r uint64) float64 { | ||||
| 	return math.Float64frombits(r) | ||||
| } | ||||
| 
 | ||||
| func int32ToRaw(i int32) uint64 { | ||||
| func Int32ToRaw(i int32) uint64 { | ||||
| 	return uint64(i) | ||||
| } | ||||
| 
 | ||||
| func rawToInt32(r uint64) int32 { | ||||
| func RawToInt32(r uint64) int32 { | ||||
| 	return int32(r) | ||||
| } | ||||
| 
 | ||||
| func uint32ToRaw(u uint32) uint64 { | ||||
| func Uint32ToRaw(u uint32) uint64 { | ||||
| 	return uint64(u) | ||||
| } | ||||
| 
 | ||||
| func rawToUint32(r uint64) uint32 { | ||||
| func RawToUint32(r uint64) uint32 { | ||||
| 	return uint32(r) | ||||
| } | ||||
| 
 | ||||
| func float32ToRaw(f float32) uint64 { | ||||
| 	return uint32ToRaw(math.Float32bits(f)) | ||||
| func Float32ToRaw(f float32) uint64 { | ||||
| 	return Uint32ToRaw(math.Float32bits(f)) | ||||
| } | ||||
| 
 | ||||
| func rawToFloat32(r uint64) float32 { | ||||
| 	return math.Float32frombits(rawToUint32(r)) | ||||
| func RawToFloat32(r uint64) float32 { | ||||
| 	return math.Float32frombits(RawToUint32(r)) | ||||
| } | ||||
| 
 | ||||
| func rawPtrToFloat64Ptr(r *uint64) *float64 { | ||||
| func RawPtrToFloat64Ptr(r *uint64) *float64 { | ||||
| 	return (*float64)(unsafe.Pointer(r)) | ||||
| } | ||||
| 
 | ||||
| func rawPtrToInt64Ptr(r *uint64) *int64 { | ||||
| func RawPtrToInt64Ptr(r *uint64) *int64 { | ||||
| 	return (*int64)(unsafe.Pointer(r)) | ||||
| } | ||||
| 
 | ||||
| func rawPtrToUint64Ptr(r *uint64) *uint64 { | ||||
| func RawPtrToUint64Ptr(r *uint64) *uint64 { | ||||
| 	return r | ||||
| } | ||||
| @@ -53,7 +53,7 @@ type Option interface { | ||||
| // (e.g., Int64Counter.Measurement()). | ||||
| type Measurement struct { | ||||
| 	// number needs to be aligned for 64-bit atomic operations. | ||||
| 	number     core.Number | ||||
| 	number     Number | ||||
| 	instrument SyncImpl | ||||
| } | ||||
|  | ||||
| @@ -65,7 +65,7 @@ func (m Measurement) SyncImpl() SyncImpl { | ||||
| } | ||||
|  | ||||
| // Number returns a number recorded in this measurement. | ||||
| func (m Measurement) Number() core.Number { | ||||
| func (m Measurement) Number() Number { | ||||
| 	return m.number | ||||
| } | ||||
|  | ||||
| @@ -87,12 +87,12 @@ const ( | ||||
| type Descriptor struct { | ||||
| 	name       string | ||||
| 	kind       Kind | ||||
| 	numberKind core.NumberKind | ||||
| 	numberKind NumberKind | ||||
| 	config     Config | ||||
| } | ||||
|  | ||||
| // NewDescriptor returns a Descriptor with the given contents. | ||||
| func NewDescriptor(name string, mkind Kind, nkind core.NumberKind, opts ...Option) Descriptor { | ||||
| func NewDescriptor(name string, mkind Kind, nkind NumberKind, opts ...Option) Descriptor { | ||||
| 	return Descriptor{ | ||||
| 		name:       name, | ||||
| 		kind:       mkind, | ||||
| @@ -125,7 +125,7 @@ func (d Descriptor) Unit() unit.Unit { | ||||
|  | ||||
| // NumberKind returns whether this instrument is declared over int64, | ||||
| // float64, or uint64 values. | ||||
| func (d Descriptor) NumberKind() core.NumberKind { | ||||
| func (d Descriptor) NumberKind() NumberKind { | ||||
| 	return d.numberKind | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -104,7 +104,7 @@ func TestCounter(t *testing.T) { | ||||
| 		boundInstrument.Add(ctx, 42) | ||||
| 		meter.RecordBatch(ctx, labels, c.Measurement(42)) | ||||
| 		t.Log("Testing float counter") | ||||
| 		checkBatches(t, ctx, labels, mockSDK, core.Float64NumberKind, c.SyncImpl()) | ||||
| 		checkBatches(t, ctx, labels, mockSDK, metric.Float64NumberKind, c.SyncImpl()) | ||||
| 	} | ||||
| 	{ | ||||
| 		mockSDK, meter := mockTest.NewMeter() | ||||
| @@ -116,7 +116,7 @@ func TestCounter(t *testing.T) { | ||||
| 		boundInstrument.Add(ctx, 42) | ||||
| 		meter.RecordBatch(ctx, labels, c.Measurement(42)) | ||||
| 		t.Log("Testing int counter") | ||||
| 		checkBatches(t, ctx, labels, mockSDK, core.Int64NumberKind, c.SyncImpl()) | ||||
| 		checkBatches(t, ctx, labels, mockSDK, metric.Int64NumberKind, c.SyncImpl()) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -131,7 +131,7 @@ func TestMeasure(t *testing.T) { | ||||
| 		boundInstrument.Record(ctx, 42) | ||||
| 		meter.RecordBatch(ctx, labels, m.Measurement(42)) | ||||
| 		t.Log("Testing float measure") | ||||
| 		checkBatches(t, ctx, labels, mockSDK, core.Float64NumberKind, m.SyncImpl()) | ||||
| 		checkBatches(t, ctx, labels, mockSDK, metric.Float64NumberKind, m.SyncImpl()) | ||||
| 	} | ||||
| 	{ | ||||
| 		mockSDK, meter := mockTest.NewMeter() | ||||
| @@ -143,7 +143,7 @@ func TestMeasure(t *testing.T) { | ||||
| 		boundInstrument.Record(ctx, 42) | ||||
| 		meter.RecordBatch(ctx, labels, m.Measurement(42)) | ||||
| 		t.Log("Testing int measure") | ||||
| 		checkBatches(t, ctx, labels, mockSDK, core.Int64NumberKind, m.SyncImpl()) | ||||
| 		checkBatches(t, ctx, labels, mockSDK, metric.Int64NumberKind, m.SyncImpl()) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -157,7 +157,7 @@ func TestObserver(t *testing.T) { | ||||
| 		t.Log("Testing float observer") | ||||
|  | ||||
| 		mockSDK.RunAsyncInstruments() | ||||
| 		checkObserverBatch(t, labels, mockSDK, core.Float64NumberKind, o.AsyncImpl()) | ||||
| 		checkObserverBatch(t, labels, mockSDK, metric.Float64NumberKind, o.AsyncImpl()) | ||||
| 	} | ||||
| 	{ | ||||
| 		labels := []core.KeyValue{} | ||||
| @@ -167,11 +167,11 @@ func TestObserver(t *testing.T) { | ||||
| 		}) | ||||
| 		t.Log("Testing int observer") | ||||
| 		mockSDK.RunAsyncInstruments() | ||||
| 		checkObserverBatch(t, labels, mockSDK, core.Int64NumberKind, o.AsyncImpl()) | ||||
| 		checkObserverBatch(t, labels, mockSDK, metric.Int64NumberKind, o.AsyncImpl()) | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func checkBatches(t *testing.T, ctx context.Context, labels []core.KeyValue, mock *mockTest.MeterImpl, kind core.NumberKind, instrument metric.InstrumentImpl) { | ||||
| func checkBatches(t *testing.T, ctx context.Context, labels []core.KeyValue, mock *mockTest.MeterImpl, kind metric.NumberKind, instrument metric.InstrumentImpl) { | ||||
| 	t.Helper() | ||||
| 	if len(mock.MeasurementBatches) != 3 { | ||||
| 		t.Errorf("Expected 3 recorded measurement batches, got %d", len(mock.MeasurementBatches)) | ||||
| @@ -211,7 +211,7 @@ func checkBatches(t *testing.T, ctx context.Context, labels []core.KeyValue, moc | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func checkObserverBatch(t *testing.T, labels []core.KeyValue, mock *mockTest.MeterImpl, kind core.NumberKind, observer metric.AsyncImpl) { | ||||
| func checkObserverBatch(t *testing.T, labels []core.KeyValue, mock *mockTest.MeterImpl, kind metric.NumberKind, observer metric.AsyncImpl) { | ||||
| 	t.Helper() | ||||
| 	assert.Len(t, mock.MeasurementBatches, 1) | ||||
| 	if len(mock.MeasurementBatches) < 1 { | ||||
| @@ -233,16 +233,16 @@ func checkObserverBatch(t *testing.T, labels []core.KeyValue, mock *mockTest.Met | ||||
| 	assert.Equal(t, 0, measurement.Number.CompareNumber(kind, ft)) | ||||
| } | ||||
|  | ||||
| func fortyTwo(t *testing.T, kind core.NumberKind) core.Number { | ||||
| func fortyTwo(t *testing.T, kind metric.NumberKind) metric.Number { | ||||
| 	t.Helper() | ||||
| 	switch kind { | ||||
| 	case core.Int64NumberKind: | ||||
| 		return core.NewInt64Number(42) | ||||
| 	case core.Float64NumberKind: | ||||
| 		return core.NewFloat64Number(42) | ||||
| 	case metric.Int64NumberKind: | ||||
| 		return metric.NewInt64Number(42) | ||||
| 	case metric.Float64NumberKind: | ||||
| 		return metric.NewFloat64Number(42) | ||||
| 	} | ||||
| 	t.Errorf("Invalid value kind %q", kind) | ||||
| 	return core.NewInt64Number(0) | ||||
| 	return metric.NewInt64Number(0) | ||||
| } | ||||
|  | ||||
| type testWrappedMeter struct { | ||||
| @@ -257,7 +257,7 @@ func (testWrappedMeter) NewSyncInstrument(_ metric.Descriptor) (metric.SyncImpl, | ||||
| 	return nil, nil | ||||
| } | ||||
|  | ||||
| func (testWrappedMeter) NewAsyncInstrument(_ metric.Descriptor, _ func(func(core.Number, []core.KeyValue))) (metric.AsyncImpl, error) { | ||||
| func (testWrappedMeter) NewAsyncInstrument(_ metric.Descriptor, _ func(func(metric.Number, []core.KeyValue))) (metric.AsyncImpl, error) { | ||||
| 	return nil, errors.New("Test wrap error") | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -40,14 +40,14 @@ func (s syncInstrument) bind(labels []core.KeyValue) syncBoundInstrument { | ||||
| } | ||||
|  | ||||
| func (s syncInstrument) float64Measurement(value float64) Measurement { | ||||
| 	return newMeasurement(s.instrument, core.NewFloat64Number(value)) | ||||
| 	return newMeasurement(s.instrument, NewFloat64Number(value)) | ||||
| } | ||||
|  | ||||
| func (s syncInstrument) int64Measurement(value int64) Measurement { | ||||
| 	return newMeasurement(s.instrument, core.NewInt64Number(value)) | ||||
| 	return newMeasurement(s.instrument, NewInt64Number(value)) | ||||
| } | ||||
|  | ||||
| func (s syncInstrument) directRecord(ctx context.Context, number core.Number, labels []core.KeyValue) { | ||||
| func (s syncInstrument) directRecord(ctx context.Context, number Number, labels []core.KeyValue) { | ||||
| 	s.instrument.RecordOne(ctx, number, labels) | ||||
| } | ||||
|  | ||||
| @@ -55,7 +55,7 @@ func (s syncInstrument) SyncImpl() SyncImpl { | ||||
| 	return s.instrument | ||||
| } | ||||
|  | ||||
| func (h syncBoundInstrument) directRecord(ctx context.Context, number core.Number) { | ||||
| func (h syncBoundInstrument) directRecord(ctx context.Context, number Number) { | ||||
| 	h.boundInstrument.RecordOne(ctx, number) | ||||
| } | ||||
|  | ||||
| @@ -93,7 +93,7 @@ func newSyncBoundInstrument(boundInstrument BoundSyncImpl) syncBoundInstrument { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func newMeasurement(instrument SyncImpl, number core.Number) Measurement { | ||||
| func newMeasurement(instrument SyncImpl, number Number) Measurement { | ||||
| 	return Measurement{ | ||||
| 		instrument: instrument, | ||||
| 		number:     number, | ||||
|   | ||||
| @@ -73,23 +73,23 @@ func (c Int64Counter) Measurement(value int64) Measurement { | ||||
| // Add adds the value to the counter's sum. The labels should contain | ||||
| // the keys and values to be associated with this value. | ||||
| func (c Float64Counter) Add(ctx context.Context, value float64, labels ...core.KeyValue) { | ||||
| 	c.directRecord(ctx, core.NewFloat64Number(value), labels) | ||||
| 	c.directRecord(ctx, NewFloat64Number(value), labels) | ||||
| } | ||||
|  | ||||
| // Add adds the value to the counter's sum. The labels should contain | ||||
| // the keys and values to be associated with this value. | ||||
| func (c Int64Counter) Add(ctx context.Context, value int64, labels ...core.KeyValue) { | ||||
| 	c.directRecord(ctx, core.NewInt64Number(value), labels) | ||||
| 	c.directRecord(ctx, NewInt64Number(value), labels) | ||||
| } | ||||
|  | ||||
| // Add adds the value to the counter's sum using the labels | ||||
| // previously bound to this counter via Bind() | ||||
| func (b BoundFloat64Counter) Add(ctx context.Context, value float64) { | ||||
| 	b.directRecord(ctx, core.NewFloat64Number(value)) | ||||
| 	b.directRecord(ctx, NewFloat64Number(value)) | ||||
| } | ||||
|  | ||||
| // Add adds the value to the counter's sum using the labels | ||||
| // previously bound to this counter via Bind() | ||||
| func (b BoundInt64Counter) Add(ctx context.Context, value int64) { | ||||
| 	b.directRecord(ctx, core.NewInt64Number(value)) | ||||
| 	b.directRecord(ctx, NewInt64Number(value)) | ||||
| } | ||||
|   | ||||
| @@ -74,24 +74,24 @@ func (c Int64Measure) Measurement(value int64) Measurement { | ||||
| // labels should contain the keys and values to be associated with | ||||
| // this value. | ||||
| func (c Float64Measure) Record(ctx context.Context, value float64, labels ...core.KeyValue) { | ||||
| 	c.directRecord(ctx, core.NewFloat64Number(value), labels) | ||||
| 	c.directRecord(ctx, NewFloat64Number(value), labels) | ||||
| } | ||||
|  | ||||
| // Record adds a new value to the list of measure's records. The | ||||
| // labels should contain the keys and values to be associated with | ||||
| // this value. | ||||
| func (c Int64Measure) Record(ctx context.Context, value int64, labels ...core.KeyValue) { | ||||
| 	c.directRecord(ctx, core.NewInt64Number(value), labels) | ||||
| 	c.directRecord(ctx, NewInt64Number(value), labels) | ||||
| } | ||||
|  | ||||
| // Record adds a new value to the list of measure's records using the labels | ||||
| // previously bound to the measure via Bind() | ||||
| func (b BoundFloat64Measure) Record(ctx context.Context, value float64) { | ||||
| 	b.directRecord(ctx, core.NewFloat64Number(value)) | ||||
| 	b.directRecord(ctx, NewFloat64Number(value)) | ||||
| } | ||||
|  | ||||
| // Record adds a new value to the list of measure's records using the labels | ||||
| // previously bound to the measure via Bind() | ||||
| func (b BoundInt64Measure) Record(ctx context.Context, value int64) { | ||||
| 	b.directRecord(ctx, core.NewInt64Number(value)) | ||||
| 	b.directRecord(ctx, NewInt64Number(value)) | ||||
| } | ||||
|   | ||||
| @@ -46,7 +46,7 @@ func (noopInstrument) Descriptor() Descriptor { | ||||
| 	return Descriptor{} | ||||
| } | ||||
|  | ||||
| func (noopBoundInstrument) RecordOne(context.Context, core.Number) { | ||||
| func (noopBoundInstrument) RecordOne(context.Context, Number) { | ||||
| } | ||||
|  | ||||
| func (noopBoundInstrument) Unbind() { | ||||
| @@ -56,7 +56,7 @@ func (NoopSync) Bind([]core.KeyValue) BoundSyncImpl { | ||||
| 	return noopBoundInstrument{} | ||||
| } | ||||
|  | ||||
| func (NoopSync) RecordOne(context.Context, core.Number, []core.KeyValue) { | ||||
| func (NoopSync) RecordOne(context.Context, Number, []core.KeyValue) { | ||||
| } | ||||
|  | ||||
| func (NoopMeter) RecordBatch(context.Context, []core.KeyValue, ...Measurement) { | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| 
 | ||||
| package core | ||||
| package metric | ||||
| 
 | ||||
| //go:generate stringer -type=NumberKind | ||||
| 
 | ||||
| @@ -20,6 +20,8 @@ import ( | ||||
| 	"fmt" | ||||
| 	"math" | ||||
| 	"sync/atomic" | ||||
| 
 | ||||
| 	"go.opentelemetry.io/otel/api/internal" | ||||
| ) | ||||
| 
 | ||||
| // NumberKind describes the data type of the Number. | ||||
| @@ -92,17 +94,17 @@ func NewNumberFromRaw(r uint64) Number { | ||||
| 
 | ||||
| // NewInt64Number creates an integral Number. | ||||
| func NewInt64Number(i int64) Number { | ||||
| 	return NewNumberFromRaw(int64ToRaw(i)) | ||||
| 	return NewNumberFromRaw(internal.Int64ToRaw(i)) | ||||
| } | ||||
| 
 | ||||
| // NewFloat64Number creates a floating point Number. | ||||
| func NewFloat64Number(f float64) Number { | ||||
| 	return NewNumberFromRaw(float64ToRaw(f)) | ||||
| 	return NewNumberFromRaw(internal.Float64ToRaw(f)) | ||||
| } | ||||
| 
 | ||||
| // NewInt64Number creates an integral Number. | ||||
| func NewUint64Number(u uint64) Number { | ||||
| 	return NewNumberFromRaw(uint64ToRaw(u)) | ||||
| 	return NewNumberFromRaw(internal.Uint64ToRaw(u)) | ||||
| } | ||||
| 
 | ||||
| // - as x | ||||
| @@ -121,19 +123,19 @@ func (n *Number) AsRaw() uint64 { | ||||
| // AsInt64 assumes that the value contains an int64 and returns it as | ||||
| // such. | ||||
| func (n *Number) AsInt64() int64 { | ||||
| 	return rawToInt64(n.AsRaw()) | ||||
| 	return internal.RawToInt64(n.AsRaw()) | ||||
| } | ||||
| 
 | ||||
| // AsFloat64 assumes that the measurement value contains a float64 and | ||||
| // returns it as such. | ||||
| func (n *Number) AsFloat64() float64 { | ||||
| 	return rawToFloat64(n.AsRaw()) | ||||
| 	return internal.RawToFloat64(n.AsRaw()) | ||||
| } | ||||
| 
 | ||||
| // AsUint64 assumes that the value contains an uint64 and returns it | ||||
| // as such. | ||||
| func (n *Number) AsUint64() uint64 { | ||||
| 	return rawToUint64(n.AsRaw()) | ||||
| 	return internal.RawToUint64(n.AsRaw()) | ||||
| } | ||||
| 
 | ||||
| // - as x atomic | ||||
| @@ -158,7 +160,7 @@ func (n *Number) AsInt64Atomic() int64 { | ||||
| // AsFloat64Atomic assumes that the measurement value contains a | ||||
| // float64 and returns it as such atomically. | ||||
| func (n *Number) AsFloat64Atomic() float64 { | ||||
| 	return rawToFloat64(n.AsRawAtomic()) | ||||
| 	return internal.RawToFloat64(n.AsRawAtomic()) | ||||
| } | ||||
| 
 | ||||
| // AsUint64Atomic assumes that the number contains a uint64 and | ||||
| @@ -178,19 +180,19 @@ func (n *Number) AsRawPtr() *uint64 { | ||||
| // AsInt64Ptr assumes that the number contains an int64 and returns a | ||||
| // pointer to it. | ||||
| func (n *Number) AsInt64Ptr() *int64 { | ||||
| 	return rawPtrToInt64Ptr(n.AsRawPtr()) | ||||
| 	return internal.RawPtrToInt64Ptr(n.AsRawPtr()) | ||||
| } | ||||
| 
 | ||||
| // AsFloat64Ptr assumes that the number contains a float64 and returns a | ||||
| // pointer to it. | ||||
| func (n *Number) AsFloat64Ptr() *float64 { | ||||
| 	return rawPtrToFloat64Ptr(n.AsRawPtr()) | ||||
| 	return internal.RawPtrToFloat64Ptr(n.AsRawPtr()) | ||||
| } | ||||
| 
 | ||||
| // AsUint64Ptr assumes that the number contains a uint64 and returns a | ||||
| // pointer to it. | ||||
| func (n *Number) AsUint64Ptr() *uint64 { | ||||
| 	return rawPtrToUint64Ptr(n.AsRawPtr()) | ||||
| 	return internal.RawPtrToUint64Ptr(n.AsRawPtr()) | ||||
| } | ||||
| 
 | ||||
| // - coerce | ||||
| @@ -299,7 +301,7 @@ func (n *Number) SetInt64Atomic(i int64) { | ||||
| // SetFloat64Atomic assumes that the number contains a float64 and | ||||
| // sets it to the passed value atomically. | ||||
| func (n *Number) SetFloat64Atomic(f float64) { | ||||
| 	atomic.StoreUint64(n.AsRawPtr(), float64ToRaw(f)) | ||||
| 	atomic.StoreUint64(n.AsRawPtr(), internal.Float64ToRaw(f)) | ||||
| } | ||||
| 
 | ||||
| // SetUint64Atomic assumes that the number contains a uint64 and sets | ||||
| @@ -378,7 +380,7 @@ func (n *Number) SwapInt64Atomic(i int64) int64 { | ||||
| // it to the passed value and returns the old float64 value | ||||
| // atomically. | ||||
| func (n *Number) SwapFloat64Atomic(f float64) float64 { | ||||
| 	return rawToFloat64(atomic.SwapUint64(n.AsRawPtr(), float64ToRaw(f))) | ||||
| 	return internal.RawToFloat64(atomic.SwapUint64(n.AsRawPtr(), internal.Float64ToRaw(f))) | ||||
| } | ||||
| 
 | ||||
| // SwapUint64Atomic assumes that the number contains an uint64, sets | ||||
| @@ -496,7 +498,7 @@ func (n *Number) CompareAndSwapInt64(oi, ni int64) bool { | ||||
| // CompareAndSwapFloat64 assumes that this number contains a float64 and | ||||
| // does the atomic CAS operation on it. | ||||
| func (n *Number) CompareAndSwapFloat64(of, nf float64) bool { | ||||
| 	return atomic.CompareAndSwapUint64(n.AsRawPtr(), float64ToRaw(of), float64ToRaw(nf)) | ||||
| 	return atomic.CompareAndSwapUint64(n.AsRawPtr(), internal.Float64ToRaw(of), internal.Float64ToRaw(nf)) | ||||
| } | ||||
| 
 | ||||
| // CompareAndSwapUint64 assumes that this number contains a uint64 and | ||||
| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| 
 | ||||
| package core | ||||
| package metric | ||||
| 
 | ||||
| import ( | ||||
| 	"testing" | ||||
| @@ -1,6 +1,6 @@ | ||||
| // Code generated by "stringer -type=NumberKind"; DO NOT EDIT. | ||||
| 
 | ||||
| package core | ||||
| package metric | ||||
| 
 | ||||
| import "strconv" | ||||
| 
 | ||||
| @@ -125,7 +125,7 @@ func (u *uniqueInstrumentMeterImpl) NewSyncInstrument(descriptor metric.Descript | ||||
| // NewAsyncInstrument implements metric.MeterImpl. | ||||
| func (u *uniqueInstrumentMeterImpl) NewAsyncInstrument( | ||||
| 	descriptor metric.Descriptor, | ||||
| 	callback func(func(core.Number, []core.KeyValue)), | ||||
| 	callback func(func(metric.Number, []core.KeyValue)), | ||||
| ) (metric.AsyncImpl, error) { | ||||
| 	u.lock.Lock() | ||||
| 	defer u.lock.Unlock() | ||||
|   | ||||
| @@ -38,7 +38,7 @@ type MeterImpl interface { | ||||
| 	// one occur. | ||||
| 	NewAsyncInstrument( | ||||
| 		descriptor Descriptor, | ||||
| 		callback func(func(core.Number, []core.KeyValue)), | ||||
| 		callback func(func(Number, []core.KeyValue)), | ||||
| 	) (AsyncImpl, error) | ||||
| } | ||||
|  | ||||
| @@ -64,7 +64,7 @@ type SyncImpl interface { | ||||
| 	Bind(labels []core.KeyValue) BoundSyncImpl | ||||
|  | ||||
| 	// RecordOne captures a single synchronous metric event. | ||||
| 	RecordOne(ctx context.Context, number core.Number, labels []core.KeyValue) | ||||
| 	RecordOne(ctx context.Context, number Number, labels []core.KeyValue) | ||||
| } | ||||
|  | ||||
| // BoundSyncImpl is the implementation-level interface to a | ||||
| @@ -72,7 +72,7 @@ type SyncImpl interface { | ||||
| type BoundSyncImpl interface { | ||||
|  | ||||
| 	// RecordOne captures a single synchronous metric event. | ||||
| 	RecordOne(ctx context.Context, number core.Number) | ||||
| 	RecordOne(ctx context.Context, number Number) | ||||
|  | ||||
| 	// Unbind frees the resources associated with this bound instrument. It | ||||
| 	// does not affect the metric this bound instrument was created through. | ||||
| @@ -97,13 +97,13 @@ type wrappedMeterImpl struct { | ||||
| // int64ObserverResult is an adapter for int64-valued asynchronous | ||||
| // callbacks. | ||||
| type int64ObserverResult struct { | ||||
| 	observe func(core.Number, []core.KeyValue) | ||||
| 	observe func(Number, []core.KeyValue) | ||||
| } | ||||
|  | ||||
| // float64ObserverResult is an adapter for float64-valued asynchronous | ||||
| // callbacks. | ||||
| type float64ObserverResult struct { | ||||
| 	observe func(core.Number, []core.KeyValue) | ||||
| 	observe func(Number, []core.KeyValue) | ||||
| } | ||||
|  | ||||
| var ( | ||||
| @@ -134,7 +134,7 @@ func (m *wrappedMeterImpl) RecordBatch(ctx context.Context, ls []core.KeyValue, | ||||
| 	m.impl.RecordBatch(ctx, ls, ms...) | ||||
| } | ||||
|  | ||||
| func (m *wrappedMeterImpl) newSync(name string, metricKind Kind, numberKind core.NumberKind, opts []Option) (SyncImpl, error) { | ||||
| func (m *wrappedMeterImpl) newSync(name string, metricKind Kind, numberKind NumberKind, opts []Option) (SyncImpl, error) { | ||||
| 	desc := NewDescriptor(name, metricKind, numberKind, opts...) | ||||
| 	desc.config.LibraryName = m.libraryName | ||||
| 	return m.impl.NewSyncInstrument(desc) | ||||
| @@ -142,7 +142,7 @@ func (m *wrappedMeterImpl) newSync(name string, metricKind Kind, numberKind core | ||||
|  | ||||
| func (m *wrappedMeterImpl) NewInt64Counter(name string, opts ...Option) (Int64Counter, error) { | ||||
| 	return WrapInt64CounterInstrument( | ||||
| 		m.newSync(name, CounterKind, core.Int64NumberKind, opts)) | ||||
| 		m.newSync(name, CounterKind, Int64NumberKind, opts)) | ||||
| } | ||||
|  | ||||
| // WrapInt64CounterInstrument returns an `Int64Counter` from a | ||||
| @@ -156,7 +156,7 @@ func WrapInt64CounterInstrument(syncInst SyncImpl, err error) (Int64Counter, err | ||||
|  | ||||
| func (m *wrappedMeterImpl) NewFloat64Counter(name string, opts ...Option) (Float64Counter, error) { | ||||
| 	return WrapFloat64CounterInstrument( | ||||
| 		m.newSync(name, CounterKind, core.Float64NumberKind, opts)) | ||||
| 		m.newSync(name, CounterKind, Float64NumberKind, opts)) | ||||
| } | ||||
|  | ||||
| // WrapFloat64CounterInstrument returns an `Float64Counter` from a | ||||
| @@ -170,7 +170,7 @@ func WrapFloat64CounterInstrument(syncInst SyncImpl, err error) (Float64Counter, | ||||
|  | ||||
| func (m *wrappedMeterImpl) NewInt64Measure(name string, opts ...Option) (Int64Measure, error) { | ||||
| 	return WrapInt64MeasureInstrument( | ||||
| 		m.newSync(name, MeasureKind, core.Int64NumberKind, opts)) | ||||
| 		m.newSync(name, MeasureKind, Int64NumberKind, opts)) | ||||
| } | ||||
|  | ||||
| // WrapInt64MeasureInstrument returns an `Int64Measure` from a | ||||
| @@ -184,7 +184,7 @@ func WrapInt64MeasureInstrument(syncInst SyncImpl, err error) (Int64Measure, err | ||||
|  | ||||
| func (m *wrappedMeterImpl) NewFloat64Measure(name string, opts ...Option) (Float64Measure, error) { | ||||
| 	return WrapFloat64MeasureInstrument( | ||||
| 		m.newSync(name, MeasureKind, core.Float64NumberKind, opts)) | ||||
| 		m.newSync(name, MeasureKind, Float64NumberKind, opts)) | ||||
| } | ||||
|  | ||||
| // WrapFloat64MeasureInstrument returns an `Float64Measure` from a | ||||
| @@ -196,7 +196,7 @@ func WrapFloat64MeasureInstrument(syncInst SyncImpl, err error) (Float64Measure, | ||||
| 	return Float64Measure{syncInstrument: common}, err | ||||
| } | ||||
|  | ||||
| func (m *wrappedMeterImpl) newAsync(name string, mkind Kind, nkind core.NumberKind, opts []Option, callback func(func(core.Number, []core.KeyValue))) (AsyncImpl, error) { | ||||
| func (m *wrappedMeterImpl) newAsync(name string, mkind Kind, nkind NumberKind, opts []Option, callback func(func(Number, []core.KeyValue))) (AsyncImpl, error) { | ||||
| 	desc := NewDescriptor(name, mkind, nkind, opts...) | ||||
| 	desc.config.LibraryName = m.libraryName | ||||
| 	return m.impl.NewAsyncInstrument(desc, callback) | ||||
| @@ -207,8 +207,8 @@ func (m *wrappedMeterImpl) RegisterInt64Observer(name string, callback Int64Obse | ||||
| 		return NoopMeter{}.RegisterInt64Observer("", nil) | ||||
| 	} | ||||
| 	return WrapInt64ObserverInstrument( | ||||
| 		m.newAsync(name, ObserverKind, core.Int64NumberKind, opts, | ||||
| 			func(observe func(core.Number, []core.KeyValue)) { | ||||
| 		m.newAsync(name, ObserverKind, Int64NumberKind, opts, | ||||
| 			func(observe func(Number, []core.KeyValue)) { | ||||
| 				// Note: this memory allocation could be avoided by | ||||
| 				// using a pointer to this object and mutating it | ||||
| 				// on each collection interval. | ||||
| @@ -230,8 +230,8 @@ func (m *wrappedMeterImpl) RegisterFloat64Observer(name string, callback Float64 | ||||
| 		return NoopMeter{}.RegisterFloat64Observer("", nil) | ||||
| 	} | ||||
| 	return WrapFloat64ObserverInstrument( | ||||
| 		m.newAsync(name, ObserverKind, core.Float64NumberKind, opts, | ||||
| 			func(observe func(core.Number, []core.KeyValue)) { | ||||
| 		m.newAsync(name, ObserverKind, Float64NumberKind, opts, | ||||
| 			func(observe func(Number, []core.KeyValue)) { | ||||
| 				callback(float64ObserverResult{observe}) | ||||
| 			})) | ||||
| } | ||||
| @@ -246,9 +246,9 @@ func WrapFloat64ObserverInstrument(asyncInst AsyncImpl, err error) (Float64Obser | ||||
| } | ||||
|  | ||||
| func (io int64ObserverResult) Observe(value int64, labels ...core.KeyValue) { | ||||
| 	io.observe(core.NewInt64Number(value), labels) | ||||
| 	io.observe(NewInt64Number(value), labels) | ||||
| } | ||||
|  | ||||
| func (fo float64ObserverResult) Observe(value float64, labels ...core.KeyValue) { | ||||
| 	fo.observe(core.NewFloat64Number(value), labels) | ||||
| 	fo.observe(NewFloat64Number(value), labels) | ||||
| } | ||||
|   | ||||
| @@ -20,10 +20,11 @@ import ( | ||||
| 	"net/http" | ||||
| 	"time" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
|  | ||||
| 	"github.com/prometheus/client_golang/prometheus" | ||||
| 	"github.com/prometheus/client_golang/prometheus/promhttp" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/global" | ||||
| 	"go.opentelemetry.io/otel/api/label" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| @@ -46,7 +47,7 @@ type Exporter struct { | ||||
| 	onError  func(error) | ||||
|  | ||||
| 	defaultSummaryQuantiles    []float64 | ||||
| 	defaultHistogramBoundaries []core.Number | ||||
| 	defaultHistogramBoundaries []metric.Number | ||||
| } | ||||
|  | ||||
| var _ export.Exporter = &Exporter{} | ||||
| @@ -78,7 +79,7 @@ type Config struct { | ||||
|  | ||||
| 	// DefaultHistogramBoundaries defines the default histogram bucket | ||||
| 	// boundaries. | ||||
| 	DefaultHistogramBoundaries []core.Number | ||||
| 	DefaultHistogramBoundaries []metric.Number | ||||
|  | ||||
| 	// OnError is a function that handle errors that may occur while exporting metrics. | ||||
| 	// TODO: This should be refactored or even removed once we have a better error handling mechanism. | ||||
| @@ -245,7 +246,7 @@ func (c *collector) Collect(ch chan<- prometheus.Metric) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (c *collector) exportLastValue(ch chan<- prometheus.Metric, lvagg aggregator.LastValue, kind core.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| func (c *collector) exportLastValue(ch chan<- prometheus.Metric, lvagg aggregator.LastValue, kind metric.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| 	lv, _, err := lvagg.LastValue() | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("error retrieving last value: %w", err) | ||||
| @@ -260,7 +261,7 @@ func (c *collector) exportLastValue(ch chan<- prometheus.Metric, lvagg aggregato | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c *collector) exportCounter(ch chan<- prometheus.Metric, sum aggregator.Sum, kind core.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| func (c *collector) exportCounter(ch chan<- prometheus.Metric, sum aggregator.Sum, kind metric.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| 	v, err := sum.Sum() | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("error retrieving counter: %w", err) | ||||
| @@ -275,13 +276,13 @@ func (c *collector) exportCounter(ch chan<- prometheus.Metric, sum aggregator.Su | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c *collector) exportSummary(ch chan<- prometheus.Metric, dist aggregator.Distribution, kind core.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| func (c *collector) exportSummary(ch chan<- prometheus.Metric, dist aggregator.Distribution, kind metric.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| 	count, err := dist.Count() | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("error retrieving count: %w", err) | ||||
| 	} | ||||
|  | ||||
| 	var sum core.Number | ||||
| 	var sum metric.Number | ||||
| 	sum, err = dist.Sum() | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("error retrieving distribution sum: %w", err) | ||||
| @@ -302,7 +303,7 @@ func (c *collector) exportSummary(ch chan<- prometheus.Metric, dist aggregator.D | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c *collector) exportHistogram(ch chan<- prometheus.Metric, hist aggregator.Histogram, kind core.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| func (c *collector) exportHistogram(ch chan<- prometheus.Metric, hist aggregator.Histogram, kind metric.NumberKind, desc *prometheus.Desc, labels []string) error { | ||||
| 	buckets, err := hist.Histogram() | ||||
| 	if err != nil { | ||||
| 		return fmt.Errorf("error retrieving histogram: %w", err) | ||||
|   | ||||
| @@ -43,13 +43,13 @@ func TestPrometheusExporter(t *testing.T) { | ||||
| 	checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 	counter := metric.NewDescriptor( | ||||
| 		"counter", metric.CounterKind, core.Float64NumberKind) | ||||
| 		"counter", metric.CounterKind, metric.Float64NumberKind) | ||||
| 	lastValue := metric.NewDescriptor( | ||||
| 		"lastvalue", metric.ObserverKind, core.Float64NumberKind) | ||||
| 		"lastvalue", metric.ObserverKind, metric.Float64NumberKind) | ||||
| 	measure := metric.NewDescriptor( | ||||
| 		"measure", metric.MeasureKind, core.Float64NumberKind) | ||||
| 		"measure", metric.MeasureKind, metric.Float64NumberKind) | ||||
| 	histogramMeasure := metric.NewDescriptor( | ||||
| 		"histogram_measure", metric.MeasureKind, core.Float64NumberKind) | ||||
| 		"histogram_measure", metric.MeasureKind, metric.Float64NumberKind) | ||||
|  | ||||
| 	labels := []core.KeyValue{ | ||||
| 		key.New("A").String("B"), | ||||
| @@ -71,7 +71,7 @@ func TestPrometheusExporter(t *testing.T) { | ||||
| 	expected = append(expected, `measure_sum{A="B",C="D"} 45`) | ||||
| 	expected = append(expected, `measure_count{A="B",C="D"} 3`) | ||||
|  | ||||
| 	boundaries := []core.Number{core.NewFloat64Number(-0.5), core.NewFloat64Number(1)} | ||||
| 	boundaries := []metric.Number{metric.NewFloat64Number(-0.5), metric.NewFloat64Number(1)} | ||||
| 	checkpointSet.AddHistogramMeasure(&histogramMeasure, boundaries, -0.6, labels...) | ||||
| 	checkpointSet.AddHistogramMeasure(&histogramMeasure, boundaries, -0.4, labels...) | ||||
| 	checkpointSet.AddHistogramMeasure(&histogramMeasure, boundaries, 0.6, labels...) | ||||
| @@ -101,7 +101,7 @@ func TestPrometheusExporter(t *testing.T) { | ||||
| 	expected = append(expected, `measure_count{A="E",C=""} 1`) | ||||
| 	expected = append(expected, `measure_sum{A="E",C=""} 19`) | ||||
|  | ||||
| 	boundaries = []core.Number{core.NewFloat64Number(0), core.NewFloat64Number(1)} | ||||
| 	boundaries = []metric.Number{metric.NewFloat64Number(0), metric.NewFloat64Number(1)} | ||||
| 	checkpointSet.AddHistogramMeasure(&histogramMeasure, boundaries, -0.6, missingLabels...) | ||||
| 	checkpointSet.AddHistogramMeasure(&histogramMeasure, boundaries, -0.4, missingLabels...) | ||||
| 	checkpointSet.AddHistogramMeasure(&histogramMeasure, boundaries, -0.1, missingLabels...) | ||||
|   | ||||
| @@ -99,9 +99,9 @@ func TestStdoutTimestamp(t *testing.T) { | ||||
| 	checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 	ctx := context.Background() | ||||
| 	desc := metric.NewDescriptor("test.name", metric.ObserverKind, core.Int64NumberKind) | ||||
| 	desc := metric.NewDescriptor("test.name", metric.ObserverKind, metric.Int64NumberKind) | ||||
| 	lvagg := lastvalue.New() | ||||
| 	aggtest.CheckedUpdate(t, lvagg, core.NewInt64Number(321), &desc) | ||||
| 	aggtest.CheckedUpdate(t, lvagg, metric.NewInt64Number(321), &desc) | ||||
| 	lvagg.Checkpoint(ctx, &desc) | ||||
|  | ||||
| 	checkpointSet.Add(&desc, lvagg) | ||||
| @@ -144,9 +144,9 @@ func TestStdoutCounterFormat(t *testing.T) { | ||||
|  | ||||
| 	checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 	desc := metric.NewDescriptor("test.name", metric.CounterKind, core.Int64NumberKind) | ||||
| 	desc := metric.NewDescriptor("test.name", metric.CounterKind, metric.Int64NumberKind) | ||||
| 	cagg := sum.New() | ||||
| 	aggtest.CheckedUpdate(fix.t, cagg, core.NewInt64Number(123), &desc) | ||||
| 	aggtest.CheckedUpdate(fix.t, cagg, metric.NewInt64Number(123), &desc) | ||||
| 	cagg.Checkpoint(fix.ctx, &desc) | ||||
|  | ||||
| 	checkpointSet.Add(&desc, cagg, key.String("A", "B"), key.String("C", "D")) | ||||
| @@ -161,9 +161,9 @@ func TestStdoutLastValueFormat(t *testing.T) { | ||||
|  | ||||
| 	checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 	desc := metric.NewDescriptor("test.name", metric.ObserverKind, core.Float64NumberKind) | ||||
| 	desc := metric.NewDescriptor("test.name", metric.ObserverKind, metric.Float64NumberKind) | ||||
| 	lvagg := lastvalue.New() | ||||
| 	aggtest.CheckedUpdate(fix.t, lvagg, core.NewFloat64Number(123.456), &desc) | ||||
| 	aggtest.CheckedUpdate(fix.t, lvagg, metric.NewFloat64Number(123.456), &desc) | ||||
| 	lvagg.Checkpoint(fix.ctx, &desc) | ||||
|  | ||||
| 	checkpointSet.Add(&desc, lvagg, key.String("A", "B"), key.String("C", "D")) | ||||
| @@ -178,10 +178,10 @@ func TestStdoutMinMaxSumCount(t *testing.T) { | ||||
|  | ||||
| 	checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 	desc := metric.NewDescriptor("test.name", metric.MeasureKind, core.Float64NumberKind) | ||||
| 	desc := metric.NewDescriptor("test.name", metric.MeasureKind, metric.Float64NumberKind) | ||||
| 	magg := minmaxsumcount.New(&desc) | ||||
| 	aggtest.CheckedUpdate(fix.t, magg, core.NewFloat64Number(123.456), &desc) | ||||
| 	aggtest.CheckedUpdate(fix.t, magg, core.NewFloat64Number(876.543), &desc) | ||||
| 	aggtest.CheckedUpdate(fix.t, magg, metric.NewFloat64Number(123.456), &desc) | ||||
| 	aggtest.CheckedUpdate(fix.t, magg, metric.NewFloat64Number(876.543), &desc) | ||||
| 	magg.Checkpoint(fix.ctx, &desc) | ||||
|  | ||||
| 	checkpointSet.Add(&desc, magg, key.String("A", "B"), key.String("C", "D")) | ||||
| @@ -198,11 +198,11 @@ func TestStdoutMeasureFormat(t *testing.T) { | ||||
|  | ||||
| 	checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 	desc := metric.NewDescriptor("test.name", metric.MeasureKind, core.Float64NumberKind) | ||||
| 	desc := metric.NewDescriptor("test.name", metric.MeasureKind, metric.Float64NumberKind) | ||||
| 	magg := array.New() | ||||
|  | ||||
| 	for i := 0; i < 1000; i++ { | ||||
| 		aggtest.CheckedUpdate(fix.t, magg, core.NewFloat64Number(float64(i)+0.5), &desc) | ||||
| 		aggtest.CheckedUpdate(fix.t, magg, metric.NewFloat64Number(float64(i)+0.5), &desc) | ||||
| 	} | ||||
|  | ||||
| 	magg.Checkpoint(fix.ctx, &desc) | ||||
| @@ -239,7 +239,7 @@ func TestStdoutMeasureFormat(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestStdoutNoData(t *testing.T) { | ||||
| 	desc := metric.NewDescriptor("test.name", metric.MeasureKind, core.Float64NumberKind) | ||||
| 	desc := metric.NewDescriptor("test.name", metric.MeasureKind, metric.Float64NumberKind) | ||||
| 	for name, tc := range map[string]export.Aggregator{ | ||||
| 		"ddsketch":       ddsketch.New(ddsketch.NewDefaultConfig(), &desc), | ||||
| 		"minmaxsumcount": minmaxsumcount.New(&desc), | ||||
| @@ -269,7 +269,7 @@ func TestStdoutLastValueNotSet(t *testing.T) { | ||||
|  | ||||
| 	checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 	desc := metric.NewDescriptor("test.name", metric.ObserverKind, core.Float64NumberKind) | ||||
| 	desc := metric.NewDescriptor("test.name", metric.ObserverKind, metric.Float64NumberKind) | ||||
| 	lvagg := lastvalue.New() | ||||
| 	lvagg.Checkpoint(fix.ctx, &desc) | ||||
|  | ||||
| @@ -319,9 +319,9 @@ func TestStdoutResource(t *testing.T) { | ||||
|  | ||||
| 		checkpointSet := test.NewCheckpointSet() | ||||
|  | ||||
| 		desc := metric.NewDescriptor("test.name", metric.ObserverKind, core.Float64NumberKind) | ||||
| 		desc := metric.NewDescriptor("test.name", metric.ObserverKind, metric.Float64NumberKind) | ||||
| 		lvagg := lastvalue.New() | ||||
| 		aggtest.CheckedUpdate(fix.t, lvagg, core.NewFloat64Number(123.456), &desc) | ||||
| 		aggtest.CheckedUpdate(fix.t, lvagg, metric.NewFloat64Number(123.456), &desc) | ||||
| 		lvagg.Checkpoint(fix.ctx, &desc) | ||||
|  | ||||
| 		checkpointSet.Add(&desc, lvagg, tc.attrs...) | ||||
|   | ||||
| @@ -73,11 +73,11 @@ func (p *CheckpointSet) Add(desc *metric.Descriptor, newAgg export.Aggregator, l | ||||
| 	return newAgg, true | ||||
| } | ||||
|  | ||||
| func createNumber(desc *metric.Descriptor, v float64) core.Number { | ||||
| 	if desc.NumberKind() == core.Float64NumberKind { | ||||
| 		return core.NewFloat64Number(v) | ||||
| func createNumber(desc *metric.Descriptor, v float64) metric.Number { | ||||
| 	if desc.NumberKind() == metric.Float64NumberKind { | ||||
| 		return metric.NewFloat64Number(v) | ||||
| 	} | ||||
| 	return core.NewInt64Number(int64(v)) | ||||
| 	return metric.NewInt64Number(int64(v)) | ||||
| } | ||||
|  | ||||
| func (p *CheckpointSet) AddLastValue(desc *metric.Descriptor, v float64, labels ...core.KeyValue) { | ||||
| @@ -92,7 +92,7 @@ func (p *CheckpointSet) AddMeasure(desc *metric.Descriptor, v float64, labels .. | ||||
| 	p.updateAggregator(desc, array.New(), v, labels...) | ||||
| } | ||||
|  | ||||
| func (p *CheckpointSet) AddHistogramMeasure(desc *metric.Descriptor, boundaries []core.Number, v float64, labels ...core.KeyValue) { | ||||
| func (p *CheckpointSet) AddHistogramMeasure(desc *metric.Descriptor, boundaries []metric.Number, v float64, labels ...core.KeyValue) { | ||||
| 	p.updateAggregator(desc, histogram.New(desc, boundaries), v, labels...) | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -27,7 +27,6 @@ import ( | ||||
| 	metricpb "github.com/open-telemetry/opentelemetry-proto/gen/go/metrics/v1" | ||||
| 	resourcepb "github.com/open-telemetry/opentelemetry-proto/gen/go/resource/v1" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/label" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| @@ -257,12 +256,12 @@ func sum(desc *metric.Descriptor, labels *label.Set, a aggregator.Sum) (*metricp | ||||
| 	} | ||||
|  | ||||
| 	switch n := desc.NumberKind(); n { | ||||
| 	case core.Int64NumberKind, core.Uint64NumberKind: | ||||
| 	case metric.Int64NumberKind, metric.Uint64NumberKind: | ||||
| 		m.MetricDescriptor.Type = metricpb.MetricDescriptor_COUNTER_INT64 | ||||
| 		m.Int64DataPoints = []*metricpb.Int64DataPoint{ | ||||
| 			{Value: sum.CoerceToInt64(n)}, | ||||
| 		} | ||||
| 	case core.Float64NumberKind: | ||||
| 	case metric.Float64NumberKind: | ||||
| 		m.MetricDescriptor.Type = metricpb.MetricDescriptor_COUNTER_DOUBLE | ||||
| 		m.DoubleDataPoints = []*metricpb.DoubleDataPoint{ | ||||
| 			{Value: sum.CoerceToFloat64(n)}, | ||||
| @@ -276,7 +275,7 @@ func sum(desc *metric.Descriptor, labels *label.Set, a aggregator.Sum) (*metricp | ||||
|  | ||||
| // minMaxSumCountValue returns the values of the MinMaxSumCount Aggregator | ||||
| // as discret values. | ||||
| func minMaxSumCountValues(a aggregator.MinMaxSumCount) (min, max, sum core.Number, count int64, err error) { | ||||
| func minMaxSumCountValues(a aggregator.MinMaxSumCount) (min, max, sum metric.Number, count int64, err error) { | ||||
| 	if min, err = a.Min(); err != nil { | ||||
| 		return | ||||
| 	} | ||||
|   | ||||
| @@ -93,9 +93,9 @@ func TestMinMaxSumCountValue(t *testing.T) { | ||||
| 	mmsc.Checkpoint(context.Background(), &metric.Descriptor{}) | ||||
| 	min, max, sum, count, err := minMaxSumCountValues(mmsc) | ||||
| 	if assert.NoError(t, err) { | ||||
| 		assert.Equal(t, min, core.NewInt64Number(1)) | ||||
| 		assert.Equal(t, max, core.NewInt64Number(10)) | ||||
| 		assert.Equal(t, sum, core.NewInt64Number(11)) | ||||
| 		assert.Equal(t, min, metric.NewInt64Number(1)) | ||||
| 		assert.Equal(t, max, metric.NewInt64Number(10)) | ||||
| 		assert.Equal(t, sum, metric.NewInt64Number(11)) | ||||
| 		assert.Equal(t, count, int64(2)) | ||||
| 	} | ||||
| } | ||||
| @@ -106,7 +106,7 @@ func TestMinMaxSumCountMetricDescriptor(t *testing.T) { | ||||
| 		metricKind  metric.Kind | ||||
| 		description string | ||||
| 		unit        unit.Unit | ||||
| 		numberKind  core.NumberKind | ||||
| 		numberKind  metric.NumberKind | ||||
| 		labels      []core.KeyValue | ||||
| 		expected    *metricpb.MetricDescriptor | ||||
| 	}{ | ||||
| @@ -115,7 +115,7 @@ func TestMinMaxSumCountMetricDescriptor(t *testing.T) { | ||||
| 			metric.MeasureKind, | ||||
| 			"test-a-description", | ||||
| 			unit.Dimensionless, | ||||
| 			core.Int64NumberKind, | ||||
| 			metric.Int64NumberKind, | ||||
| 			[]core.KeyValue{}, | ||||
| 			&metricpb.MetricDescriptor{ | ||||
| 				Name:        "mmsc-test-a", | ||||
| @@ -130,7 +130,7 @@ func TestMinMaxSumCountMetricDescriptor(t *testing.T) { | ||||
| 			metric.CounterKind, // This shouldn't change anything. | ||||
| 			"test-b-description", | ||||
| 			unit.Bytes, | ||||
| 			core.Float64NumberKind, // This shouldn't change anything. | ||||
| 			metric.Float64NumberKind, // This shouldn't change anything. | ||||
| 			[]core.KeyValue{key.String("A", "1")}, | ||||
| 			&metricpb.MetricDescriptor{ | ||||
| 				Name:        "mmsc-test-b", | ||||
| @@ -161,7 +161,7 @@ func TestMinMaxSumCountMetricDescriptor(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestMinMaxSumCountDatapoints(t *testing.T) { | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, core.Int64NumberKind) | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, metric.Int64NumberKind) | ||||
| 	labels := label.NewSet() | ||||
| 	mmsc := minmaxsumcount.New(&desc) | ||||
| 	assert.NoError(t, mmsc.Update(context.Background(), 1, &desc)) | ||||
| @@ -208,7 +208,7 @@ func TestSumMetricDescriptor(t *testing.T) { | ||||
| 		metricKind  metric.Kind | ||||
| 		description string | ||||
| 		unit        unit.Unit | ||||
| 		numberKind  core.NumberKind | ||||
| 		numberKind  metric.NumberKind | ||||
| 		labels      []core.KeyValue | ||||
| 		expected    *metricpb.MetricDescriptor | ||||
| 	}{ | ||||
| @@ -217,7 +217,7 @@ func TestSumMetricDescriptor(t *testing.T) { | ||||
| 			metric.CounterKind, | ||||
| 			"test-a-description", | ||||
| 			unit.Dimensionless, | ||||
| 			core.Int64NumberKind, | ||||
| 			metric.Int64NumberKind, | ||||
| 			[]core.KeyValue{}, | ||||
| 			&metricpb.MetricDescriptor{ | ||||
| 				Name:        "sum-test-a", | ||||
| @@ -232,7 +232,7 @@ func TestSumMetricDescriptor(t *testing.T) { | ||||
| 			metric.MeasureKind, // This shouldn't change anything. | ||||
| 			"test-b-description", | ||||
| 			unit.Milliseconds, | ||||
| 			core.Float64NumberKind, | ||||
| 			metric.Float64NumberKind, | ||||
| 			[]core.KeyValue{key.String("A", "1")}, | ||||
| 			&metricpb.MetricDescriptor{ | ||||
| 				Name:        "sum-test-b", | ||||
| @@ -258,10 +258,10 @@ func TestSumMetricDescriptor(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestSumInt64DataPoints(t *testing.T) { | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, core.Int64NumberKind) | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, metric.Int64NumberKind) | ||||
| 	labels := label.NewSet() | ||||
| 	s := sumAgg.New() | ||||
| 	assert.NoError(t, s.Update(context.Background(), core.Number(1), &desc)) | ||||
| 	assert.NoError(t, s.Update(context.Background(), metric.Number(1), &desc)) | ||||
| 	s.Checkpoint(context.Background(), &desc) | ||||
| 	if m, err := sum(&desc, &labels, s); assert.NoError(t, err) { | ||||
| 		assert.Equal(t, []*metricpb.Int64DataPoint{{Value: 1}}, m.Int64DataPoints) | ||||
| @@ -272,10 +272,10 @@ func TestSumInt64DataPoints(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestSumFloat64DataPoints(t *testing.T) { | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, core.Float64NumberKind) | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, metric.Float64NumberKind) | ||||
| 	labels := label.NewSet() | ||||
| 	s := sumAgg.New() | ||||
| 	assert.NoError(t, s.Update(context.Background(), core.NewFloat64Number(1), &desc)) | ||||
| 	assert.NoError(t, s.Update(context.Background(), metric.NewFloat64Number(1), &desc)) | ||||
| 	s.Checkpoint(context.Background(), &desc) | ||||
| 	if m, err := sum(&desc, &labels, s); assert.NoError(t, err) { | ||||
| 		assert.Equal(t, []*metricpb.Int64DataPoint(nil), m.Int64DataPoints) | ||||
| @@ -286,7 +286,7 @@ func TestSumFloat64DataPoints(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestSumErrUnknownValueType(t *testing.T) { | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, core.NumberKind(-1)) | ||||
| 	desc := metric.NewDescriptor("", metric.MeasureKind, metric.NumberKind(-1)) | ||||
| 	labels := label.NewSet() | ||||
| 	s := sumAgg.New() | ||||
| 	_, err := sum(&desc, &labels, s) | ||||
|   | ||||
| @@ -121,45 +121,45 @@ func newExporterEndToEndTest(t *testing.T, additionalOpts []otlp.ExporterOption) | ||||
|  | ||||
| 	type data struct { | ||||
| 		iKind metric.Kind | ||||
| 		nKind core.NumberKind | ||||
| 		nKind metricapi.NumberKind | ||||
| 		val   int64 | ||||
| 	} | ||||
| 	instruments := map[string]data{ | ||||
| 		"test-int64-counter":    {metric.CounterKind, core.Int64NumberKind, 1}, | ||||
| 		"test-float64-counter":  {metric.CounterKind, core.Float64NumberKind, 1}, | ||||
| 		"test-int64-measure":    {metric.MeasureKind, core.Int64NumberKind, 2}, | ||||
| 		"test-float64-measure":  {metric.MeasureKind, core.Float64NumberKind, 2}, | ||||
| 		"test-int64-observer":   {metric.ObserverKind, core.Int64NumberKind, 3}, | ||||
| 		"test-float64-observer": {metric.ObserverKind, core.Float64NumberKind, 3}, | ||||
| 		"test-int64-counter":    {metric.CounterKind, metricapi.Int64NumberKind, 1}, | ||||
| 		"test-float64-counter":  {metric.CounterKind, metricapi.Float64NumberKind, 1}, | ||||
| 		"test-int64-measure":    {metric.MeasureKind, metricapi.Int64NumberKind, 2}, | ||||
| 		"test-float64-measure":  {metric.MeasureKind, metricapi.Float64NumberKind, 2}, | ||||
| 		"test-int64-observer":   {metric.ObserverKind, metricapi.Int64NumberKind, 3}, | ||||
| 		"test-float64-observer": {metric.ObserverKind, metricapi.Float64NumberKind, 3}, | ||||
| 	} | ||||
| 	for name, data := range instruments { | ||||
| 		switch data.iKind { | ||||
| 		case metric.CounterKind: | ||||
| 			switch data.nKind { | ||||
| 			case core.Int64NumberKind: | ||||
| 			case metricapi.Int64NumberKind: | ||||
| 				metricapi.Must(meter).NewInt64Counter(name).Add(ctx, data.val, labels...) | ||||
| 			case core.Float64NumberKind: | ||||
| 			case metricapi.Float64NumberKind: | ||||
| 				metricapi.Must(meter).NewFloat64Counter(name).Add(ctx, float64(data.val), labels...) | ||||
| 			default: | ||||
| 				assert.Failf(t, "unsupported number testing kind", data.nKind.String()) | ||||
| 			} | ||||
| 		case metric.MeasureKind: | ||||
| 			switch data.nKind { | ||||
| 			case core.Int64NumberKind: | ||||
| 			case metricapi.Int64NumberKind: | ||||
| 				metricapi.Must(meter).NewInt64Measure(name).Record(ctx, data.val, labels...) | ||||
| 			case core.Float64NumberKind: | ||||
| 			case metricapi.Float64NumberKind: | ||||
| 				metricapi.Must(meter).NewFloat64Measure(name).Record(ctx, float64(data.val), labels...) | ||||
| 			default: | ||||
| 				assert.Failf(t, "unsupported number testing kind", data.nKind.String()) | ||||
| 			} | ||||
| 		case metric.ObserverKind: | ||||
| 			switch data.nKind { | ||||
| 			case core.Int64NumberKind: | ||||
| 			case metricapi.Int64NumberKind: | ||||
| 				callback := func(v int64) metricapi.Int64ObserverCallback { | ||||
| 					return metricapi.Int64ObserverCallback(func(result metricapi.Int64ObserverResult) { result.Observe(v, labels...) }) | ||||
| 				}(data.val) | ||||
| 				metricapi.Must(meter).RegisterInt64Observer(name, callback) | ||||
| 			case core.Float64NumberKind: | ||||
| 			case metricapi.Float64NumberKind: | ||||
| 				callback := func(v float64) metricapi.Float64ObserverCallback { | ||||
| 					return metricapi.Float64ObserverCallback(func(result metricapi.Float64ObserverResult) { result.Observe(v, labels...) }) | ||||
| 				}(float64(data.val)) | ||||
| @@ -234,12 +234,12 @@ func newExporterEndToEndTest(t *testing.T, additionalOpts []otlp.ExporterOption) | ||||
| 		switch data.iKind { | ||||
| 		case metric.CounterKind: | ||||
| 			switch data.nKind { | ||||
| 			case core.Int64NumberKind: | ||||
| 			case metricapi.Int64NumberKind: | ||||
| 				assert.Equal(t, metricpb.MetricDescriptor_COUNTER_INT64.String(), desc.GetType().String()) | ||||
| 				if dp := m.GetInt64DataPoints(); assert.Len(t, dp, 1) { | ||||
| 					assert.Equal(t, data.val, dp[0].Value, "invalid value for %q", desc.Name) | ||||
| 				} | ||||
| 			case core.Float64NumberKind: | ||||
| 			case metricapi.Float64NumberKind: | ||||
| 				assert.Equal(t, metricpb.MetricDescriptor_COUNTER_DOUBLE.String(), desc.GetType().String()) | ||||
| 				if dp := m.GetDoubleDataPoints(); assert.Len(t, dp, 1) { | ||||
| 					assert.Equal(t, float64(data.val), dp[0].Value, "invalid value for %q", desc.Name) | ||||
|   | ||||
| @@ -76,7 +76,7 @@ func (m checkpointSet) ForEach(fn func(metricsdk.Record) error) error { | ||||
| type record struct { | ||||
| 	name     string | ||||
| 	mKind    metric.Kind | ||||
| 	nKind    core.NumberKind | ||||
| 	nKind    metric.NumberKind | ||||
| 	resource *resource.Resource | ||||
| 	opts     []metric.Option | ||||
| 	labels   []core.KeyValue | ||||
| @@ -145,7 +145,7 @@ func TestNoGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				nil, | ||||
| 				nil, | ||||
| 				append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -153,7 +153,7 @@ func TestNoGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				nil, | ||||
| 				nil, | ||||
| 				append(baseKeyValues, cpuKey.Int(2)), | ||||
| @@ -193,7 +193,7 @@ func TestMeasureMetricGroupingExport(t *testing.T) { | ||||
| 	r := record{ | ||||
| 		"measure", | ||||
| 		metric.MeasureKind, | ||||
| 		core.Int64NumberKind, | ||||
| 		metric.Int64NumberKind, | ||||
| 		nil, | ||||
| 		nil, | ||||
| 		append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -257,9 +257,9 @@ func TestMeasureMetricGroupingExport(t *testing.T) { | ||||
| 	} | ||||
| 	runMetricExportTests(t, []record{r, r}, expected) | ||||
| 	//changing the number kind should make no difference. | ||||
| 	r.nKind = core.Uint64NumberKind | ||||
| 	r.nKind = metric.Uint64NumberKind | ||||
| 	runMetricExportTests(t, []record{r, r}, expected) | ||||
| 	r.nKind = core.Float64NumberKind | ||||
| 	r.nKind = metric.Float64NumberKind | ||||
| 	runMetricExportTests(t, []record{r, r}, expected) | ||||
| } | ||||
|  | ||||
| @@ -267,7 +267,7 @@ func TestCountInt64MetricGroupingExport(t *testing.T) { | ||||
| 	r := record{ | ||||
| 		"int64-count", | ||||
| 		metric.CounterKind, | ||||
| 		core.Int64NumberKind, | ||||
| 		metric.Int64NumberKind, | ||||
| 		nil, | ||||
| 		nil, | ||||
| 		append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -304,7 +304,7 @@ func TestCountUint64MetricGroupingExport(t *testing.T) { | ||||
| 	r := record{ | ||||
| 		"uint64-count", | ||||
| 		metric.CounterKind, | ||||
| 		core.Uint64NumberKind, | ||||
| 		metric.Uint64NumberKind, | ||||
| 		nil, | ||||
| 		nil, | ||||
| 		append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -354,7 +354,7 @@ func TestCountFloat64MetricGroupingExport(t *testing.T) { | ||||
| 	r := record{ | ||||
| 		"float64-count", | ||||
| 		metric.CounterKind, | ||||
| 		core.Float64NumberKind, | ||||
| 		metric.Float64NumberKind, | ||||
| 		nil, | ||||
| 		nil, | ||||
| 		append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -407,7 +407,7 @@ func TestResourceMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstA, | ||||
| 				nil, | ||||
| 				append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -415,7 +415,7 @@ func TestResourceMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstA, | ||||
| 				nil, | ||||
| 				append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -423,7 +423,7 @@ func TestResourceMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstA, | ||||
| 				nil, | ||||
| 				append(baseKeyValues, cpuKey.Int(2)), | ||||
| @@ -431,7 +431,7 @@ func TestResourceMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstB, | ||||
| 				nil, | ||||
| 				append(baseKeyValues, cpuKey.Int(1)), | ||||
| @@ -494,7 +494,7 @@ func TestResourceInstLibMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstA, | ||||
| 				[]metric.Option{ | ||||
| 					metric.WithLibraryName("couting-lib"), | ||||
| @@ -504,7 +504,7 @@ func TestResourceInstLibMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstA, | ||||
| 				[]metric.Option{ | ||||
| 					metric.WithLibraryName("couting-lib"), | ||||
| @@ -514,7 +514,7 @@ func TestResourceInstLibMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstA, | ||||
| 				[]metric.Option{ | ||||
| 					metric.WithLibraryName("couting-lib"), | ||||
| @@ -524,7 +524,7 @@ func TestResourceInstLibMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstA, | ||||
| 				[]metric.Option{ | ||||
| 					metric.WithLibraryName("summing-lib"), | ||||
| @@ -534,7 +534,7 @@ func TestResourceInstLibMetricGroupingExport(t *testing.T) { | ||||
| 			{ | ||||
| 				"int64-count", | ||||
| 				metric.CounterKind, | ||||
| 				core.Int64NumberKind, | ||||
| 				metric.Int64NumberKind, | ||||
| 				testInstB, | ||||
| 				[]metric.Option{ | ||||
| 					metric.WithLibraryName("couting-lib"), | ||||
| @@ -644,15 +644,15 @@ func runMetricExportTest(t *testing.T, exp *Exporter, rs []record, expected []me | ||||
|  | ||||
| 		ctx := context.Background() | ||||
| 		switch r.nKind { | ||||
| 		case core.Uint64NumberKind: | ||||
| 			require.NoError(t, agg.Update(ctx, core.NewUint64Number(1), &desc)) | ||||
| 			require.NoError(t, agg.Update(ctx, core.NewUint64Number(10), &desc)) | ||||
| 		case core.Int64NumberKind: | ||||
| 			require.NoError(t, agg.Update(ctx, core.NewInt64Number(1), &desc)) | ||||
| 			require.NoError(t, agg.Update(ctx, core.NewInt64Number(10), &desc)) | ||||
| 		case core.Float64NumberKind: | ||||
| 			require.NoError(t, agg.Update(ctx, core.NewFloat64Number(1), &desc)) | ||||
| 			require.NoError(t, agg.Update(ctx, core.NewFloat64Number(10), &desc)) | ||||
| 		case metric.Uint64NumberKind: | ||||
| 			require.NoError(t, agg.Update(ctx, metric.NewUint64Number(1), &desc)) | ||||
| 			require.NoError(t, agg.Update(ctx, metric.NewUint64Number(10), &desc)) | ||||
| 		case metric.Int64NumberKind: | ||||
| 			require.NoError(t, agg.Update(ctx, metric.NewInt64Number(1), &desc)) | ||||
| 			require.NoError(t, agg.Update(ctx, metric.NewInt64Number(10), &desc)) | ||||
| 		case metric.Float64NumberKind: | ||||
| 			require.NoError(t, agg.Update(ctx, metric.NewFloat64Number(1), &desc)) | ||||
| 			require.NoError(t, agg.Update(ctx, metric.NewFloat64Number(10), &desc)) | ||||
| 		default: | ||||
| 			t.Fatalf("invalid number kind: %v", r.nKind) | ||||
| 		} | ||||
|   | ||||
| @@ -52,7 +52,7 @@ type ( | ||||
|  | ||||
| 	Measurement struct { | ||||
| 		// Number needs to be aligned for 64-bit atomic operations. | ||||
| 		Number     core.Number | ||||
| 		Number     apimetric.Number | ||||
| 		Instrument apimetric.InstrumentImpl | ||||
| 	} | ||||
|  | ||||
| @@ -64,7 +64,7 @@ type ( | ||||
| 	Async struct { | ||||
| 		Instrument | ||||
|  | ||||
| 		callback func(func(core.Number, []core.KeyValue)) | ||||
| 		callback func(func(apimetric.Number, []core.KeyValue)) | ||||
| 	} | ||||
|  | ||||
| 	Sync struct { | ||||
| @@ -98,18 +98,18 @@ func (s *Sync) Bind(labels []core.KeyValue) apimetric.BoundSyncImpl { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (s *Sync) RecordOne(ctx context.Context, number core.Number, labels []core.KeyValue) { | ||||
| func (s *Sync) RecordOne(ctx context.Context, number apimetric.Number, labels []core.KeyValue) { | ||||
| 	s.meter.doRecordSingle(ctx, labels, s, number) | ||||
| } | ||||
|  | ||||
| func (h *Handle) RecordOne(ctx context.Context, number core.Number) { | ||||
| func (h *Handle) RecordOne(ctx context.Context, number apimetric.Number) { | ||||
| 	h.Instrument.meter.doRecordSingle(ctx, h.Labels, h.Instrument, number) | ||||
| } | ||||
|  | ||||
| func (h *Handle) Unbind() { | ||||
| } | ||||
|  | ||||
| func (m *MeterImpl) doRecordSingle(ctx context.Context, labels []core.KeyValue, instrument apimetric.InstrumentImpl, number core.Number) { | ||||
| func (m *MeterImpl) doRecordSingle(ctx context.Context, labels []core.KeyValue, instrument apimetric.InstrumentImpl, number apimetric.Number) { | ||||
| 	m.recordMockBatch(ctx, labels, Measurement{ | ||||
| 		Instrument: instrument, | ||||
| 		Number:     number, | ||||
| @@ -152,7 +152,7 @@ func (m *MeterImpl) NewSyncInstrument(descriptor metric.Descriptor) (apimetric.S | ||||
| 	}, nil | ||||
| } | ||||
|  | ||||
| func (m *MeterImpl) NewAsyncInstrument(descriptor metric.Descriptor, callback func(func(core.Number, []core.KeyValue))) (apimetric.AsyncImpl, error) { | ||||
| func (m *MeterImpl) NewAsyncInstrument(descriptor metric.Descriptor, callback func(func(apimetric.Number, []core.KeyValue))) (apimetric.AsyncImpl, error) { | ||||
| 	a := &Async{ | ||||
| 		Instrument: Instrument{ | ||||
| 			descriptor: descriptor, | ||||
| @@ -186,7 +186,7 @@ func (m *MeterImpl) recordMockBatch(ctx context.Context, labels []core.KeyValue, | ||||
|  | ||||
| func (m *MeterImpl) RunAsyncInstruments() { | ||||
| 	for _, observer := range m.AsyncInstruments { | ||||
| 		observer.callback(func(n core.Number, labels []core.KeyValue) { | ||||
| 		observer.callback(func(n apimetric.Number, labels []core.KeyValue) { | ||||
| 			m.doRecordSingle(context.Background(), labels, observer, n) | ||||
| 		}) | ||||
| 	} | ||||
|   | ||||
| @@ -19,7 +19,6 @@ import ( | ||||
| 	"math" | ||||
| 	"time" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| ) | ||||
| @@ -30,7 +29,7 @@ import ( | ||||
| type ( | ||||
| 	// Sum returns an aggregated sum. | ||||
| 	Sum interface { | ||||
| 		Sum() (core.Number, error) | ||||
| 		Sum() (metric.Number, error) | ||||
| 	} | ||||
|  | ||||
| 	// Sum returns the number of values that were aggregated. | ||||
| @@ -40,28 +39,28 @@ type ( | ||||
|  | ||||
| 	// Min returns the minimum value over the set of values that were aggregated. | ||||
| 	Min interface { | ||||
| 		Min() (core.Number, error) | ||||
| 		Min() (metric.Number, error) | ||||
| 	} | ||||
|  | ||||
| 	// Max returns the maximum value over the set of values that were aggregated. | ||||
| 	Max interface { | ||||
| 		Max() (core.Number, error) | ||||
| 		Max() (metric.Number, error) | ||||
| 	} | ||||
|  | ||||
| 	// Quantile returns an exact or estimated quantile over the | ||||
| 	// set of values that were aggregated. | ||||
| 	Quantile interface { | ||||
| 		Quantile(float64) (core.Number, error) | ||||
| 		Quantile(float64) (metric.Number, error) | ||||
| 	} | ||||
|  | ||||
| 	// LastValue returns the latest value that was aggregated. | ||||
| 	LastValue interface { | ||||
| 		LastValue() (core.Number, time.Time, error) | ||||
| 		LastValue() (metric.Number, time.Time, error) | ||||
| 	} | ||||
|  | ||||
| 	// Points returns the raw set of values that were aggregated. | ||||
| 	Points interface { | ||||
| 		Points() ([]core.Number, error) | ||||
| 		Points() ([]metric.Number, error) | ||||
| 	} | ||||
|  | ||||
| 	// Buckets represents histogram buckets boundaries and counts. | ||||
| @@ -69,8 +68,8 @@ type ( | ||||
| 	// For a Histogram with N defined boundaries, e.g, [x, y, z]. | ||||
| 	// There are N+1 counts: [-inf, x), [x, y), [y, z), [z, +inf] | ||||
| 	Buckets struct { | ||||
| 		Boundaries []core.Number | ||||
| 		Counts     []core.Number | ||||
| 		Boundaries []metric.Number | ||||
| 		Counts     []metric.Number | ||||
| 	} | ||||
|  | ||||
| 	// Histogram returns the count of events in pre-determined buckets. | ||||
| @@ -118,10 +117,10 @@ func NewInconsistentMergeError(a1, a2 export.Aggregator) error { | ||||
| // This rejects NaN values.  This rejects negative values when the | ||||
| // metric instrument does not support negative values, including | ||||
| // monotonic counter metrics and absolute measure metrics. | ||||
| func RangeTest(number core.Number, descriptor *metric.Descriptor) error { | ||||
| func RangeTest(number metric.Number, descriptor *metric.Descriptor) error { | ||||
| 	numberKind := descriptor.NumberKind() | ||||
|  | ||||
| 	if numberKind == core.Float64NumberKind && math.IsNaN(number.AsFloat64()) { | ||||
| 	if numberKind == metric.Float64NumberKind && math.IsNaN(number.AsFloat64()) { | ||||
| 		return ErrNaNInput | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -21,7 +21,6 @@ import ( | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/lastvalue" | ||||
| @@ -40,10 +39,10 @@ func TestInconsistentMergeErr(t *testing.T) { | ||||
|  | ||||
| func testRangeNaN(t *testing.T, desc *metric.Descriptor) { | ||||
| 	// If the descriptor uses int64 numbers, this won't register as NaN | ||||
| 	nan := core.NewFloat64Number(math.NaN()) | ||||
| 	nan := metric.NewFloat64Number(math.NaN()) | ||||
| 	err := aggregator.RangeTest(nan, desc) | ||||
|  | ||||
| 	if desc.NumberKind() == core.Float64NumberKind { | ||||
| 	if desc.NumberKind() == metric.Float64NumberKind { | ||||
| 		require.Equal(t, aggregator.ErrNaNInput, err) | ||||
| 	} else { | ||||
| 		require.Nil(t, err) | ||||
| @@ -51,14 +50,14 @@ func testRangeNaN(t *testing.T, desc *metric.Descriptor) { | ||||
| } | ||||
|  | ||||
| func testRangeNegative(t *testing.T, desc *metric.Descriptor) { | ||||
| 	var neg, pos core.Number | ||||
| 	var neg, pos metric.Number | ||||
|  | ||||
| 	if desc.NumberKind() == core.Float64NumberKind { | ||||
| 		pos = core.NewFloat64Number(+1) | ||||
| 		neg = core.NewFloat64Number(-1) | ||||
| 	if desc.NumberKind() == metric.Float64NumberKind { | ||||
| 		pos = metric.NewFloat64Number(+1) | ||||
| 		neg = metric.NewFloat64Number(-1) | ||||
| 	} else { | ||||
| 		pos = core.NewInt64Number(+1) | ||||
| 		neg = core.NewInt64Number(-1) | ||||
| 		pos = metric.NewInt64Number(+1) | ||||
| 		neg = metric.NewInt64Number(-1) | ||||
| 	} | ||||
|  | ||||
| 	posErr := aggregator.RangeTest(pos, desc) | ||||
| @@ -70,7 +69,7 @@ func testRangeNegative(t *testing.T, desc *metric.Descriptor) { | ||||
|  | ||||
| func TestRangeTest(t *testing.T) { | ||||
| 	// Only Counters implement a range test. | ||||
| 	for _, nkind := range []core.NumberKind{core.Float64NumberKind, core.Int64NumberKind} { | ||||
| 	for _, nkind := range []metric.NumberKind{metric.Float64NumberKind, metric.Int64NumberKind} { | ||||
| 		t.Run(nkind.String(), func(t *testing.T) { | ||||
| 			desc := metric.NewDescriptor( | ||||
| 				"name", | ||||
| @@ -83,7 +82,7 @@ func TestRangeTest(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestNaNTest(t *testing.T) { | ||||
| 	for _, nkind := range []core.NumberKind{core.Float64NumberKind, core.Int64NumberKind} { | ||||
| 	for _, nkind := range []metric.NumberKind{metric.Float64NumberKind, metric.Int64NumberKind} { | ||||
| 		t.Run(nkind.String(), func(t *testing.T) { | ||||
| 			for _, mkind := range []metric.Kind{ | ||||
| 				metric.CounterKind, | ||||
|   | ||||
| @@ -17,7 +17,6 @@ package metric // import "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/label" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/resource" | ||||
| @@ -127,7 +126,7 @@ type Aggregator interface { | ||||
| 	// | ||||
| 	// The Context argument comes from user-level code and could be | ||||
| 	// inspected for distributed or span context. | ||||
| 	Update(context.Context, core.Number, *metric.Descriptor) error | ||||
| 	Update(context.Context, metric.Number, *metric.Descriptor) error | ||||
|  | ||||
| 	// Checkpoint is called during collection to finish one period | ||||
| 	// of aggregation by atomically saving the current value. | ||||
|   | ||||
| @@ -21,7 +21,6 @@ import ( | ||||
| 	"sync" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| @@ -30,13 +29,13 @@ import ( | ||||
| type ( | ||||
| 	Aggregator struct { | ||||
| 		// ckptSum needs to be aligned for 64-bit atomic operations. | ||||
| 		ckptSum    core.Number | ||||
| 		ckptSum    metric.Number | ||||
| 		lock       sync.Mutex | ||||
| 		current    points | ||||
| 		checkpoint points | ||||
| 	} | ||||
|  | ||||
| 	points []core.Number | ||||
| 	points []metric.Number | ||||
| ) | ||||
|  | ||||
| var _ export.Aggregator = &Aggregator{} | ||||
| @@ -52,7 +51,7 @@ func New() *Aggregator { | ||||
| } | ||||
|  | ||||
| // Sum returns the sum of values in the checkpoint. | ||||
| func (c *Aggregator) Sum() (core.Number, error) { | ||||
| func (c *Aggregator) Sum() (metric.Number, error) { | ||||
| 	return c.ckptSum, nil | ||||
| } | ||||
|  | ||||
| @@ -62,23 +61,23 @@ func (c *Aggregator) Count() (int64, error) { | ||||
| } | ||||
|  | ||||
| // Max returns the maximum value in the checkpoint. | ||||
| func (c *Aggregator) Max() (core.Number, error) { | ||||
| func (c *Aggregator) Max() (metric.Number, error) { | ||||
| 	return c.checkpoint.Quantile(1) | ||||
| } | ||||
|  | ||||
| // Min returns the mininum value in the checkpoint. | ||||
| func (c *Aggregator) Min() (core.Number, error) { | ||||
| func (c *Aggregator) Min() (metric.Number, error) { | ||||
| 	return c.checkpoint.Quantile(0) | ||||
| } | ||||
|  | ||||
| // Quantile returns the estimated quantile of data in the checkpoint. | ||||
| // It is an error if `q` is less than 0 or greated than 1. | ||||
| func (c *Aggregator) Quantile(q float64) (core.Number, error) { | ||||
| func (c *Aggregator) Quantile(q float64) (metric.Number, error) { | ||||
| 	return c.checkpoint.Quantile(q) | ||||
| } | ||||
|  | ||||
| // Points returns access to the raw data set. | ||||
| func (c *Aggregator) Points() ([]core.Number, error) { | ||||
| func (c *Aggregator) Points() ([]metric.Number, error) { | ||||
| 	return c.checkpoint, nil | ||||
| } | ||||
|  | ||||
| @@ -97,7 +96,7 @@ func (c *Aggregator) Checkpoint(ctx context.Context, desc *metric.Descriptor) { | ||||
| 	// received as an alternative to requesting quantile information. | ||||
| 	c.sort(kind) | ||||
|  | ||||
| 	c.ckptSum = core.Number(0) | ||||
| 	c.ckptSum = metric.Number(0) | ||||
|  | ||||
| 	for _, v := range c.checkpoint { | ||||
| 		c.ckptSum.AddNumber(kind, v) | ||||
| @@ -107,7 +106,7 @@ func (c *Aggregator) Checkpoint(ctx context.Context, desc *metric.Descriptor) { | ||||
| // Update adds the recorded measurement to the current data set. | ||||
| // Update takes a lock to prevent concurrent Update() and Checkpoint() | ||||
| // calls. | ||||
| func (c *Aggregator) Update(_ context.Context, number core.Number, desc *metric.Descriptor) error { | ||||
| func (c *Aggregator) Update(_ context.Context, number metric.Number, desc *metric.Descriptor) error { | ||||
| 	c.lock.Lock() | ||||
| 	c.current = append(c.current, number) | ||||
| 	c.lock.Unlock() | ||||
| @@ -126,12 +125,12 @@ func (c *Aggregator) Merge(oa export.Aggregator, desc *metric.Descriptor) error | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func (c *Aggregator) sort(kind core.NumberKind) { | ||||
| func (c *Aggregator) sort(kind metric.NumberKind) { | ||||
| 	switch kind { | ||||
| 	case core.Float64NumberKind: | ||||
| 	case metric.Float64NumberKind: | ||||
| 		sort.Float64s(*(*[]float64)(unsafe.Pointer(&c.checkpoint))) | ||||
|  | ||||
| 	case core.Int64NumberKind: | ||||
| 	case metric.Int64NumberKind: | ||||
| 		sort.Sort(&c.checkpoint) | ||||
|  | ||||
| 	default: | ||||
| @@ -141,7 +140,7 @@ func (c *Aggregator) sort(kind core.NumberKind) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func combine(a, b points, kind core.NumberKind) points { | ||||
| func combine(a, b points, kind metric.NumberKind) points { | ||||
| 	result := make(points, 0, len(a)+len(b)) | ||||
|  | ||||
| 	for len(a) != 0 && len(b) != 0 { | ||||
| @@ -176,13 +175,13 @@ func (p *points) Swap(i, j int) { | ||||
| // Quantile returns the least X such that Pr(x<X)>=q, where X is an | ||||
| // element of the data set.  This uses the "Nearest-Rank" definition | ||||
| // of a quantile. | ||||
| func (p *points) Quantile(q float64) (core.Number, error) { | ||||
| func (p *points) Quantile(q float64) (metric.Number, error) { | ||||
| 	if len(*p) == 0 { | ||||
| 		return core.Number(0), aggregator.ErrNoData | ||||
| 		return metric.Number(0), aggregator.ErrNoData | ||||
| 	} | ||||
|  | ||||
| 	if q < 0 || q > 1 { | ||||
| 		return core.Number(0), aggregator.ErrInvalidQuantile | ||||
| 		return metric.Number(0), aggregator.ErrInvalidQuantile | ||||
| 	} | ||||
|  | ||||
| 	if q == 0 || len(*p) == 1 { | ||||
|   | ||||
| @@ -24,7 +24,6 @@ import ( | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	ottest "go.opentelemetry.io/otel/internal/testing" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| @@ -218,10 +217,10 @@ func TestArrayErrors(t *testing.T) { | ||||
|  | ||||
| 		descriptor := test.NewAggregatorTest(metric.MeasureKind, profile.NumberKind) | ||||
|  | ||||
| 		test.CheckedUpdate(t, agg, core.Number(0), descriptor) | ||||
| 		test.CheckedUpdate(t, agg, metric.Number(0), descriptor) | ||||
|  | ||||
| 		if profile.NumberKind == core.Float64NumberKind { | ||||
| 			test.CheckedUpdate(t, agg, core.NewFloat64Number(math.NaN()), descriptor) | ||||
| 		if profile.NumberKind == metric.Float64NumberKind { | ||||
| 			test.CheckedUpdate(t, agg, metric.NewFloat64Number(math.NaN()), descriptor) | ||||
| 		} | ||||
| 		agg.Checkpoint(ctx, descriptor) | ||||
|  | ||||
| @@ -231,7 +230,7 @@ func TestArrayErrors(t *testing.T) { | ||||
|  | ||||
| 		num, err := agg.Quantile(0) | ||||
| 		require.Nil(t, err) | ||||
| 		require.Equal(t, num, core.Number(0)) | ||||
| 		require.Equal(t, num, metric.Number(0)) | ||||
|  | ||||
| 		_, err = agg.Quantile(-0.0001) | ||||
| 		require.Error(t, err) | ||||
| @@ -244,7 +243,7 @@ func TestArrayErrors(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestArrayFloat64(t *testing.T) { | ||||
| 	descriptor := test.NewAggregatorTest(metric.MeasureKind, core.Float64NumberKind) | ||||
| 	descriptor := test.NewAggregatorTest(metric.MeasureKind, metric.Float64NumberKind) | ||||
|  | ||||
| 	fpsf := func(sign int) []float64 { | ||||
| 		// Check behavior of a bunch of odd floating | ||||
| @@ -274,19 +273,19 @@ func TestArrayFloat64(t *testing.T) { | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	all := test.NewNumbers(core.Float64NumberKind) | ||||
| 	all := test.NewNumbers(metric.Float64NumberKind) | ||||
|  | ||||
| 	ctx := context.Background() | ||||
| 	agg := New() | ||||
|  | ||||
| 	for _, f := range fpsf(1) { | ||||
| 		all.Append(core.NewFloat64Number(f)) | ||||
| 		test.CheckedUpdate(t, agg, core.NewFloat64Number(f), descriptor) | ||||
| 		all.Append(metric.NewFloat64Number(f)) | ||||
| 		test.CheckedUpdate(t, agg, metric.NewFloat64Number(f), descriptor) | ||||
| 	} | ||||
|  | ||||
| 	for _, f := range fpsf(-1) { | ||||
| 		all.Append(core.NewFloat64Number(f)) | ||||
| 		test.CheckedUpdate(t, agg, core.NewFloat64Number(f), descriptor) | ||||
| 		all.Append(metric.NewFloat64Number(f)) | ||||
| 		test.CheckedUpdate(t, agg, metric.NewFloat64Number(f), descriptor) | ||||
| 	} | ||||
|  | ||||
| 	agg.Checkpoint(ctx, descriptor) | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import ( | ||||
|  | ||||
| 	sdk "github.com/DataDog/sketches-go/ddsketch" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
|  | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| @@ -34,7 +33,7 @@ type Config = sdk.Config | ||||
| type Aggregator struct { | ||||
| 	lock       sync.Mutex | ||||
| 	cfg        *Config | ||||
| 	kind       core.NumberKind | ||||
| 	kind       metric.NumberKind | ||||
| 	current    *sdk.DDSketch | ||||
| 	checkpoint *sdk.DDSketch | ||||
| } | ||||
| @@ -63,7 +62,7 @@ func NewDefaultConfig() *Config { | ||||
| } | ||||
|  | ||||
| // Sum returns the sum of values in the checkpoint. | ||||
| func (c *Aggregator) Sum() (core.Number, error) { | ||||
| func (c *Aggregator) Sum() (metric.Number, error) { | ||||
| 	return c.toNumber(c.checkpoint.Sum()), nil | ||||
| } | ||||
|  | ||||
| @@ -73,33 +72,33 @@ func (c *Aggregator) Count() (int64, error) { | ||||
| } | ||||
|  | ||||
| // Max returns the maximum value in the checkpoint. | ||||
| func (c *Aggregator) Max() (core.Number, error) { | ||||
| func (c *Aggregator) Max() (metric.Number, error) { | ||||
| 	return c.Quantile(1) | ||||
| } | ||||
|  | ||||
| // Min returns the minimum value in the checkpoint. | ||||
| func (c *Aggregator) Min() (core.Number, error) { | ||||
| func (c *Aggregator) Min() (metric.Number, error) { | ||||
| 	return c.Quantile(0) | ||||
| } | ||||
|  | ||||
| // Quantile returns the estimated quantile of data in the checkpoint. | ||||
| // It is an error if `q` is less than 0 or greated than 1. | ||||
| func (c *Aggregator) Quantile(q float64) (core.Number, error) { | ||||
| func (c *Aggregator) Quantile(q float64) (metric.Number, error) { | ||||
| 	if c.checkpoint.Count() == 0 { | ||||
| 		return core.Number(0), aggregator.ErrNoData | ||||
| 		return metric.Number(0), aggregator.ErrNoData | ||||
| 	} | ||||
| 	f := c.checkpoint.Quantile(q) | ||||
| 	if math.IsNaN(f) { | ||||
| 		return core.Number(0), aggregator.ErrInvalidQuantile | ||||
| 		return metric.Number(0), aggregator.ErrInvalidQuantile | ||||
| 	} | ||||
| 	return c.toNumber(f), nil | ||||
| } | ||||
|  | ||||
| func (c *Aggregator) toNumber(f float64) core.Number { | ||||
| 	if c.kind == core.Float64NumberKind { | ||||
| 		return core.NewFloat64Number(f) | ||||
| func (c *Aggregator) toNumber(f float64) metric.Number { | ||||
| 	if c.kind == metric.Float64NumberKind { | ||||
| 		return metric.NewFloat64Number(f) | ||||
| 	} | ||||
| 	return core.NewInt64Number(int64(f)) | ||||
| 	return metric.NewInt64Number(int64(f)) | ||||
| } | ||||
|  | ||||
| // Checkpoint saves the current state and resets the current state to | ||||
| @@ -116,7 +115,7 @@ func (c *Aggregator) Checkpoint(ctx context.Context, _ *metric.Descriptor) { | ||||
| // Update adds the recorded measurement to the current data set. | ||||
| // Update takes a lock to prevent concurrent Update() and Checkpoint() | ||||
| // calls. | ||||
| func (c *Aggregator) Update(_ context.Context, number core.Number, desc *metric.Descriptor) error { | ||||
| func (c *Aggregator) Update(_ context.Context, number metric.Number, desc *metric.Descriptor) error { | ||||
| 	c.lock.Lock() | ||||
| 	defer c.lock.Unlock() | ||||
| 	c.current.Add(number.CoerceToFloat64(desc.NumberKind())) | ||||
|   | ||||
| @@ -19,7 +19,6 @@ import ( | ||||
| 	"sort" | ||||
| 	"sync" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| @@ -32,8 +31,8 @@ type ( | ||||
| 		lock       sync.Mutex | ||||
| 		current    state | ||||
| 		checkpoint state | ||||
| 		boundaries []core.Number | ||||
| 		kind       core.NumberKind | ||||
| 		boundaries []metric.Number | ||||
| 		kind       metric.NumberKind | ||||
| 	} | ||||
|  | ||||
| 	// state represents the state of a histogram, consisting of | ||||
| @@ -42,8 +41,8 @@ type ( | ||||
| 	state struct { | ||||
| 		// all fields have to be aligned for 64-bit atomic operations. | ||||
| 		buckets aggregator.Buckets | ||||
| 		count   core.Number | ||||
| 		sum     core.Number | ||||
| 		count   metric.Number | ||||
| 		sum     metric.Number | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| @@ -60,11 +59,11 @@ var _ aggregator.Histogram = &Aggregator{} | ||||
| // Note that this aggregator maintains each value using independent | ||||
| // atomic operations, which introduces the possibility that | ||||
| // checkpoints are inconsistent. | ||||
| func New(desc *metric.Descriptor, boundaries []core.Number) *Aggregator { | ||||
| func New(desc *metric.Descriptor, boundaries []metric.Number) *Aggregator { | ||||
| 	// Boundaries MUST be ordered otherwise the histogram could not | ||||
| 	// be properly computed. | ||||
| 	sortedBoundaries := numbers{ | ||||
| 		numbers: make([]core.Number, len(boundaries)), | ||||
| 		numbers: make([]metric.Number, len(boundaries)), | ||||
| 		kind:    desc.NumberKind(), | ||||
| 	} | ||||
|  | ||||
| @@ -78,7 +77,7 @@ func New(desc *metric.Descriptor, boundaries []core.Number) *Aggregator { | ||||
| 		current: state{ | ||||
| 			buckets: aggregator.Buckets{ | ||||
| 				Boundaries: boundaries, | ||||
| 				Counts:     make([]core.Number, len(boundaries)+1), | ||||
| 				Counts:     make([]metric.Number, len(boundaries)+1), | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| @@ -86,7 +85,7 @@ func New(desc *metric.Descriptor, boundaries []core.Number) *Aggregator { | ||||
| } | ||||
|  | ||||
| // Sum returns the sum of all values in the checkpoint. | ||||
| func (c *Aggregator) Sum() (core.Number, error) { | ||||
| func (c *Aggregator) Sum() (metric.Number, error) { | ||||
| 	c.lock.Lock() | ||||
| 	defer c.lock.Unlock() | ||||
| 	return c.checkpoint.sum, nil | ||||
| @@ -120,13 +119,13 @@ func (c *Aggregator) emptyState() state { | ||||
| 	return state{ | ||||
| 		buckets: aggregator.Buckets{ | ||||
| 			Boundaries: c.boundaries, | ||||
| 			Counts:     make([]core.Number, len(c.boundaries)+1), | ||||
| 			Counts:     make([]metric.Number, len(c.boundaries)+1), | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Update adds the recorded measurement to the current data set. | ||||
| func (c *Aggregator) Update(_ context.Context, number core.Number, desc *metric.Descriptor) error { | ||||
| func (c *Aggregator) Update(_ context.Context, number metric.Number, desc *metric.Descriptor) error { | ||||
| 	kind := desc.NumberKind() | ||||
|  | ||||
| 	bucketID := len(c.boundaries) | ||||
| @@ -155,18 +154,18 @@ func (c *Aggregator) Merge(oa export.Aggregator, desc *metric.Descriptor) error | ||||
| 	} | ||||
|  | ||||
| 	c.checkpoint.sum.AddNumber(desc.NumberKind(), o.checkpoint.sum) | ||||
| 	c.checkpoint.count.AddNumber(core.Uint64NumberKind, o.checkpoint.count) | ||||
| 	c.checkpoint.count.AddNumber(metric.Uint64NumberKind, o.checkpoint.count) | ||||
|  | ||||
| 	for i := 0; i < len(c.checkpoint.buckets.Counts); i++ { | ||||
| 		c.checkpoint.buckets.Counts[i].AddNumber(core.Uint64NumberKind, o.checkpoint.buckets.Counts[i]) | ||||
| 		c.checkpoint.buckets.Counts[i].AddNumber(metric.Uint64NumberKind, o.checkpoint.buckets.Counts[i]) | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // numbers is an auxiliary struct to order histogram bucket boundaries (slice of core.Number) | ||||
| type numbers struct { | ||||
| 	numbers []core.Number | ||||
| 	kind    core.NumberKind | ||||
| 	numbers []metric.Number | ||||
| 	kind    metric.NumberKind | ||||
| } | ||||
|  | ||||
| var _ sort.Interface = (*numbers)(nil) | ||||
|   | ||||
| @@ -23,7 +23,6 @@ import ( | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/test" | ||||
| ) | ||||
| @@ -58,9 +57,9 @@ var ( | ||||
| 		}, | ||||
| 	} | ||||
|  | ||||
| 	boundaries = map[core.NumberKind][]core.Number{ | ||||
| 		core.Float64NumberKind: {core.NewFloat64Number(500), core.NewFloat64Number(250), core.NewFloat64Number(750)}, | ||||
| 		core.Int64NumberKind:   {core.NewInt64Number(500), core.NewInt64Number(250), core.NewInt64Number(750)}, | ||||
| 	boundaries = map[metric.NumberKind][]metric.Number{ | ||||
| 		metric.Float64NumberKind: {metric.NewFloat64Number(500), metric.NewFloat64Number(250), metric.NewFloat64Number(750)}, | ||||
| 		metric.Int64NumberKind:   {metric.NewInt64Number(500), metric.NewInt64Number(250), metric.NewInt64Number(750)}, | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| @@ -185,7 +184,7 @@ func TestHistogramNotSet(t *testing.T) { | ||||
| 		agg.Checkpoint(ctx, descriptor) | ||||
|  | ||||
| 		asum, err := agg.Sum() | ||||
| 		require.Equal(t, core.Number(0), asum, "Empty checkpoint sum = 0") | ||||
| 		require.Equal(t, metric.Number(0), asum, "Empty checkpoint sum = 0") | ||||
| 		require.Nil(t, err) | ||||
|  | ||||
| 		count, err := agg.Count() | ||||
| @@ -199,9 +198,9 @@ func TestHistogramNotSet(t *testing.T) { | ||||
| 	}) | ||||
| } | ||||
|  | ||||
| func calcBuckets(points []core.Number, profile test.Profile) []uint64 { | ||||
| func calcBuckets(points []metric.Number, profile test.Profile) []uint64 { | ||||
| 	sortedBoundaries := numbers{ | ||||
| 		numbers: make([]core.Number, len(boundaries[profile.NumberKind])), | ||||
| 		numbers: make([]metric.Number, len(boundaries[profile.NumberKind])), | ||||
| 		kind:    profile.NumberKind, | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import ( | ||||
| 	"time" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| @@ -43,7 +42,7 @@ type ( | ||||
| 		// value is the int64- or float64-encoded Set() data | ||||
| 		// | ||||
| 		// value needs to be aligned for 64-bit atomic operations. | ||||
| 		value core.Number | ||||
| 		value metric.Number | ||||
|  | ||||
| 		// timestamp indicates when this record was submitted. | ||||
| 		// this can be used to pick a winner when multiple | ||||
| @@ -72,10 +71,10 @@ func New() *Aggregator { | ||||
| // corresponding timestamp.  The error value aggregator.ErrNoData | ||||
| // will be returned if (due to a race condition) the checkpoint was | ||||
| // computed before the first value was set. | ||||
| func (g *Aggregator) LastValue() (core.Number, time.Time, error) { | ||||
| func (g *Aggregator) LastValue() (metric.Number, time.Time, error) { | ||||
| 	gd := (*lastValueData)(g.checkpoint) | ||||
| 	if gd == unsetLastValue { | ||||
| 		return core.Number(0), time.Time{}, aggregator.ErrNoData | ||||
| 		return metric.Number(0), time.Time{}, aggregator.ErrNoData | ||||
| 	} | ||||
| 	return gd.value.AsNumber(), gd.timestamp, nil | ||||
| } | ||||
| @@ -86,7 +85,7 @@ func (g *Aggregator) Checkpoint(ctx context.Context, _ *metric.Descriptor) { | ||||
| } | ||||
|  | ||||
| // Update atomically sets the current "last" value. | ||||
| func (g *Aggregator) Update(_ context.Context, number core.Number, desc *metric.Descriptor) error { | ||||
| func (g *Aggregator) Update(_ context.Context, number metric.Number, desc *metric.Descriptor) error { | ||||
| 	ngd := &lastValueData{ | ||||
| 		value:     number, | ||||
| 		timestamp: time.Now(), | ||||
|   | ||||
| @@ -23,7 +23,6 @@ import ( | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	ottest "go.opentelemetry.io/otel/internal/testing" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| @@ -58,7 +57,7 @@ func TestLastValueUpdate(t *testing.T) { | ||||
|  | ||||
| 		record := test.NewAggregatorTest(metric.ObserverKind, profile.NumberKind) | ||||
|  | ||||
| 		var last core.Number | ||||
| 		var last metric.Number | ||||
| 		for i := 0; i < count; i++ { | ||||
| 			x := profile.Random(rand.Intn(1)*2 - 1) | ||||
| 			last = x | ||||
| @@ -108,7 +107,7 @@ func TestLastValueMerge(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestLastValueNotSet(t *testing.T) { | ||||
| 	descriptor := test.NewAggregatorTest(metric.ObserverKind, core.Int64NumberKind) | ||||
| 	descriptor := test.NewAggregatorTest(metric.ObserverKind, metric.Int64NumberKind) | ||||
|  | ||||
| 	g := New() | ||||
| 	g.Checkpoint(context.Background(), descriptor) | ||||
| @@ -116,5 +115,5 @@ func TestLastValueNotSet(t *testing.T) { | ||||
| 	value, timestamp, err := g.LastValue() | ||||
| 	require.Equal(t, aggregator.ErrNoData, err) | ||||
| 	require.True(t, timestamp.IsZero()) | ||||
| 	require.Equal(t, core.Number(0), value) | ||||
| 	require.Equal(t, metric.Number(0), value) | ||||
| } | ||||
|   | ||||
| @@ -18,7 +18,6 @@ import ( | ||||
| 	"context" | ||||
| 	"sync" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| @@ -31,14 +30,14 @@ type ( | ||||
| 		lock       sync.Mutex | ||||
| 		current    state | ||||
| 		checkpoint state | ||||
| 		kind       core.NumberKind | ||||
| 		kind       metric.NumberKind | ||||
| 	} | ||||
|  | ||||
| 	state struct { | ||||
| 		count core.Number | ||||
| 		sum   core.Number | ||||
| 		min   core.Number | ||||
| 		max   core.Number | ||||
| 		count metric.Number | ||||
| 		sum   metric.Number | ||||
| 		min   metric.Number | ||||
| 		max   metric.Number | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| @@ -54,7 +53,7 @@ func New(desc *metric.Descriptor) *Aggregator { | ||||
| 	return &Aggregator{ | ||||
| 		kind: kind, | ||||
| 		current: state{ | ||||
| 			count: core.NewUint64Number(0), | ||||
| 			count: metric.NewUint64Number(0), | ||||
| 			sum:   kind.Zero(), | ||||
| 			min:   kind.Maximum(), | ||||
| 			max:   kind.Minimum(), | ||||
| @@ -63,7 +62,7 @@ func New(desc *metric.Descriptor) *Aggregator { | ||||
| } | ||||
|  | ||||
| // Sum returns the sum of values in the checkpoint. | ||||
| func (c *Aggregator) Sum() (core.Number, error) { | ||||
| func (c *Aggregator) Sum() (metric.Number, error) { | ||||
| 	c.lock.Lock() | ||||
| 	defer c.lock.Unlock() | ||||
| 	return c.checkpoint.sum, nil | ||||
| @@ -73,16 +72,16 @@ func (c *Aggregator) Sum() (core.Number, error) { | ||||
| func (c *Aggregator) Count() (int64, error) { | ||||
| 	c.lock.Lock() | ||||
| 	defer c.lock.Unlock() | ||||
| 	return c.checkpoint.count.CoerceToInt64(core.Uint64NumberKind), nil | ||||
| 	return c.checkpoint.count.CoerceToInt64(metric.Uint64NumberKind), nil | ||||
| } | ||||
|  | ||||
| // Min returns the minimum value in the checkpoint. | ||||
| // The error value aggregator.ErrNoData will be returned | ||||
| // if there were no measurements recorded during the checkpoint. | ||||
| func (c *Aggregator) Min() (core.Number, error) { | ||||
| func (c *Aggregator) Min() (metric.Number, error) { | ||||
| 	c.lock.Lock() | ||||
| 	defer c.lock.Unlock() | ||||
| 	if c.checkpoint.count.IsZero(core.Uint64NumberKind) { | ||||
| 	if c.checkpoint.count.IsZero(metric.Uint64NumberKind) { | ||||
| 		return c.kind.Zero(), aggregator.ErrNoData | ||||
| 	} | ||||
| 	return c.checkpoint.min, nil | ||||
| @@ -91,10 +90,10 @@ func (c *Aggregator) Min() (core.Number, error) { | ||||
| // Max returns the maximum value in the checkpoint. | ||||
| // The error value aggregator.ErrNoData will be returned | ||||
| // if there were no measurements recorded during the checkpoint. | ||||
| func (c *Aggregator) Max() (core.Number, error) { | ||||
| func (c *Aggregator) Max() (metric.Number, error) { | ||||
| 	c.lock.Lock() | ||||
| 	defer c.lock.Unlock() | ||||
| 	if c.checkpoint.count.IsZero(core.Uint64NumberKind) { | ||||
| 	if c.checkpoint.count.IsZero(metric.Uint64NumberKind) { | ||||
| 		return c.kind.Zero(), aggregator.ErrNoData | ||||
| 	} | ||||
| 	return c.checkpoint.max, nil | ||||
| @@ -111,7 +110,7 @@ func (c *Aggregator) Checkpoint(ctx context.Context, desc *metric.Descriptor) { | ||||
| func (c *Aggregator) emptyState() state { | ||||
| 	kind := c.kind | ||||
| 	return state{ | ||||
| 		count: core.NewUint64Number(0), | ||||
| 		count: metric.NewUint64Number(0), | ||||
| 		sum:   kind.Zero(), | ||||
| 		min:   kind.Maximum(), | ||||
| 		max:   kind.Minimum(), | ||||
| @@ -119,7 +118,7 @@ func (c *Aggregator) emptyState() state { | ||||
| } | ||||
|  | ||||
| // Update adds the recorded measurement to the current data set. | ||||
| func (c *Aggregator) Update(_ context.Context, number core.Number, desc *metric.Descriptor) error { | ||||
| func (c *Aggregator) Update(_ context.Context, number metric.Number, desc *metric.Descriptor) error { | ||||
| 	kind := desc.NumberKind() | ||||
|  | ||||
| 	c.lock.Lock() | ||||
| @@ -142,7 +141,7 @@ func (c *Aggregator) Merge(oa export.Aggregator, desc *metric.Descriptor) error | ||||
| 		return aggregator.NewInconsistentMergeError(c, oa) | ||||
| 	} | ||||
|  | ||||
| 	c.checkpoint.count.AddNumber(core.Uint64NumberKind, o.checkpoint.count) | ||||
| 	c.checkpoint.count.AddNumber(metric.Uint64NumberKind, o.checkpoint.count) | ||||
| 	c.checkpoint.sum.AddNumber(desc.NumberKind(), o.checkpoint.sum) | ||||
|  | ||||
| 	if c.checkpoint.min.CompareNumber(desc.NumberKind(), o.checkpoint.min) > 0 { | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import ( | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/test" | ||||
| @@ -192,7 +191,7 @@ func TestMaxSumCountNotSet(t *testing.T) { | ||||
| 		agg.Checkpoint(ctx, descriptor) | ||||
|  | ||||
| 		asum, err := agg.Sum() | ||||
| 		require.Equal(t, core.Number(0), asum, "Empty checkpoint sum = 0") | ||||
| 		require.Equal(t, metric.Number(0), asum, "Empty checkpoint sum = 0") | ||||
| 		require.Nil(t, err) | ||||
|  | ||||
| 		count, err := agg.Count() | ||||
| @@ -201,6 +200,6 @@ func TestMaxSumCountNotSet(t *testing.T) { | ||||
|  | ||||
| 		max, err := agg.Max() | ||||
| 		require.Equal(t, aggregator.ErrNoData, err) | ||||
| 		require.Equal(t, core.Number(0), max) | ||||
| 		require.Equal(t, metric.Number(0), max) | ||||
| 	}) | ||||
| } | ||||
|   | ||||
| @@ -17,7 +17,6 @@ package sum // import "go.opentelemetry.io/otel/sdk/metric/aggregator/sum" | ||||
| import ( | ||||
| 	"context" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/export/metric/aggregator" | ||||
| @@ -27,11 +26,11 @@ import ( | ||||
| type Aggregator struct { | ||||
| 	// current holds current increments to this counter record | ||||
| 	// current needs to be aligned for 64-bit atomic operations. | ||||
| 	current core.Number | ||||
| 	current metric.Number | ||||
|  | ||||
| 	// checkpoint is a temporary used during Checkpoint() | ||||
| 	// checkpoint needs to be aligned for 64-bit atomic operations. | ||||
| 	checkpoint core.Number | ||||
| 	checkpoint metric.Number | ||||
| } | ||||
|  | ||||
| var _ export.Aggregator = &Aggregator{} | ||||
| @@ -46,18 +45,18 @@ func New() *Aggregator { | ||||
|  | ||||
| // Sum returns the last-checkpointed sum.  This will never return an | ||||
| // error. | ||||
| func (c *Aggregator) Sum() (core.Number, error) { | ||||
| func (c *Aggregator) Sum() (metric.Number, error) { | ||||
| 	return c.checkpoint, nil | ||||
| } | ||||
|  | ||||
| // Checkpoint atomically saves the current value and resets the | ||||
| // current sum to zero. | ||||
| func (c *Aggregator) Checkpoint(ctx context.Context, _ *metric.Descriptor) { | ||||
| 	c.checkpoint = c.current.SwapNumberAtomic(core.Number(0)) | ||||
| 	c.checkpoint = c.current.SwapNumberAtomic(metric.Number(0)) | ||||
| } | ||||
|  | ||||
| // Update atomically adds to the current value. | ||||
| func (c *Aggregator) Update(_ context.Context, number core.Number, desc *metric.Descriptor) error { | ||||
| func (c *Aggregator) Update(_ context.Context, number metric.Number, desc *metric.Descriptor) error { | ||||
| 	c.current.AddNumberAtomic(desc.NumberKind(), number) | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import ( | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	ottest "go.opentelemetry.io/otel/internal/testing" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/test" | ||||
| @@ -57,7 +56,7 @@ func TestCounterSum(t *testing.T) { | ||||
|  | ||||
| 		descriptor := test.NewAggregatorTest(metric.CounterKind, profile.NumberKind) | ||||
|  | ||||
| 		sum := core.Number(0) | ||||
| 		sum := metric.Number(0) | ||||
| 		for i := 0; i < count; i++ { | ||||
| 			x := profile.Random(+1) | ||||
| 			sum.AddNumber(profile.NumberKind, x) | ||||
| @@ -80,7 +79,7 @@ func TestMeasureSum(t *testing.T) { | ||||
|  | ||||
| 		descriptor := test.NewAggregatorTest(metric.MeasureKind, profile.NumberKind) | ||||
|  | ||||
| 		sum := core.Number(0) | ||||
| 		sum := metric.Number(0) | ||||
|  | ||||
| 		for i := 0; i < count; i++ { | ||||
| 			r1 := profile.Random(+1) | ||||
| @@ -108,7 +107,7 @@ func TestCounterMerge(t *testing.T) { | ||||
|  | ||||
| 		descriptor := test.NewAggregatorTest(metric.CounterKind, profile.NumberKind) | ||||
|  | ||||
| 		sum := core.Number(0) | ||||
| 		sum := metric.Number(0) | ||||
| 		for i := 0; i < count; i++ { | ||||
| 			x := profile.Random(+1) | ||||
| 			sum.AddNumber(profile.NumberKind, x) | ||||
|   | ||||
| @@ -22,7 +22,6 @@ import ( | ||||
| 	"testing" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	ottest "go.opentelemetry.io/otel/internal/testing" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| @@ -32,29 +31,29 @@ import ( | ||||
| const Magnitude = 1000 | ||||
|  | ||||
| type Profile struct { | ||||
| 	NumberKind core.NumberKind | ||||
| 	Random     func(sign int) core.Number | ||||
| 	NumberKind metric.NumberKind | ||||
| 	Random     func(sign int) metric.Number | ||||
| } | ||||
|  | ||||
| func newProfiles() []Profile { | ||||
| 	rnd := rand.New(rand.NewSource(rand.Int63())) | ||||
| 	return []Profile{ | ||||
| 		{ | ||||
| 			NumberKind: core.Int64NumberKind, | ||||
| 			Random: func(sign int) core.Number { | ||||
| 				return core.NewInt64Number(int64(sign) * int64(rnd.Intn(Magnitude+1))) | ||||
| 			NumberKind: metric.Int64NumberKind, | ||||
| 			Random: func(sign int) metric.Number { | ||||
| 				return metric.NewInt64Number(int64(sign) * int64(rnd.Intn(Magnitude+1))) | ||||
| 			}, | ||||
| 		}, | ||||
| 		{ | ||||
| 			NumberKind: core.Float64NumberKind, | ||||
| 			Random: func(sign int) core.Number { | ||||
| 				return core.NewFloat64Number(float64(sign) * rnd.Float64() * Magnitude) | ||||
| 			NumberKind: metric.Float64NumberKind, | ||||
| 			Random: func(sign int) metric.Number { | ||||
| 				return metric.NewFloat64Number(float64(sign) * rnd.Float64() * Magnitude) | ||||
| 			}, | ||||
| 		}, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func NewAggregatorTest(mkind metric.Kind, nkind core.NumberKind) *metric.Descriptor { | ||||
| func NewAggregatorTest(mkind metric.Kind, nkind metric.NumberKind) *metric.Descriptor { | ||||
| 	desc := metric.NewDescriptor("test.name", mkind, nkind) | ||||
| 	return &desc | ||||
| } | ||||
| @@ -84,17 +83,17 @@ func TestMain(m *testing.M) { | ||||
|  | ||||
| type Numbers struct { | ||||
| 	// numbers has to be aligned for 64-bit atomic operations. | ||||
| 	numbers []core.Number | ||||
| 	kind    core.NumberKind | ||||
| 	numbers []metric.Number | ||||
| 	kind    metric.NumberKind | ||||
| } | ||||
|  | ||||
| func NewNumbers(kind core.NumberKind) Numbers { | ||||
| func NewNumbers(kind metric.NumberKind) Numbers { | ||||
| 	return Numbers{ | ||||
| 		kind: kind, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (n *Numbers) Append(v core.Number) { | ||||
| func (n *Numbers) Append(v metric.Number) { | ||||
| 	n.numbers = append(n.numbers, v) | ||||
| } | ||||
|  | ||||
| @@ -114,8 +113,8 @@ func (n *Numbers) Swap(i, j int) { | ||||
| 	n.numbers[i], n.numbers[j] = n.numbers[j], n.numbers[i] | ||||
| } | ||||
|  | ||||
| func (n *Numbers) Sum() core.Number { | ||||
| 	var sum core.Number | ||||
| func (n *Numbers) Sum() metric.Number { | ||||
| 	var sum metric.Number | ||||
| 	for _, num := range n.numbers { | ||||
| 		sum.AddNumber(n.kind, num) | ||||
| 	} | ||||
| @@ -126,16 +125,16 @@ func (n *Numbers) Count() int64 { | ||||
| 	return int64(len(n.numbers)) | ||||
| } | ||||
|  | ||||
| func (n *Numbers) Min() core.Number { | ||||
| func (n *Numbers) Min() metric.Number { | ||||
| 	return n.numbers[0] | ||||
| } | ||||
|  | ||||
| func (n *Numbers) Max() core.Number { | ||||
| func (n *Numbers) Max() metric.Number { | ||||
| 	return n.numbers[len(n.numbers)-1] | ||||
| } | ||||
|  | ||||
| // Median() is an alias for Quantile(0.5). | ||||
| func (n *Numbers) Median() core.Number { | ||||
| func (n *Numbers) Median() metric.Number { | ||||
| 	// Note that len(n.numbers) is 1 greater than the max element | ||||
| 	// index, so dividing by two rounds up.  This gives the | ||||
| 	// intended definition for Quantile() in tests, which is to | ||||
| @@ -144,12 +143,12 @@ func (n *Numbers) Median() core.Number { | ||||
| 	return n.numbers[len(n.numbers)/2] | ||||
| } | ||||
|  | ||||
| func (n *Numbers) Points() []core.Number { | ||||
| func (n *Numbers) Points() []metric.Number { | ||||
| 	return n.numbers | ||||
| } | ||||
|  | ||||
| // Performs the same range test the SDK does on behalf of the aggregator. | ||||
| func CheckedUpdate(t *testing.T, agg export.Aggregator, number core.Number, descriptor *metric.Descriptor) { | ||||
| func CheckedUpdate(t *testing.T, agg export.Aggregator, number metric.Number, descriptor *metric.Descriptor) { | ||||
| 	ctx := context.Background() | ||||
|  | ||||
| 	// Note: Aggregator tests are written assuming that the SDK | ||||
|   | ||||
| @@ -48,14 +48,14 @@ type ( | ||||
| var ( | ||||
| 	// LastValueADesc and LastValueBDesc group by "G" | ||||
| 	LastValueADesc = metric.NewDescriptor( | ||||
| 		"lastvalue.a", metric.ObserverKind, core.Int64NumberKind) | ||||
| 		"lastvalue.a", metric.ObserverKind, metric.Int64NumberKind) | ||||
| 	LastValueBDesc = metric.NewDescriptor( | ||||
| 		"lastvalue.b", metric.ObserverKind, core.Int64NumberKind) | ||||
| 		"lastvalue.b", metric.ObserverKind, metric.Int64NumberKind) | ||||
| 	// CounterADesc and CounterBDesc group by "C" | ||||
| 	CounterADesc = metric.NewDescriptor( | ||||
| 		"sum.a", metric.CounterKind, core.Int64NumberKind) | ||||
| 		"sum.a", metric.CounterKind, metric.Int64NumberKind) | ||||
| 	CounterBDesc = metric.NewDescriptor( | ||||
| 		"sum.b", metric.CounterKind, core.Int64NumberKind) | ||||
| 		"sum.b", metric.CounterKind, metric.Int64NumberKind) | ||||
|  | ||||
| 	// SdkEncoder uses a non-standard encoder like K1~V1&K2~V2 | ||||
| 	SdkEncoder = &Encoder{} | ||||
| @@ -127,7 +127,7 @@ func (Encoder) ID() label.EncoderID { | ||||
| func LastValueAgg(desc *metric.Descriptor, v int64) export.Aggregator { | ||||
| 	ctx := context.Background() | ||||
| 	gagg := lastvalue.New() | ||||
| 	_ = gagg.Update(ctx, core.NewInt64Number(v), desc) | ||||
| 	_ = gagg.Update(ctx, metric.NewInt64Number(v), desc) | ||||
| 	gagg.Checkpoint(ctx, desc) | ||||
| 	return gagg | ||||
| } | ||||
| @@ -146,7 +146,7 @@ func NewCounterRecord(desc *metric.Descriptor, labels *label.Set, value int64) e | ||||
| func CounterAgg(desc *metric.Descriptor, v int64) export.Aggregator { | ||||
| 	ctx := context.Background() | ||||
| 	cagg := sum.New() | ||||
| 	_ = cagg.Update(ctx, core.NewInt64Number(v), desc) | ||||
| 	_ = cagg.Update(ctx, metric.NewInt64Number(v), desc) | ||||
| 	cagg.Checkpoint(ctx, desc) | ||||
| 	return cagg | ||||
| } | ||||
|   | ||||
| @@ -18,9 +18,10 @@ import ( | ||||
| 	"context" | ||||
| 	"testing" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/batcher/test" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/batcher/ungrouped" | ||||
| @@ -123,8 +124,8 @@ func TestUngroupedStateful(t *testing.T) { | ||||
| 	require.EqualValues(t, records1.Map, records2.Map) | ||||
|  | ||||
| 	// Update and re-checkpoint the original record. | ||||
| 	_ = caggA.Update(ctx, core.NewInt64Number(20), &test.CounterADesc) | ||||
| 	_ = caggB.Update(ctx, core.NewInt64Number(20), &test.CounterBDesc) | ||||
| 	_ = caggA.Update(ctx, metric.NewInt64Number(20), &test.CounterADesc) | ||||
| 	_ = caggB.Update(ctx, metric.NewInt64Number(20), &test.CounterBDesc) | ||||
| 	caggA.Checkpoint(ctx, &test.CounterADesc) | ||||
| 	caggB.Checkpoint(ctx, &test.CounterBDesc) | ||||
|  | ||||
|   | ||||
| @@ -240,7 +240,7 @@ func TestSDKLabelsDeduplication(t *testing.T) { | ||||
| 	var actual [][]core.KeyValue | ||||
| 	for _, rec := range batcher.records { | ||||
| 		sum, _ := rec.Aggregator().(aggregator.Sum).Sum() | ||||
| 		require.Equal(t, sum, core.NewInt64Number(2)) | ||||
| 		require.Equal(t, sum, metric.NewInt64Number(2)) | ||||
|  | ||||
| 		kvs := rec.Labels().ToSlice() | ||||
| 		actual = append(actual, kvs) | ||||
|   | ||||
| @@ -20,14 +20,13 @@ import ( | ||||
| 	"testing" | ||||
| 	"time" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/histogram" | ||||
| ) | ||||
|  | ||||
| func TestStressInt64Histogram(t *testing.T) { | ||||
| 	desc := metric.NewDescriptor("some_metric", metric.MeasureKind, core.Int64NumberKind) | ||||
| 	h := histogram.New(&desc, []core.Number{core.NewInt64Number(25), core.NewInt64Number(50), core.NewInt64Number(75)}) | ||||
| 	desc := metric.NewDescriptor("some_metric", metric.MeasureKind, metric.Int64NumberKind) | ||||
| 	h := histogram.New(&desc, []metric.Number{metric.NewInt64Number(25), metric.NewInt64Number(50), metric.NewInt64Number(75)}) | ||||
|  | ||||
| 	ctx, cancelFunc := context.WithCancel(context.Background()) | ||||
| 	defer cancelFunc() | ||||
| @@ -38,7 +37,7 @@ func TestStressInt64Histogram(t *testing.T) { | ||||
| 			case <-ctx.Done(): | ||||
| 				return | ||||
| 			default: | ||||
| 				_ = h.Update(ctx, core.NewInt64Number(rnd.Int63()%100), &desc) | ||||
| 				_ = h.Update(ctx, metric.NewInt64Number(rnd.Int63()%100), &desc) | ||||
| 			} | ||||
| 		} | ||||
| 	}() | ||||
|   | ||||
| @@ -20,13 +20,12 @@ import ( | ||||
| 	"testing" | ||||
| 	"time" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/minmaxsumcount" | ||||
| ) | ||||
|  | ||||
| func TestStressInt64MinMaxSumCount(t *testing.T) { | ||||
| 	desc := metric.NewDescriptor("some_metric", metric.MeasureKind, core.Int64NumberKind) | ||||
| 	desc := metric.NewDescriptor("some_metric", metric.MeasureKind, metric.Int64NumberKind) | ||||
| 	mmsc := minmaxsumcount.New(&desc) | ||||
|  | ||||
| 	ctx, cancel := context.WithCancel(context.Background()) | ||||
| @@ -39,7 +38,7 @@ func TestStressInt64MinMaxSumCount(t *testing.T) { | ||||
| 			case <-ctx.Done(): | ||||
| 				return | ||||
| 			default: | ||||
| 				_ = mmsc.Update(ctx, core.NewInt64Number(v), &desc) | ||||
| 				_ = mmsc.Update(ctx, metric.NewInt64Number(v), &desc) | ||||
| 			} | ||||
| 			v++ | ||||
| 		} | ||||
|   | ||||
| @@ -129,7 +129,7 @@ type ( | ||||
| 		// labelset and recorder | ||||
| 		recorders map[label.Distinct]*labeledRecorder | ||||
|  | ||||
| 		callback func(func(core.Number, []core.KeyValue)) | ||||
| 		callback func(func(api.Number, []core.KeyValue)) | ||||
| 	} | ||||
|  | ||||
| 	labeledRecorder struct { | ||||
| @@ -160,7 +160,7 @@ func (s *syncInstrument) Implementation() interface{} { | ||||
| 	return s | ||||
| } | ||||
|  | ||||
| func (a *asyncInstrument) observe(number core.Number, labels []core.KeyValue) { | ||||
| func (a *asyncInstrument) observe(number api.Number, labels []core.KeyValue) { | ||||
| 	if err := aggregator.RangeTest(number, &a.descriptor); err != nil { | ||||
| 		a.meter.errorHandler(err) | ||||
| 		return | ||||
| @@ -295,7 +295,7 @@ func (s *syncInstrument) Bind(kvs []core.KeyValue) api.BoundSyncImpl { | ||||
| 	return s.acquireHandle(kvs, nil) | ||||
| } | ||||
|  | ||||
| func (s *syncInstrument) RecordOne(ctx context.Context, number core.Number, kvs []core.KeyValue) { | ||||
| func (s *syncInstrument) RecordOne(ctx context.Context, number api.Number, kvs []core.KeyValue) { | ||||
| 	h := s.acquireHandle(kvs, nil) | ||||
| 	defer h.Unbind() | ||||
| 	h.RecordOne(ctx, number) | ||||
| @@ -335,7 +335,7 @@ func (m *SDK) NewSyncInstrument(descriptor api.Descriptor) (api.SyncImpl, error) | ||||
| 	}, nil | ||||
| } | ||||
|  | ||||
| func (m *SDK) NewAsyncInstrument(descriptor api.Descriptor, callback func(func(core.Number, []core.KeyValue))) (api.AsyncImpl, error) { | ||||
| func (m *SDK) NewAsyncInstrument(descriptor api.Descriptor, callback func(func(api.Number, []core.KeyValue))) (api.AsyncImpl, error) { | ||||
| 	a := &asyncInstrument{ | ||||
| 		instrument: instrument{ | ||||
| 			descriptor: descriptor, | ||||
| @@ -484,7 +484,7 @@ func (m *SDK) RecordBatch(ctx context.Context, kvs []core.KeyValue, measurements | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (r *record) RecordOne(ctx context.Context, number core.Number) { | ||||
| func (r *record) RecordOne(ctx context.Context, number api.Number) { | ||||
| 	if r.recorder == nil { | ||||
| 		// The instrument is disabled according to the AggregationSelector. | ||||
| 		return | ||||
|   | ||||
| @@ -15,7 +15,6 @@ | ||||
| package simple // import "go.opentelemetry.io/otel/sdk/metric/selector/simple" | ||||
|  | ||||
| import ( | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	export "go.opentelemetry.io/otel/sdk/export/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/array" | ||||
| @@ -32,7 +31,7 @@ type ( | ||||
| 		config *ddsketch.Config | ||||
| 	} | ||||
| 	selectorHistogram struct { | ||||
| 		boundaries []core.Number | ||||
| 		boundaries []metric.Number | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| @@ -76,7 +75,7 @@ func NewWithExactMeasure() export.AggregationSelector { | ||||
| // histogram, and histogram aggregators for the three kinds of metric. This | ||||
| // selector uses more memory than the NewWithInexpensiveMeasure because it | ||||
| // uses a counter per bucket. | ||||
| func NewWithHistogramMeasure(boundaries []core.Number) export.AggregationSelector { | ||||
| func NewWithHistogramMeasure(boundaries []metric.Number) export.AggregationSelector { | ||||
| 	return selectorHistogram{boundaries: boundaries} | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -19,7 +19,6 @@ import ( | ||||
|  | ||||
| 	"github.com/stretchr/testify/require" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/api/core" | ||||
| 	"go.opentelemetry.io/otel/api/metric" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/array" | ||||
| 	"go.opentelemetry.io/otel/sdk/metric/aggregator/ddsketch" | ||||
| @@ -30,9 +29,9 @@ import ( | ||||
| ) | ||||
|  | ||||
| var ( | ||||
| 	testCounterDesc  = metric.NewDescriptor("counter", metric.CounterKind, core.Int64NumberKind) | ||||
| 	testMeasureDesc  = metric.NewDescriptor("measure", metric.MeasureKind, core.Int64NumberKind) | ||||
| 	testObserverDesc = metric.NewDescriptor("observer", metric.ObserverKind, core.Int64NumberKind) | ||||
| 	testCounterDesc  = metric.NewDescriptor("counter", metric.CounterKind, metric.Int64NumberKind) | ||||
| 	testMeasureDesc  = metric.NewDescriptor("measure", metric.MeasureKind, metric.Int64NumberKind) | ||||
| 	testObserverDesc = metric.NewDescriptor("observer", metric.ObserverKind, metric.Int64NumberKind) | ||||
| ) | ||||
|  | ||||
| func TestInexpensiveMeasure(t *testing.T) { | ||||
| @@ -57,7 +56,7 @@ func TestExactMeasure(t *testing.T) { | ||||
| } | ||||
|  | ||||
| func TestHistogramMeasure(t *testing.T) { | ||||
| 	ex := simple.NewWithHistogramMeasure([]core.Number{}) | ||||
| 	ex := simple.NewWithHistogramMeasure([]metric.Number{}) | ||||
| 	require.NotPanics(t, func() { _ = ex.AggregatorFor(&testCounterDesc).(*sum.Aggregator) }) | ||||
| 	require.NotPanics(t, func() { _ = ex.AggregatorFor(&testMeasureDesc).(*histogram.Aggregator) }) | ||||
| 	require.NotPanics(t, func() { _ = ex.AggregatorFor(&testObserverDesc).(*histogram.Aggregator) }) | ||||
|   | ||||
| @@ -74,17 +74,17 @@ type ( | ||||
|  | ||||
| 	testImpl struct { | ||||
| 		newInstrument  func(meter api.Meter, name string) SyncImpler | ||||
| 		getUpdateValue func() core.Number | ||||
| 		operate        func(interface{}, context.Context, core.Number, []core.KeyValue) | ||||
| 		getUpdateValue func() api.Number | ||||
| 		operate        func(interface{}, context.Context, api.Number, []core.KeyValue) | ||||
| 		newStore       func() interface{} | ||||
|  | ||||
| 		// storeCollect and storeExpect are the same for | ||||
| 		// counters, different for lastValues, to ensure we are | ||||
| 		// testing the timestamps correctly. | ||||
| 		storeCollect func(store interface{}, value core.Number, ts time.Time) | ||||
| 		storeExpect  func(store interface{}, value core.Number) | ||||
| 		readStore    func(store interface{}) core.Number | ||||
| 		equalValues  func(a, b core.Number) bool | ||||
| 		storeCollect func(store interface{}, value api.Number, ts time.Time) | ||||
| 		storeExpect  func(store interface{}, value api.Number) | ||||
| 		readStore    func(store interface{}) api.Number | ||||
| 		equalValues  func(a, b api.Number) bool | ||||
| 	} | ||||
|  | ||||
| 	SyncImpler interface { | ||||
| @@ -96,7 +96,7 @@ type ( | ||||
| 	// take the later timestamp. | ||||
| 	lastValueState struct { | ||||
| 		// raw has to be aligned for 64-bit atomic operations. | ||||
| 		raw core.Number | ||||
| 		raw api.Number | ||||
| 		ts  time.Time | ||||
| 	} | ||||
| ) | ||||
| @@ -340,11 +340,11 @@ func stressTest(t *testing.T, impl testImpl) { | ||||
| 	fixture.assertTest(numCollect) | ||||
| } | ||||
|  | ||||
| func int64sEqual(a, b core.Number) bool { | ||||
| func int64sEqual(a, b api.Number) bool { | ||||
| 	return a.AsInt64() == b.AsInt64() | ||||
| } | ||||
|  | ||||
| func float64sEqual(a, b core.Number) bool { | ||||
| func float64sEqual(a, b api.Number) bool { | ||||
| 	diff := math.Abs(a.AsFloat64() - b.AsFloat64()) | ||||
| 	return diff < math.Abs(a.AsFloat64())*epsilon | ||||
| } | ||||
| @@ -356,30 +356,30 @@ func intCounterTestImpl() testImpl { | ||||
| 		newInstrument: func(meter api.Meter, name string) SyncImpler { | ||||
| 			return Must(meter).NewInt64Counter(name + ".counter") | ||||
| 		}, | ||||
| 		getUpdateValue: func() core.Number { | ||||
| 		getUpdateValue: func() api.Number { | ||||
| 			for { | ||||
| 				x := int64(rand.Intn(100)) | ||||
| 				if x != 0 { | ||||
| 					return core.NewInt64Number(x) | ||||
| 					return api.NewInt64Number(x) | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		operate: func(inst interface{}, ctx context.Context, value core.Number, labels []core.KeyValue) { | ||||
| 		operate: func(inst interface{}, ctx context.Context, value api.Number, labels []core.KeyValue) { | ||||
| 			counter := inst.(api.Int64Counter) | ||||
| 			counter.Add(ctx, value.AsInt64(), labels...) | ||||
| 		}, | ||||
| 		newStore: func() interface{} { | ||||
| 			n := core.NewInt64Number(0) | ||||
| 			n := api.NewInt64Number(0) | ||||
| 			return &n | ||||
| 		}, | ||||
| 		storeCollect: func(store interface{}, value core.Number, _ time.Time) { | ||||
| 			store.(*core.Number).AddInt64Atomic(value.AsInt64()) | ||||
| 		storeCollect: func(store interface{}, value api.Number, _ time.Time) { | ||||
| 			store.(*api.Number).AddInt64Atomic(value.AsInt64()) | ||||
| 		}, | ||||
| 		storeExpect: func(store interface{}, value core.Number) { | ||||
| 			store.(*core.Number).AddInt64Atomic(value.AsInt64()) | ||||
| 		storeExpect: func(store interface{}, value api.Number) { | ||||
| 			store.(*api.Number).AddInt64Atomic(value.AsInt64()) | ||||
| 		}, | ||||
| 		readStore: func(store interface{}) core.Number { | ||||
| 			return store.(*core.Number).AsNumberAtomic() | ||||
| 		readStore: func(store interface{}) api.Number { | ||||
| 			return store.(*api.Number).AsNumberAtomic() | ||||
| 		}, | ||||
| 		equalValues: int64sEqual, | ||||
| 	} | ||||
| @@ -394,30 +394,30 @@ func floatCounterTestImpl() testImpl { | ||||
| 		newInstrument: func(meter api.Meter, name string) SyncImpler { | ||||
| 			return Must(meter).NewFloat64Counter(name + ".counter") | ||||
| 		}, | ||||
| 		getUpdateValue: func() core.Number { | ||||
| 		getUpdateValue: func() api.Number { | ||||
| 			for { | ||||
| 				x := rand.Float64() | ||||
| 				if x != 0 { | ||||
| 					return core.NewFloat64Number(x) | ||||
| 					return api.NewFloat64Number(x) | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
| 		operate: func(inst interface{}, ctx context.Context, value core.Number, labels []core.KeyValue) { | ||||
| 		operate: func(inst interface{}, ctx context.Context, value api.Number, labels []core.KeyValue) { | ||||
| 			counter := inst.(api.Float64Counter) | ||||
| 			counter.Add(ctx, value.AsFloat64(), labels...) | ||||
| 		}, | ||||
| 		newStore: func() interface{} { | ||||
| 			n := core.NewFloat64Number(0.0) | ||||
| 			n := api.NewFloat64Number(0.0) | ||||
| 			return &n | ||||
| 		}, | ||||
| 		storeCollect: func(store interface{}, value core.Number, _ time.Time) { | ||||
| 			store.(*core.Number).AddFloat64Atomic(value.AsFloat64()) | ||||
| 		storeCollect: func(store interface{}, value api.Number, _ time.Time) { | ||||
| 			store.(*api.Number).AddFloat64Atomic(value.AsFloat64()) | ||||
| 		}, | ||||
| 		storeExpect: func(store interface{}, value core.Number) { | ||||
| 			store.(*core.Number).AddFloat64Atomic(value.AsFloat64()) | ||||
| 		storeExpect: func(store interface{}, value api.Number) { | ||||
| 			store.(*api.Number).AddFloat64Atomic(value.AsFloat64()) | ||||
| 		}, | ||||
| 		readStore: func(store interface{}) core.Number { | ||||
| 			return store.(*core.Number).AsNumberAtomic() | ||||
| 		readStore: func(store interface{}) api.Number { | ||||
| 			return store.(*api.Number).AsNumberAtomic() | ||||
| 		}, | ||||
| 		equalValues: float64sEqual, | ||||
| 	} | ||||
| @@ -434,20 +434,20 @@ func intLastValueTestImpl() testImpl { | ||||
| 		newInstrument: func(meter api.Meter, name string) SyncImpler { | ||||
| 			return Must(meter).NewInt64Measure(name + ".lastvalue") | ||||
| 		}, | ||||
| 		getUpdateValue: func() core.Number { | ||||
| 		getUpdateValue: func() api.Number { | ||||
| 			r1 := rand.Int63() | ||||
| 			return core.NewInt64Number(rand.Int63() - r1) | ||||
| 			return api.NewInt64Number(rand.Int63() - r1) | ||||
| 		}, | ||||
| 		operate: func(inst interface{}, ctx context.Context, value core.Number, labels []core.KeyValue) { | ||||
| 		operate: func(inst interface{}, ctx context.Context, value api.Number, labels []core.KeyValue) { | ||||
| 			measure := inst.(api.Int64Measure) | ||||
| 			measure.Record(ctx, value.AsInt64(), labels...) | ||||
| 		}, | ||||
| 		newStore: func() interface{} { | ||||
| 			return &lastValueState{ | ||||
| 				raw: core.NewInt64Number(0), | ||||
| 				raw: api.NewInt64Number(0), | ||||
| 			} | ||||
| 		}, | ||||
| 		storeCollect: func(store interface{}, value core.Number, ts time.Time) { | ||||
| 		storeCollect: func(store interface{}, value api.Number, ts time.Time) { | ||||
| 			gs := store.(*lastValueState) | ||||
|  | ||||
| 			if !ts.Before(gs.ts) { | ||||
| @@ -455,11 +455,11 @@ func intLastValueTestImpl() testImpl { | ||||
| 				gs.raw.SetInt64Atomic(value.AsInt64()) | ||||
| 			} | ||||
| 		}, | ||||
| 		storeExpect: func(store interface{}, value core.Number) { | ||||
| 		storeExpect: func(store interface{}, value api.Number) { | ||||
| 			gs := store.(*lastValueState) | ||||
| 			gs.raw.SetInt64Atomic(value.AsInt64()) | ||||
| 		}, | ||||
| 		readStore: func(store interface{}) core.Number { | ||||
| 		readStore: func(store interface{}) api.Number { | ||||
| 			gs := store.(*lastValueState) | ||||
| 			return gs.raw.AsNumberAtomic() | ||||
| 		}, | ||||
| @@ -476,19 +476,19 @@ func floatLastValueTestImpl() testImpl { | ||||
| 		newInstrument: func(meter api.Meter, name string) SyncImpler { | ||||
| 			return Must(meter).NewFloat64Measure(name + ".lastvalue") | ||||
| 		}, | ||||
| 		getUpdateValue: func() core.Number { | ||||
| 			return core.NewFloat64Number((-0.5 + rand.Float64()) * 100000) | ||||
| 		getUpdateValue: func() api.Number { | ||||
| 			return api.NewFloat64Number((-0.5 + rand.Float64()) * 100000) | ||||
| 		}, | ||||
| 		operate: func(inst interface{}, ctx context.Context, value core.Number, labels []core.KeyValue) { | ||||
| 		operate: func(inst interface{}, ctx context.Context, value api.Number, labels []core.KeyValue) { | ||||
| 			measure := inst.(api.Float64Measure) | ||||
| 			measure.Record(ctx, value.AsFloat64(), labels...) | ||||
| 		}, | ||||
| 		newStore: func() interface{} { | ||||
| 			return &lastValueState{ | ||||
| 				raw: core.NewFloat64Number(0), | ||||
| 				raw: api.NewFloat64Number(0), | ||||
| 			} | ||||
| 		}, | ||||
| 		storeCollect: func(store interface{}, value core.Number, ts time.Time) { | ||||
| 		storeCollect: func(store interface{}, value api.Number, ts time.Time) { | ||||
| 			gs := store.(*lastValueState) | ||||
|  | ||||
| 			if !ts.Before(gs.ts) { | ||||
| @@ -496,11 +496,11 @@ func floatLastValueTestImpl() testImpl { | ||||
| 				gs.raw.SetFloat64Atomic(value.AsFloat64()) | ||||
| 			} | ||||
| 		}, | ||||
| 		storeExpect: func(store interface{}, value core.Number) { | ||||
| 		storeExpect: func(store interface{}, value api.Number) { | ||||
| 			gs := store.(*lastValueState) | ||||
| 			gs.raw.SetFloat64Atomic(value.AsFloat64()) | ||||
| 		}, | ||||
| 		readStore: func(store interface{}) core.Number { | ||||
| 		readStore: func(store interface{}) api.Number { | ||||
| 			gs := store.(*lastValueState) | ||||
| 			return gs.raw.AsNumberAtomic() | ||||
| 		}, | ||||
|   | ||||
		Reference in New Issue
	
	Block a user