1// Copyright The OpenTelemetry Authors 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15package testdata 16 17import ( 18 "time" 19 20 "go.opentelemetry.io/collector/model/pdata" 21) 22 23var ( 24 TestMetricStartTime = time.Date(2020, 2, 11, 20, 26, 12, 321, time.UTC) 25 TestMetricStartTimestamp = pdata.TimestampFromTime(TestMetricStartTime) 26 27 TestMetricExemplarTime = time.Date(2020, 2, 11, 20, 26, 13, 123, time.UTC) 28 TestMetricExemplarTimestamp = pdata.TimestampFromTime(TestMetricExemplarTime) 29 30 TestMetricTime = time.Date(2020, 2, 11, 20, 26, 13, 789, time.UTC) 31 TestMetricTimestamp = pdata.TimestampFromTime(TestMetricTime) 32) 33 34const ( 35 TestGaugeDoubleMetricName = "gauge-double" 36 TestGaugeIntMetricName = "gauge-int" 37 TestSumDoubleMetricName = "counter-double" 38 TestSumIntMetricName = "counter-int" 39 TestDoubleHistogramMetricName = "double-histogram" 40 TestDoubleSummaryMetricName = "double-summary" 41) 42 43func GenerateMetricsOneEmptyResourceMetrics() pdata.Metrics { 44 md := pdata.NewMetrics() 45 md.ResourceMetrics().AppendEmpty() 46 return md 47} 48 49func GenerateMetricsNoLibraries() pdata.Metrics { 50 md := GenerateMetricsOneEmptyResourceMetrics() 51 ms0 := md.ResourceMetrics().At(0) 52 initResource1(ms0.Resource()) 53 return md 54} 55 56func GenerateMetricsOneEmptyInstrumentationLibrary() pdata.Metrics { 57 md := GenerateMetricsNoLibraries() 58 md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().AppendEmpty() 59 return md 60} 61 62func GenerateMetricsOneMetricNoResource() pdata.Metrics { 63 md := GenerateMetricsOneEmptyResourceMetrics() 64 rm0 := md.ResourceMetrics().At(0) 65 rm0ils0 := rm0.InstrumentationLibraryMetrics().AppendEmpty() 66 initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) 67 return md 68} 69 70func GenerateMetricsOneMetric() pdata.Metrics { 71 md := GenerateMetricsOneEmptyInstrumentationLibrary() 72 rm0ils0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 73 initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) 74 return md 75} 76 77func GenerateMetricsOneSumMetric() pdata.Metrics { 78 // TODO: this is currently used in place of GenerateMetricsOneMetric 79 // because the OTLP receiver converts IntSum to Sum types and causes a 80 // failure in TestSendMetrics. Once Sum supports setting either Int 81 // or Double, this function can be removed. 82 md := GenerateMetricsOneEmptyInstrumentationLibrary() 83 rm0ils0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 84 initSumMetric(rm0ils0.Metrics().AppendEmpty()) 85 return md 86} 87 88func GenerateMetricsTwoMetrics() pdata.Metrics { 89 md := GenerateMetricsOneEmptyInstrumentationLibrary() 90 rm0ils0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 91 initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) 92 initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) 93 return md 94} 95 96func GenerateMetricsTwoSumMetrics() pdata.Metrics { 97 // TODO: this is currently used in place of GenerateMetricsTwoMetrics 98 // because the OTLP receiver converts IntSum to Sum types and causes a 99 // failure in TestSendMetrics. Once Sum supports setting either Int 100 // or Double, this function can be removed. 101 md := GenerateMetricsOneEmptyInstrumentationLibrary() 102 rm0ils0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 103 initSumMetric(rm0ils0.Metrics().AppendEmpty()) 104 initSumMetric(rm0ils0.Metrics().AppendEmpty()) 105 return md 106} 107 108func GenerateMetricsOneCounterOneSummaryMetrics() pdata.Metrics { 109 md := GenerateMetricsOneEmptyInstrumentationLibrary() 110 rm0ils0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 111 initSumIntMetric(rm0ils0.Metrics().AppendEmpty()) 112 initDoubleSummaryMetric(rm0ils0.Metrics().AppendEmpty()) 113 return md 114} 115 116func GenerateMetricsOneMetricNoLabels() pdata.Metrics { 117 md := GenerateMetricsOneMetric() 118 dps := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0).Metrics().At(0).Sum().DataPoints() 119 dps.At(0).LabelsMap().InitFromMap(map[string]string{}) 120 dps.At(1).LabelsMap().InitFromMap(map[string]string{}) 121 return md 122} 123 124func GenerateMetricsAllTypesNoDataPoints() pdata.Metrics { 125 md := GenerateMetricsOneEmptyInstrumentationLibrary() 126 ilm0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 127 ms := ilm0.Metrics() 128 initMetric(ms.AppendEmpty(), TestGaugeDoubleMetricName, pdata.MetricDataTypeGauge) 129 initMetric(ms.AppendEmpty(), TestGaugeIntMetricName, pdata.MetricDataTypeGauge) 130 initMetric(ms.AppendEmpty(), TestSumDoubleMetricName, pdata.MetricDataTypeSum) 131 initMetric(ms.AppendEmpty(), TestSumIntMetricName, pdata.MetricDataTypeSum) 132 initMetric(ms.AppendEmpty(), TestDoubleHistogramMetricName, pdata.MetricDataTypeHistogram) 133 initMetric(ms.AppendEmpty(), TestDoubleSummaryMetricName, pdata.MetricDataTypeSummary) 134 return md 135} 136 137func GenerateMetricsAllTypesEmptyDataPoint() pdata.Metrics { 138 md := GenerateMetricsOneEmptyInstrumentationLibrary() 139 ilm0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 140 ms := ilm0.Metrics() 141 142 doubleGauge := ms.AppendEmpty() 143 initMetric(doubleGauge, TestGaugeDoubleMetricName, pdata.MetricDataTypeGauge) 144 doubleGauge.Gauge().DataPoints().AppendEmpty() 145 intGauge := ms.AppendEmpty() 146 initMetric(intGauge, TestGaugeIntMetricName, pdata.MetricDataTypeGauge) 147 intGauge.Gauge().DataPoints().AppendEmpty() 148 doubleSum := ms.AppendEmpty() 149 initMetric(doubleSum, TestSumDoubleMetricName, pdata.MetricDataTypeSum) 150 doubleSum.Sum().DataPoints().AppendEmpty() 151 intSum := ms.AppendEmpty() 152 initMetric(intSum, TestSumIntMetricName, pdata.MetricDataTypeSum) 153 intSum.Sum().DataPoints().AppendEmpty() 154 histogram := ms.AppendEmpty() 155 initMetric(histogram, TestDoubleHistogramMetricName, pdata.MetricDataTypeHistogram) 156 histogram.Histogram().DataPoints().AppendEmpty() 157 summary := ms.AppendEmpty() 158 initMetric(summary, TestDoubleSummaryMetricName, pdata.MetricDataTypeSummary) 159 summary.Summary().DataPoints().AppendEmpty() 160 return md 161} 162 163func GenerateMetricsMetricTypeInvalid() pdata.Metrics { 164 md := GenerateMetricsOneEmptyInstrumentationLibrary() 165 ilm0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 166 initMetric(ilm0.Metrics().AppendEmpty(), TestSumIntMetricName, pdata.MetricDataTypeNone) 167 return md 168} 169 170func GeneratMetricsAllTypesWithSampleDatapoints() pdata.Metrics { 171 md := GenerateMetricsOneEmptyInstrumentationLibrary() 172 173 ilm := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 174 ms := ilm.Metrics() 175 initGaugeIntMetric(ms.AppendEmpty()) 176 initGaugeDoubleMetric(ms.AppendEmpty()) 177 initSumIntMetric(ms.AppendEmpty()) 178 initSumDoubleMetric(ms.AppendEmpty()) 179 initDoubleHistogramMetric(ms.AppendEmpty()) 180 initDoubleSummaryMetric(ms.AppendEmpty()) 181 182 return md 183} 184 185func initSumMetric(im pdata.Metric) { 186 initMetric(im, TestSumIntMetricName, pdata.MetricDataTypeSum) 187 188 idps := im.Sum().DataPoints() 189 idp0 := idps.AppendEmpty() 190 initMetricLabels1(idp0.LabelsMap()) 191 idp0.SetStartTimestamp(TestMetricStartTimestamp) 192 idp0.SetTimestamp(TestMetricTimestamp) 193 idp0.SetDoubleVal(123) 194 idp1 := idps.AppendEmpty() 195 initMetricLabels2(idp1.LabelsMap()) 196 idp1.SetStartTimestamp(TestMetricStartTimestamp) 197 idp1.SetTimestamp(TestMetricTimestamp) 198 idp1.SetDoubleVal(456) 199} 200 201func initGaugeIntMetric(im pdata.Metric) { 202 initMetric(im, TestGaugeIntMetricName, pdata.MetricDataTypeGauge) 203 204 idps := im.Gauge().DataPoints() 205 idp0 := idps.AppendEmpty() 206 initMetricLabels1(idp0.LabelsMap()) 207 idp0.SetStartTimestamp(TestMetricStartTimestamp) 208 idp0.SetTimestamp(TestMetricTimestamp) 209 idp0.SetIntVal(123) 210 idp1 := idps.AppendEmpty() 211 initMetricLabels2(idp1.LabelsMap()) 212 idp1.SetStartTimestamp(TestMetricStartTimestamp) 213 idp1.SetTimestamp(TestMetricTimestamp) 214 idp1.SetIntVal(456) 215} 216 217func initGaugeDoubleMetric(im pdata.Metric) { 218 initMetric(im, TestGaugeDoubleMetricName, pdata.MetricDataTypeGauge) 219 220 idps := im.Gauge().DataPoints() 221 idp0 := idps.AppendEmpty() 222 initMetricLabels12(idp0.LabelsMap()) 223 idp0.SetStartTimestamp(TestMetricStartTimestamp) 224 idp0.SetTimestamp(TestMetricTimestamp) 225 idp0.SetDoubleVal(1.23) 226 idp1 := idps.AppendEmpty() 227 initMetricLabels13(idp1.LabelsMap()) 228 idp1.SetStartTimestamp(TestMetricStartTimestamp) 229 idp1.SetTimestamp(TestMetricTimestamp) 230 idp1.SetDoubleVal(4.56) 231} 232 233func initSumIntMetric(im pdata.Metric) { 234 initMetric(im, TestSumIntMetricName, pdata.MetricDataTypeSum) 235 236 idps := im.Sum().DataPoints() 237 idp0 := idps.AppendEmpty() 238 initMetricLabels1(idp0.LabelsMap()) 239 idp0.SetStartTimestamp(TestMetricStartTimestamp) 240 idp0.SetTimestamp(TestMetricTimestamp) 241 idp0.SetIntVal(123) 242 idp1 := idps.AppendEmpty() 243 initMetricLabels2(idp1.LabelsMap()) 244 idp1.SetStartTimestamp(TestMetricStartTimestamp) 245 idp1.SetTimestamp(TestMetricTimestamp) 246 idp1.SetIntVal(456) 247} 248 249func initSumDoubleMetric(dm pdata.Metric) { 250 initMetric(dm, TestSumDoubleMetricName, pdata.MetricDataTypeSum) 251 252 ddps := dm.Sum().DataPoints() 253 ddp0 := ddps.AppendEmpty() 254 initMetricLabels12(ddp0.LabelsMap()) 255 ddp0.SetStartTimestamp(TestMetricStartTimestamp) 256 ddp0.SetTimestamp(TestMetricTimestamp) 257 ddp0.SetDoubleVal(1.23) 258 259 ddp1 := ddps.AppendEmpty() 260 initMetricLabels13(ddp1.LabelsMap()) 261 ddp1.SetStartTimestamp(TestMetricStartTimestamp) 262 ddp1.SetTimestamp(TestMetricTimestamp) 263 ddp1.SetDoubleVal(4.56) 264} 265 266func initDoubleHistogramMetric(hm pdata.Metric) { 267 initMetric(hm, TestDoubleHistogramMetricName, pdata.MetricDataTypeHistogram) 268 269 hdps := hm.Histogram().DataPoints() 270 hdp0 := hdps.AppendEmpty() 271 initMetricLabels13(hdp0.LabelsMap()) 272 hdp0.SetStartTimestamp(TestMetricStartTimestamp) 273 hdp0.SetTimestamp(TestMetricTimestamp) 274 hdp0.SetCount(1) 275 hdp0.SetSum(15) 276 hdp1 := hdps.AppendEmpty() 277 initMetricLabels2(hdp1.LabelsMap()) 278 hdp1.SetStartTimestamp(TestMetricStartTimestamp) 279 hdp1.SetTimestamp(TestMetricTimestamp) 280 hdp1.SetCount(1) 281 hdp1.SetSum(15) 282 hdp1.SetBucketCounts([]uint64{0, 1}) 283 exemplar := hdp1.Exemplars().AppendEmpty() 284 exemplar.SetTimestamp(TestMetricExemplarTimestamp) 285 exemplar.SetDoubleVal(15) 286 initMetricAttachment(exemplar.FilteredLabels()) 287 hdp1.SetExplicitBounds([]float64{1}) 288} 289 290func initDoubleSummaryMetric(sm pdata.Metric) { 291 initMetric(sm, TestDoubleSummaryMetricName, pdata.MetricDataTypeSummary) 292 293 sdps := sm.Summary().DataPoints() 294 sdp0 := sdps.AppendEmpty() 295 initMetricLabels13(sdp0.LabelsMap()) 296 sdp0.SetStartTimestamp(TestMetricStartTimestamp) 297 sdp0.SetTimestamp(TestMetricTimestamp) 298 sdp0.SetCount(1) 299 sdp0.SetSum(15) 300 sdp1 := sdps.AppendEmpty() 301 initMetricLabels2(sdp1.LabelsMap()) 302 sdp1.SetStartTimestamp(TestMetricStartTimestamp) 303 sdp1.SetTimestamp(TestMetricTimestamp) 304 sdp1.SetCount(1) 305 sdp1.SetSum(15) 306 307 quantile := sdp1.QuantileValues().AppendEmpty() 308 quantile.SetQuantile(0.01) 309 quantile.SetValue(15) 310} 311 312func initMetric(m pdata.Metric, name string, ty pdata.MetricDataType) { 313 m.SetName(name) 314 m.SetDescription("") 315 m.SetUnit("1") 316 m.SetDataType(ty) 317 switch ty { 318 case pdata.MetricDataTypeSum: 319 sum := m.Sum() 320 sum.SetIsMonotonic(true) 321 sum.SetAggregationTemporality(pdata.AggregationTemporalityCumulative) 322 case pdata.MetricDataTypeHistogram: 323 histo := m.Histogram() 324 histo.SetAggregationTemporality(pdata.AggregationTemporalityCumulative) 325 } 326} 327 328func GenerateMetricsManyMetricsSameResource(metricsCount int) pdata.Metrics { 329 md := GenerateMetricsOneEmptyInstrumentationLibrary() 330 rs0ilm0 := md.ResourceMetrics().At(0).InstrumentationLibraryMetrics().At(0) 331 rs0ilm0.Metrics().EnsureCapacity(metricsCount) 332 for i := 0; i < metricsCount; i++ { 333 initSumIntMetric(rs0ilm0.Metrics().AppendEmpty()) 334 } 335 return md 336} 337