Path: blob/main/component/otelcol/receiver/prometheus/internal/metricsutil_test.go
5414 views
// Copyright The OpenTelemetry Authors1//2// Licensed under the Apache License, Version 2.0 (the "License");3// you may not use this file except in compliance with the License.4// You may obtain a copy of the License at5//6// http://www.apache.org/licenses/LICENSE-2.07//8// Unless required by applicable law or agreed to in writing, software9// distributed under the License is distributed on an "AS IS" BASIS,10// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.11// See the License for the specific language governing permissions and12// limitations under the License.1314package internal1516import (17"go.opentelemetry.io/collector/pdata/pcommon"18"go.opentelemetry.io/collector/pdata/pmetric"19)2021type kv struct {22Key, Value string23}2425func metrics(metrics ...pmetric.Metric) pmetric.Metrics {26md := pmetric.NewMetrics()27ms := md.ResourceMetrics().AppendEmpty().ScopeMetrics().AppendEmpty().Metrics()28for _, metric := range metrics {29destMetric := ms.AppendEmpty()30metric.CopyTo(destMetric)31}3233return md34}3536func histogramPointRaw(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.HistogramDataPoint {37hdp := pmetric.NewHistogramDataPoint()38hdp.SetStartTimestamp(startTimestamp)39hdp.SetTimestamp(timestamp)4041attrs := hdp.Attributes()42for _, kv := range attributes {43attrs.PutStr(kv.Key, kv.Value)44}4546return hdp47}4849func histogramPoint(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, bounds []float64, counts []uint64) pmetric.HistogramDataPoint {50hdp := histogramPointRaw(attributes, startTimestamp, timestamp)51hdp.ExplicitBounds().FromRaw(bounds)52hdp.BucketCounts().FromRaw(counts)5354var sum float6455var count uint6456for i, bcount := range counts {57count += bcount58if i > 0 {59sum += float64(bcount) * bounds[i-1]60}61}62hdp.SetCount(count)63hdp.SetSum(sum)6465return hdp66}6768func histogramPointNoValue(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.HistogramDataPoint {69hdp := histogramPointRaw(attributes, startTimestamp, timestamp)70hdp.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true))7172return hdp73}7475func histogramMetric(name string, points ...pmetric.HistogramDataPoint) pmetric.Metric {76metric := pmetric.NewMetric()77metric.SetName(name)78histogram := metric.SetEmptyHistogram()79histogram.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative)8081destPointL := histogram.DataPoints()82// By default the AggregationTemporality is Cumulative until it'll be changed by the caller.83for _, point := range points {84destPoint := destPointL.AppendEmpty()85point.CopyTo(destPoint)86}8788return metric89}9091func doublePointRaw(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.NumberDataPoint {92ndp := pmetric.NewNumberDataPoint()93ndp.SetStartTimestamp(startTimestamp)94ndp.SetTimestamp(timestamp)9596for _, kv := range attributes {97ndp.Attributes().PutStr(kv.Key, kv.Value)98}99100return ndp101}102103func doublePoint(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, value float64) pmetric.NumberDataPoint {104ndp := doublePointRaw(attributes, startTimestamp, timestamp)105ndp.SetDoubleValue(value)106return ndp107}108109func doublePointNoValue(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.NumberDataPoint {110ndp := doublePointRaw(attributes, startTimestamp, timestamp)111ndp.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true))112return ndp113}114115func gaugeMetric(name string, points ...pmetric.NumberDataPoint) pmetric.Metric {116metric := pmetric.NewMetric()117metric.SetName(name)118destPointL := metric.SetEmptyGauge().DataPoints()119for _, point := range points {120destPoint := destPointL.AppendEmpty()121point.CopyTo(destPoint)122}123124return metric125}126127func sumMetric(name string, points ...pmetric.NumberDataPoint) pmetric.Metric {128metric := pmetric.NewMetric()129metric.SetName(name)130sum := metric.SetEmptySum()131sum.SetAggregationTemporality(pmetric.AggregationTemporalityCumulative)132sum.SetIsMonotonic(true)133134destPointL := sum.DataPoints()135for _, point := range points {136destPoint := destPointL.AppendEmpty()137point.CopyTo(destPoint)138}139140return metric141}142143func summaryPointRaw(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.SummaryDataPoint {144sdp := pmetric.NewSummaryDataPoint()145sdp.SetStartTimestamp(startTimestamp)146sdp.SetTimestamp(timestamp)147148for _, kv := range attributes {149sdp.Attributes().PutStr(kv.Key, kv.Value)150}151152return sdp153}154155func summaryPoint(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp, count uint64, sum float64, quantiles, values []float64) pmetric.SummaryDataPoint {156sdp := summaryPointRaw(attributes, startTimestamp, timestamp)157sdp.SetCount(count)158sdp.SetSum(sum)159160qvL := sdp.QuantileValues()161for i := 0; i < len(quantiles); i++ {162qvi := qvL.AppendEmpty()163qvi.SetQuantile(quantiles[i])164qvi.SetValue(values[i])165}166167return sdp168}169170func summaryPointNoValue(attributes []*kv, startTimestamp, timestamp pcommon.Timestamp) pmetric.SummaryDataPoint {171sdp := summaryPointRaw(attributes, startTimestamp, timestamp)172sdp.SetFlags(pmetric.DefaultDataPointFlags.WithNoRecordedValue(true))173174return sdp175}176177func summaryMetric(name string, points ...pmetric.SummaryDataPoint) pmetric.Metric {178metric := pmetric.NewMetric()179metric.SetName(name)180destPointL := metric.SetEmptySummary().DataPoints()181for _, point := range points {182destPoint := destPointL.AppendEmpty()183point.CopyTo(destPoint)184}185186return metric187}188189190