diff --git a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/.publicApi/PublicAPI.Unshipped.txt b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/.publicApi/PublicAPI.Unshipped.txt
index 043f62a17a9..92eaa1e4111 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/.publicApi/PublicAPI.Unshipped.txt
+++ b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/.publicApi/PublicAPI.Unshipped.txt
@@ -1,8 +1,6 @@
Microsoft.AspNetCore.Builder.PrometheusExporterApplicationBuilderExtensions
Microsoft.AspNetCore.Builder.PrometheusExporterEndpointRouteBuilderExtensions
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions
-OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.DisableTimestamp.get -> bool
-OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.DisableTimestamp.set -> void
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.DisableTotalNameSuffixForCounters.get -> bool
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.DisableTotalNameSuffixForCounters.set -> void
OpenTelemetry.Exporter.PrometheusAspNetCoreOptions.PrometheusAspNetCoreOptions() -> void
diff --git a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/CHANGELOG.md b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/CHANGELOG.md
index c96e75e72b4..de95712d83e 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/CHANGELOG.md
+++ b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/CHANGELOG.md
@@ -7,6 +7,10 @@ Notes](../../RELEASENOTES.md).
## Unreleased
+* **Breaking Change** Removed `DisableTimestamp` property from
+ `PrometheusAspNetCoreOptions`.
+ ([#7176](https://github.com/open-telemetry/opentelemetry-dotnet/pull/7176))
+
## 1.15.3-beta.1
Released 2026-Apr-21
diff --git a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusAspNetCoreOptions.cs b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusAspNetCoreOptions.cs
index 171eb465692..ed8186ec88d 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusAspNetCoreOptions.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.AspNetCore/PrometheusAspNetCoreOptions.cs
@@ -38,14 +38,5 @@ public int ScrapeResponseCacheDurationMilliseconds
set => this.ExporterOptions.ScrapeResponseCacheDurationMilliseconds = value;
}
- ///
- /// Gets or sets a value indicating whether timestamps should be disabled. Default value: .
- ///
- public bool DisableTimestamp
- {
- get => this.ExporterOptions.DisableTimestamp;
- set => this.ExporterOptions.DisableTimestamp = value;
- }
-
internal PrometheusExporterOptions ExporterOptions { get; } = new();
}
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/.publicApi/PublicAPI.Unshipped.txt b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/.publicApi/PublicAPI.Unshipped.txt
index 6cfe347e86a..5852bbbb6f5 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/.publicApi/PublicAPI.Unshipped.txt
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/.publicApi/PublicAPI.Unshipped.txt
@@ -3,8 +3,6 @@ OpenTelemetry.Exporter.PrometheusHttpListenerOptions.Host.get -> string!
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.Host.set -> void
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.Port.get -> int
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.Port.set -> void
-OpenTelemetry.Exporter.PrometheusHttpListenerOptions.DisableTimestamp.get -> bool
-OpenTelemetry.Exporter.PrometheusHttpListenerOptions.DisableTimestamp.set -> void
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.DisableTotalNameSuffixForCounters.get -> bool
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.DisableTotalNameSuffixForCounters.set -> void
OpenTelemetry.Exporter.PrometheusHttpListenerOptions.UriPrefixes.get -> System.Collections.Generic.IReadOnlyCollection!
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/CHANGELOG.md b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/CHANGELOG.md
index e157eff0f1b..20bc9022c58 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/CHANGELOG.md
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/CHANGELOG.md
@@ -11,7 +11,11 @@ Notes](../../RELEASENOTES.md).
for configuring the HTTP listener endpoint. The
`PrometheusHttpListenerOptions.UriPrefixes` property is now obsolete and
will be removed in the stable release.
- ([#7107](https://github.com/open-telemetry/opentelemetry-dotnet/pull/7114))
+ ([#7114](https://github.com/open-telemetry/opentelemetry-dotnet/pull/7114))
+
+* **Breaking Change** Removed `DisableTimestamp` property from
+ `PrometheusHttpListenerOptions`.
+ ([#7176](https://github.com/open-telemetry/opentelemetry-dotnet/pull/7176))
## 1.15.3-beta.1
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusCollectionManager.cs b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusCollectionManager.cs
index 02a40a5470c..1163ce075aa 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusCollectionManager.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusCollectionManager.cs
@@ -276,8 +276,7 @@ private ExportResult OnCollect(in Batch metrics)
cursor,
metric,
this.GetPrometheusMetric(metric),
- this.exporter.OpenMetricsRequested,
- this.exporter.DisableTimestamp);
+ this.exporter.OpenMetricsRequested);
break;
}
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporter.cs b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporter.cs
index 9466d68c607..3aee061180b 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporter.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporter.cs
@@ -25,7 +25,6 @@ public PrometheusExporter(PrometheusExporterOptions options)
this.ScrapeResponseCacheDurationMilliseconds = options.ScrapeResponseCacheDurationMilliseconds;
this.DisableTotalNameSuffixForCounters = options.DisableTotalNameSuffixForCounters;
- this.DisableTimestamp = options.DisableTimestamp;
this.CollectionManager = new PrometheusCollectionManager(this);
}
@@ -49,8 +48,6 @@ public PrometheusExporter(PrometheusExporterOptions options)
internal bool OpenMetricsRequested { get; set; }
- internal bool DisableTimestamp { get; set; }
-
internal Resource Resource
{
get => field ??= this.ParentProvider.GetResource();
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporterOptions.cs b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporterOptions.cs
index 9f2f03bb5c9..3ffcba0ad64 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporterOptions.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusExporterOptions.cs
@@ -10,7 +10,10 @@ namespace OpenTelemetry.Exporter.Prometheus;
///
internal sealed class PrometheusExporterOptions
{
- private int scrapeResponseCacheDurationMilliseconds = 300;
+ public PrometheusExporterOptions()
+ {
+ this.ScrapeResponseCacheDurationMilliseconds = 300;
+ }
///
/// Gets or sets the cache duration in milliseconds for scrape responses. Default value: 300.
@@ -20,12 +23,11 @@ internal sealed class PrometheusExporterOptions
///
public int ScrapeResponseCacheDurationMilliseconds
{
- get => this.scrapeResponseCacheDurationMilliseconds;
+ get => field;
set
{
Guard.ThrowIfOutOfRange(value, min: 0);
-
- this.scrapeResponseCacheDurationMilliseconds = value;
+ field = value;
}
}
@@ -33,9 +35,4 @@ public int ScrapeResponseCacheDurationMilliseconds
/// Gets or sets a value indicating whether addition of _total suffix for counter metric names is disabled. Default value: .
///
public bool DisableTotalNameSuffixForCounters { get; set; }
-
- ///
- /// Gets or sets a value indicating whether timestamps should be disabled. Default value: .
- ///
- public bool DisableTimestamp { get; set; }
}
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializer.cs b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializer.cs
index 53034b42b64..26dbf9d78be 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializer.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializer.cs
@@ -351,32 +351,6 @@ public static int WriteScopeInfo(byte[] buffer, int cursor, string scopeName)
return cursor;
}
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
- public static int WriteTimestamp(byte[] buffer, int cursor, long value, bool useOpenMetrics)
- {
- if (useOpenMetrics)
- {
- cursor = WriteLong(buffer, cursor, value / 1000);
- buffer[cursor++] = unchecked((byte)'.');
-
- var millis = value % 1000;
-
- if (millis < 100)
- {
- buffer[cursor++] = unchecked((byte)'0');
- }
-
- if (millis < 10)
- {
- buffer[cursor++] = unchecked((byte)'0');
- }
-
- return WriteLong(buffer, cursor, millis);
- }
-
- return WriteLong(buffer, cursor, value);
- }
-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static int WriteTags(byte[] buffer, int cursor, Metric metric, ReadOnlyTagCollection tags, bool writeEnclosingBraces = true)
{
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializerExt.cs b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializerExt.cs
index 613f7acf4d7..53be3e62334 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializerExt.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/Internal/PrometheusSerializerExt.cs
@@ -22,7 +22,7 @@ public static bool CanWriteMetric(Metric metric)
return true;
}
- public static int WriteMetric(byte[] buffer, int cursor, Metric metric, PrometheusMetric prometheusMetric, bool openMetricsRequested, bool disableTimestamp)
+ public static int WriteMetric(byte[] buffer, int cursor, Metric metric, PrometheusMetric prometheusMetric, bool openMetricsRequested)
{
cursor = WriteTypeMetadata(buffer, cursor, prometheusMetric, openMetricsRequested);
cursor = WriteUnitMetadata(buffer, cursor, prometheusMetric, openMetricsRequested);
@@ -32,8 +32,6 @@ public static int WriteMetric(byte[] buffer, int cursor, Metric metric, Promethe
{
foreach (ref readonly var metricPoint in metric.GetMetricPoints())
{
- var timestamp = metricPoint.EndTime.ToUnixTimeMilliseconds();
-
// Counter and Gauge
cursor = WriteMetricName(buffer, cursor, prometheusMetric, openMetricsRequested);
cursor = WriteTags(buffer, cursor, metric, metricPoint.Tags);
@@ -45,31 +43,15 @@ public static int WriteMetric(byte[] buffer, int cursor, Metric metric, Promethe
// for each MetricPoint
if (((int)metric.MetricType & 0b_0000_1111) == 0x0a /* I8 */)
{
- if (metric.MetricType.IsSum())
- {
- cursor = WriteLong(buffer, cursor, metricPoint.GetSumLong());
- }
- else
- {
- cursor = WriteLong(buffer, cursor, metricPoint.GetGaugeLastValueLong());
- }
+ cursor = metric.MetricType.IsSum()
+ ? WriteLong(buffer, cursor, metricPoint.GetSumLong())
+ : WriteLong(buffer, cursor, metricPoint.GetGaugeLastValueLong());
}
else
{
- if (metric.MetricType.IsSum())
- {
- cursor = WriteDouble(buffer, cursor, metricPoint.GetSumDouble());
- }
- else
- {
- cursor = WriteDouble(buffer, cursor, metricPoint.GetGaugeLastValueDouble());
- }
- }
-
- if (!disableTimestamp)
- {
- buffer[cursor++] = unchecked((byte)' ');
- cursor = WriteTimestamp(buffer, cursor, timestamp, openMetricsRequested);
+ cursor = metric.MetricType.IsSum()
+ ? WriteDouble(buffer, cursor, metricPoint.GetSumDouble())
+ : WriteDouble(buffer, cursor, metricPoint.GetGaugeLastValueDouble());
}
buffer[cursor++] = ASCII_LINEFEED;
@@ -80,7 +62,6 @@ public static int WriteMetric(byte[] buffer, int cursor, Metric metric, Promethe
foreach (ref readonly var metricPoint in metric.GetMetricPoints())
{
var tags = metricPoint.Tags;
- var timestamp = metricPoint.EndTime.ToUnixTimeMilliseconds();
long totalCount = 0;
foreach (var histogramMeasurement in metricPoint.GetHistogramBuckets())
@@ -93,25 +74,14 @@ public static int WriteMetric(byte[] buffer, int cursor, Metric metric, Promethe
cursor = WriteAsciiStringNoEscape(buffer, cursor, "le=\"");
- if (histogramMeasurement.ExplicitBound != double.PositiveInfinity)
- {
- cursor = WriteDouble(buffer, cursor, histogramMeasurement.ExplicitBound);
- }
- else
- {
- cursor = WriteAsciiStringNoEscape(buffer, cursor, "+Inf");
- }
+ cursor = histogramMeasurement.ExplicitBound != double.PositiveInfinity
+ ? WriteDouble(buffer, cursor, histogramMeasurement.ExplicitBound)
+ : WriteAsciiStringNoEscape(buffer, cursor, "+Inf");
cursor = WriteAsciiStringNoEscape(buffer, cursor, "\"} ");
cursor = WriteLong(buffer, cursor, totalCount);
- if (!disableTimestamp)
- {
- buffer[cursor++] = unchecked((byte)' ');
- cursor = WriteTimestamp(buffer, cursor, timestamp, openMetricsRequested);
- }
-
buffer[cursor++] = ASCII_LINEFEED;
}
@@ -124,12 +94,6 @@ public static int WriteMetric(byte[] buffer, int cursor, Metric metric, Promethe
cursor = WriteDouble(buffer, cursor, metricPoint.GetHistogramSum());
- if (!disableTimestamp)
- {
- buffer[cursor++] = unchecked((byte)' ');
- cursor = WriteTimestamp(buffer, cursor, timestamp, openMetricsRequested);
- }
-
buffer[cursor++] = ASCII_LINEFEED;
// Histogram count
@@ -141,12 +105,6 @@ public static int WriteMetric(byte[] buffer, int cursor, Metric metric, Promethe
cursor = WriteLong(buffer, cursor, metricPoint.GetHistogramCount());
- if (!disableTimestamp)
- {
- buffer[cursor++] = unchecked((byte)' ');
- cursor = WriteTimestamp(buffer, cursor, timestamp, openMetricsRequested);
- }
-
buffer[cursor++] = ASCII_LINEFEED;
}
}
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerMeterProviderBuilderExtensions.cs b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerMeterProviderBuilderExtensions.cs
index 508d4358e58..94eea0f5742 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerMeterProviderBuilderExtensions.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerMeterProviderBuilderExtensions.cs
@@ -69,7 +69,6 @@ private static BaseExportingMetricReader BuildPrometheusHttpListenerMetricReader
{
ScrapeResponseCacheDurationMilliseconds = 0,
DisableTotalNameSuffixForCounters = options.DisableTotalNameSuffixForCounters,
- DisableTimestamp = options.DisableTimestamp,
});
var reader = new BaseExportingMetricReader(exporter)
diff --git a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerOptions.cs b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerOptions.cs
index 1a1ef92ecd4..764e79d7c3d 100644
--- a/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerOptions.cs
+++ b/src/OpenTelemetry.Exporter.Prometheus.HttpListener/PrometheusHttpListenerOptions.cs
@@ -37,11 +37,6 @@ public class PrometheusHttpListenerOptions
///
public bool DisableTotalNameSuffixForCounters { get; set; }
- ///
- /// Gets or sets a value indicating whether timestamps should be disabled. Default value: .
- ///
- public bool DisableTimestamp { get; set; }
-
///
/// Gets or sets the URI (Uniform Resource Identifier) prefixes to use for the http listener.
/// Default value: ["http://localhost:9464/"].
diff --git a/test/Benchmarks/Exporter/PrometheusSerializerBenchmarks.cs b/test/Benchmarks/Exporter/PrometheusSerializerBenchmarks.cs
index f6e6295020a..0e7aa514da5 100644
--- a/test/Benchmarks/Exporter/PrometheusSerializerBenchmarks.cs
+++ b/test/Benchmarks/Exporter/PrometheusSerializerBenchmarks.cs
@@ -50,7 +50,6 @@ public void GlobalCleanup()
this.meterProvider?.Dispose();
}
- // TODO: this has a dependency on https://github.com/open-telemetry/opentelemetry-dotnet/issues/2361
[Benchmark]
public void WriteMetric()
{
@@ -59,7 +58,7 @@ public void WriteMetric()
var cursor = 0;
foreach (var metric in this.metrics)
{
- cursor = PrometheusSerializer.WriteMetric(this.buffer, cursor, metric, this.GetPrometheusMetric(metric), openMetricsRequested: false, disableTimestamp: false);
+ cursor = PrometheusSerializer.WriteMetric(this.buffer, cursor, metric, this.GetPrometheusMetric(metric), openMetricsRequested: false);
}
}
}
diff --git a/test/OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests/PrometheusExporterMiddlewareTests.cs b/test/OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests/PrometheusExporterMiddlewareTests.cs
index 46ffee9046e..8d0ef1b6483 100644
--- a/test/OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests/PrometheusExporterMiddlewareTests.cs
+++ b/test/OpenTelemetry.Exporter.Prometheus.AspNetCore.Tests/PrometheusExporterMiddlewareTests.cs
@@ -3,7 +3,6 @@
#if !NETFRAMEWORK
using System.Diagnostics.Metrics;
-using System.Globalization;
using System.Net;
using System.Text.RegularExpressions;
using Microsoft.AspNetCore.Builder;
@@ -52,20 +51,15 @@ public Task PrometheusExporterMiddlewareIntegration_OptionsFallback()
services => services.Configure(o => o.ScrapeEndpointPath = null));
}
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public Task PrometheusExporterMiddlewareIntegration_OptionsViaAddPrometheusExporter(bool disableTimestamp)
- {
- return RunPrometheusExporterMiddlewareIntegrationTest(
+ [Fact]
+ public Task PrometheusExporterMiddlewareIntegration_OptionsViaAddPrometheusExporter() =>
+ RunPrometheusExporterMiddlewareIntegrationTest(
"/metrics_from_AddPrometheusExporter",
app => app.UseOpenTelemetryPrometheusScrapingEndpoint(),
configureOptions: o =>
{
o.ScrapeEndpointPath = "/metrics_from_AddPrometheusExporter";
- o.DisableTimestamp = disableTimestamp;
});
- }
[Fact]
public Task PrometheusExporterMiddlewareIntegration_PathOverride()
@@ -239,22 +233,18 @@ await RunPrometheusExporterMiddlewareIntegrationTest(
}
[Fact]
- public Task PrometheusExporterMiddlewareIntegration_TextPlainResponse()
- {
- return RunPrometheusExporterMiddlewareIntegrationTest(
+ public Task PrometheusExporterMiddlewareIntegration_TextPlainResponse() =>
+ RunPrometheusExporterMiddlewareIntegrationTest(
"/metrics",
app => app.UseOpenTelemetryPrometheusScrapingEndpoint(),
acceptHeader: "text/plain");
- }
[Fact]
- public Task PrometheusExporterMiddlewareIntegration_UseOpenMetricsVersionHeader()
- {
- return RunPrometheusExporterMiddlewareIntegrationTest(
+ public Task PrometheusExporterMiddlewareIntegration_UseOpenMetricsVersionHeader() =>
+ RunPrometheusExporterMiddlewareIntegrationTest(
"/metrics",
app => app.UseOpenTelemetryPrometheusScrapingEndpoint(),
acceptHeader: "application/openmetrics-text; version=1.0.0");
- }
[Fact]
public Task PrometheusExporterMiddlewareIntegration_TextPlainResponse_WithMeterTags()
@@ -290,9 +280,7 @@ public Task PrometheusExporterMiddlewareIntegration_UseOpenMetricsVersionHeader_
[Fact]
public async Task PrometheusExporterMiddlewareIntegration_CanServeOpenMetricsAndPlainFormats_NoMeterTags()
- {
- await RunPrometheusExporterMiddlewareIntegrationTestWithBothFormats();
- }
+ => await RunPrometheusExporterMiddlewareIntegrationTestWithBothFormats();
[Fact]
public async Task PrometheusExporterMiddlewareIntegration_CanServeOpenMetricsAndPlainFormats_WithMeterTags()
@@ -388,8 +376,6 @@ private static async Task RunPrometheusExporterMiddlewareIntegrationTestWithBoth
using var meter = new Meter(MeterName, MeterVersion, meterTags);
- var beginTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
-
var counter = meter.CreateCounter("counter_double", unit: "By");
counter.Add(100.18D, counterTags);
counter.Add(0.99D, counterTags);
@@ -407,8 +393,7 @@ private static async Task RunPrometheusExporterMiddlewareIntegrationTestWithBoth
Method = HttpMethod.Get,
};
using var response = await client.SendAsync(request);
- var endTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
- await VerifyAsync(beginTimestamp, endTimestamp, response, testCase, meterTags);
+ await VerifyAsync(response, testCase, meterTags);
}
await host.StopAsync();
@@ -437,8 +422,6 @@ private static async Task RunPrometheusExporterMiddlewareIntegrationTest(
using var meter = new Meter(MeterName, MeterVersion, meterTags);
- var beginTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
-
var counter = meter.CreateCounter("counter_double", unit: "By");
if (!skipMetrics)
{
@@ -455,13 +438,11 @@ private static async Task RunPrometheusExporterMiddlewareIntegrationTest(
using var response = await client.GetAsync(new Uri(path, UriKind.Relative));
- var endTimestamp = DateTimeOffset.Now.ToUnixTimeMilliseconds();
-
if (!skipMetrics)
{
var options = new PrometheusAspNetCoreOptions();
configureOptions?.Invoke(options);
- await VerifyAsync(beginTimestamp, endTimestamp, response, requestOpenMetrics, meterTags, options.DisableTimestamp);
+ await VerifyAsync(response, requestOpenMetrics, meterTags);
}
else
{
@@ -473,7 +454,7 @@ private static async Task RunPrometheusExporterMiddlewareIntegrationTest(
await host.StopAsync();
}
- private static async Task VerifyAsync(long beginTimestamp, long endTimestamp, HttpResponseMessage response, bool requestOpenMetrics, KeyValuePair[]? meterTags, bool disableTimestamp = false)
+ private static async Task VerifyAsync(HttpResponseMessage response, bool requestOpenMetrics, KeyValuePair[]? meterTags)
{
Assert.Equal(HttpStatusCode.OK, response.StatusCode);
Assert.True(response.Content.Headers.Contains("Last-Modified"));
@@ -493,8 +474,6 @@ private static async Task VerifyAsync(long beginTimestamp, long endTimestamp, Ht
var content = (await response.Content.ReadAsStringAsync()).ReplaceLineEndings();
- var timestampPart = disableTimestamp ? string.Empty : " (\\d+)";
- var timestampPartOpenMetrics = disableTimestamp ? string.Empty : " (\\d+\\.\\d{3})";
var expected = requestOpenMetrics
? $$"""
# TYPE target info
@@ -505,14 +484,14 @@ private static async Task VerifyAsync(long beginTimestamp, long endTimestamp, Ht
otel_scope_info{otel_scope_name="{{MeterName}}"} 1
# TYPE counter_double_bytes counter
# UNIT counter_double_bytes bytes
- counter_double_bytes_total{otel_scope_name="{{MeterName}}",otel_scope_version="{{MeterVersion}}",{{additionalTags}}key1="value1",key2="value2"} 101.17{{timestampPartOpenMetrics}}
+ counter_double_bytes_total{otel_scope_name="{{MeterName}}",otel_scope_version="{{MeterVersion}}",{{additionalTags}}key1="value1",key2="value2"} 101.17
# EOF
""".ReplaceLineEndings()
: $$"""
# TYPE counter_double_bytes_total counter
# UNIT counter_double_bytes_total bytes
- counter_double_bytes_total{otel_scope_name="{{MeterName}}",otel_scope_version="{{MeterVersion}}",{{additionalTags}}key1="value1",key2="value2"} 101.17{{timestampPart}}
+ counter_double_bytes_total{otel_scope_name="{{MeterName}}",otel_scope_version="{{MeterVersion}}",{{additionalTags}}key1="value1",key2="value2"} 101.17
# EOF
""".ReplaceLineEndings();
@@ -520,22 +499,14 @@ private static async Task VerifyAsync(long beginTimestamp, long endTimestamp, Ht
var matches = Regex.Matches(content, "^" + expected + "$");
Assert.True(matches.Count == 1, content);
-
- if (!disableTimestamp)
- {
- var timestamp = long.Parse(matches[0].Groups[1].Value.Replace(".", string.Empty, StringComparison.Ordinal), CultureInfo.InvariantCulture);
-
- Assert.True(beginTimestamp <= timestamp && timestamp <= endTimestamp, $"{beginTimestamp} {timestamp} {endTimestamp}");
- }
}
private static Task StartTestHostAsync(
Action configure,
Action? configureServices = null,
bool registerMeterProvider = true,
- Action? configureOptions = null)
- {
- return new HostBuilder()
+ Action? configureOptions = null) =>
+ new HostBuilder()
.ConfigureWebHost(webBuilder => webBuilder
.UseTestServer()
.ConfigureServices(services =>
@@ -555,7 +526,6 @@ private static Task StartTestHostAsync(
})
.Configure(configure))
.StartAsync();
- }
private sealed class AlreadyStartedHttpResponseFeature : HttpResponseFeature
{
diff --git a/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusHttpListenerTests.cs b/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusHttpListenerTests.cs
index ea6ea040c10..de21043628f 100644
--- a/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusHttpListenerTests.cs
+++ b/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusHttpListenerTests.cs
@@ -59,21 +59,17 @@ public void UriPrefixesInvalid() =>
TestPrometheusHttpListenerUriPrefixOptions(["ftp://example.com"]);
});
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public async Task PrometheusExporterHttpServerIntegration(bool disableTimestamp)
- => await RunPrometheusExporterHttpServerIntegrationTest(disableTimestamp: disableTimestamp);
+ [Fact]
+ public async Task PrometheusExporterHttpServerIntegration()
+ => await RunPrometheusExporterHttpServerIntegrationTest();
[Fact]
public async Task PrometheusExporterHttpServerIntegration_NoMetrics()
=> await RunPrometheusExporterHttpServerIntegrationTest(skipMetrics: true);
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public async Task PrometheusExporterHttpServerIntegration_NoOpenMetrics(bool disableTimestamp)
- => await RunPrometheusExporterHttpServerIntegrationTest(acceptHeader: string.Empty, disableTimestamp: disableTimestamp);
+ [Fact]
+ public async Task PrometheusExporterHttpServerIntegration_NoOpenMetrics()
+ => await RunPrometheusExporterHttpServerIntegrationTest(acceptHeader: string.Empty);
[Fact]
public async Task PrometheusExporterHttpServerIntegration_UseOpenMetricsVersionHeader()
@@ -344,7 +340,7 @@ private static void TestPrometheusHttpListenerUriPrefixOptions(string[] uriPrefi
});
}
- private static MeterProvider BuildMeterProvider(Meter meter, IEnumerable> attributes, out string address, bool disableTimestamp = false)
+ private static MeterProvider BuildMeterProvider(Meter meter, IEnumerable> attributes, out string address)
{
var random = new Random();
var retryAttempts = 5;
@@ -369,7 +365,6 @@ private static MeterProvider BuildMeterProvider(Meter meter, IEnumerable> attributes, Action configureOptions, out string address, bool disableTimestamp = false)
+ private static MeterProvider BuildMeterProvider(Meter meter, IEnumerable> attributes, Action configureOptions, out string address)
{
string? capturedHost = null;
int capturedPort = 0;
@@ -397,7 +392,6 @@ private static MeterProvider BuildMeterProvider(Meter meter, IEnumerable
{
configureOptions(options);
- options.DisableTimestamp = disableTimestamp;
capturedHost = options.Host;
capturedPort = options.Port;
})
@@ -408,13 +402,13 @@ private static MeterProvider BuildMeterProvider(Meter meter, IEnumerable[]? meterTags = null, bool disableTimestamp = false)
+ private static async Task RunPrometheusExporterHttpServerIntegrationTest(bool skipMetrics = false, string acceptHeader = "application/openmetrics-text", KeyValuePair[]? meterTags = null)
{
var requestOpenMetrics = acceptHeader.StartsWith("application/openmetrics-text", StringComparison.Ordinal);
using var meter = new Meter(MeterName, MeterVersion, meterTags);
- var provider = BuildMeterProvider(meter, [], out var address, disableTimestamp);
+ var provider = BuildMeterProvider(meter, [], out var address);
var counterTags = new KeyValuePair[]
{
@@ -458,8 +452,6 @@ private static async Task RunPrometheusExporterHttpServerIntegrationTest(bool sk
var content = await response.Content.ReadAsStringAsync();
- var timestampPart = disableTimestamp ? string.Empty : " (\\d+)";
- var timestampPartOpenMetrics = disableTimestamp ? string.Empty : " (\\d+\\.\\d{3})";
var expected = requestOpenMetrics
? "# TYPE target info\n"
+ "# HELP target Target metadata\n"
@@ -469,11 +461,11 @@ private static async Task RunPrometheusExporterHttpServerIntegrationTest(bool sk
+ $"otel_scope_info{{otel_scope_name='{MeterName}'}} 1\n"
+ "# TYPE counter_double_bytes counter\n"
+ "# UNIT counter_double_bytes bytes\n"
- + $"counter_double_bytes_total{{otel_scope_name='{MeterName}',otel_scope_version='{MeterVersion}',{additionalTags}key1='value1',key2='value2'}} 101.17{timestampPartOpenMetrics}\n"
+ + $"counter_double_bytes_total{{otel_scope_name='{MeterName}',otel_scope_version='{MeterVersion}',{additionalTags}key1='value1',key2='value2'}} 101.17\n"
+ "# EOF\n"
: "# TYPE counter_double_bytes_total counter\n"
+ "# UNIT counter_double_bytes_total bytes\n"
- + $"counter_double_bytes_total{{otel_scope_name='{MeterName}',otel_scope_version='{MeterVersion}',{additionalTags}key1='value1',key2='value2'}} 101.17{timestampPart}\n"
+ + $"counter_double_bytes_total{{otel_scope_name='{MeterName}',otel_scope_version='{MeterVersion}',{additionalTags}key1='value1',key2='value2'}} 101.17\n"
+ "# EOF\n";
Assert.Matches(("^" + expected + "$").Replace('\'', '"'), content);
diff --git a/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusSerializerTests.cs b/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusSerializerTests.cs
index 40fd23abdb3..35e57acf791 100644
--- a/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusSerializerTests.cs
+++ b/test/OpenTelemetry.Exporter.Prometheus.HttpListener.Tests/PrometheusSerializerTests.cs
@@ -11,10 +11,8 @@ namespace OpenTelemetry.Exporter.Prometheus.Tests;
public sealed class PrometheusSerializerTests
{
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void GaugeZeroDimension(bool disableTimestamp)
+ [Fact]
+ public void GaugeZeroDimension()
{
var buffer = new byte[85000];
var metrics = new List();
@@ -29,13 +27,12 @@ public void GaugeZeroDimension(bool disableTimestamp)
provider.ForceFlush();
- var cursor = WriteMetric(buffer, 0, metrics[0], false, disableTimestamp);
- var timestampPart = disableTimestamp ? string.Empty : " \\d+";
+ var cursor = WriteMetric(buffer, 0, metrics[0], false);
var output = Encoding.UTF8.GetString(buffer, 0, cursor);
var expected =
("^"
+ "# TYPE test_gauge gauge\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123{timestampPart}\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123\n"
+ "$").Replace('\'', '"');
Assert.Matches(expected, output);
}
@@ -61,7 +58,7 @@ public void GaugeZeroDimensionWithDescription()
("^"
+ "# TYPE test_gauge gauge\n"
+ "# HELP test_gauge Hello, world!\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123 \\d+\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -87,7 +84,7 @@ public void GaugeZeroDimensionWithUnit()
("^"
+ "# TYPE test_gauge_seconds gauge\n"
+ "# UNIT test_gauge_seconds seconds\n"
- + $"test_gauge_seconds{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123 \\d+\n"
+ + $"test_gauge_seconds{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -114,7 +111,7 @@ public void GaugeZeroDimensionWithDescriptionAndUnit()
+ "# TYPE test_gauge_seconds gauge\n"
+ "# UNIT test_gauge_seconds seconds\n"
+ "# HELP test_gauge_seconds Hello, world!\n"
- + $"test_gauge_seconds{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123 \\d+\n"
+ + $"test_gauge_seconds{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 123\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -141,7 +138,7 @@ public void GaugeOneDimension()
Assert.Matches(
("^"
+ "# TYPE test_gauge gauge\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',tagKey='tagValue'}} 123 \\d+\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',tagKey='tagValue'}} 123\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -168,7 +165,7 @@ public void GaugeBoolDimension()
Assert.Matches(
("^"
+ "# TYPE test_gauge gauge\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',tagKey='true'}} 123 \\d+\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',tagKey='true'}} 123\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -195,7 +192,7 @@ public void GaugeEmptyDimensionName()
Assert.Matches(
("^"
+ "# TYPE test_gauge gauge\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',_='tagValue'}} 123 \\d+\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',_='tagValue'}} 123\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -237,9 +234,9 @@ public void GaugeDoubleSubnormal()
Assert.Matches(
("^"
+ "# TYPE test_gauge gauge\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2'}} -Inf \\d+\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='3',y='4'}} \\+Inf \\d+\n"
- + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='5',y='6'}} Nan \\d+\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2'}} -Inf\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='3',y='4'}} \\+Inf\n"
+ + $"test_gauge{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='5',y='6'}} Nan\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -266,7 +263,7 @@ public void SumDoubleInfinities()
Assert.Matches(
("^"
+ "# TYPE test_counter_total counter\n"
- + $"test_counter_total{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} \\+Inf \\d+\n"
+ + $"test_counter_total{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} \\+Inf\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -293,15 +290,13 @@ public void SumNonMonotonicDouble()
Assert.Matches(
("^"
+ "# TYPE test_updown_counter gauge\n"
- + $"test_updown_counter{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} -1 \\d+\n"
+ + $"test_updown_counter{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} -1\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void HistogramZeroDimension(bool disableTimestamp)
+ [Fact]
+ public void HistogramZeroDimension()
{
var buffer = new byte[85000];
var metrics = new List();
@@ -318,30 +313,29 @@ public void HistogramZeroDimension(bool disableTimestamp)
provider.ForceFlush();
- var cursor = WriteMetric(buffer, 0, metrics[0], false, disableTimestamp);
- var timestampPart = disableTimestamp ? string.Empty : " \\d+";
+ var cursor = WriteMetric(buffer, 0, metrics[0], false);
var output = Encoding.UTF8.GetString(buffer, 0, cursor);
var expected =
("^"
+ "# TYPE test_histogram histogram\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='0'}} 0{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5'}} 0{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10'}} 0{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='25'}} 1{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='50'}} 1{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='75'}} 1{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='100'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='250'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='500'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='750'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='1000'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='2500'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5000'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='7500'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10000'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='\\+Inf'}} 2{timestampPart}\n"
- + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 118{timestampPart}\n"
- + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 2{timestampPart}\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='0'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='25'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='50'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='75'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='100'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='250'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='750'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='1000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='2500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='7500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='\\+Inf'}} 2\n"
+ + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 118\n"
+ + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 2\n"
+ "$").Replace('\'', '"');
Assert.Matches(expected, output);
}
@@ -368,24 +362,24 @@ public void HistogramOneDimension()
Assert.Matches(
("^"
+ "# TYPE test_histogram histogram\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='0'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='25'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='50'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='75'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='100'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='250'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='500'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='750'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='1000'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='2500'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5000'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='7500'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10000'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='\\+Inf'}} 2 \\d+\n"
- + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 118 \\d+\n"
- + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 2 \\d+\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='0'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='25'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='50'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='75'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='100'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='250'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='750'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='1000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='2500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='7500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='\\+Inf'}} 2\n"
+ + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 118\n"
+ + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 2\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -412,24 +406,24 @@ public void HistogramTwoDimensions()
Assert.Matches(
("^"
+ "# TYPE test_histogram histogram\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='0'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='5'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='10'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='25'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='50'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='75'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='100'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='250'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='500'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='750'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='1000'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='2500'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='5000'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='7500'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='10000'}} 2 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='\\+Inf'}} 2 \\d+\n"
- + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2'}} 118 \\d+\n"
- + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2'}} 2 \\d+\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='0'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='5'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='10'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='25'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='50'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='75'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='100'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='250'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='750'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='1000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='2500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='5000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='7500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='10000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2',le='\\+Inf'}} 2\n"
+ + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2'}} 118\n"
+ + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',y='2'}} 2\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -457,24 +451,24 @@ public void HistogramInfinities()
Assert.Matches(
("^"
+ "# TYPE test_histogram histogram\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='0'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='25'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='50'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='75'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='100'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='250'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='500'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='750'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='1000'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='2500'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5000'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='7500'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10000'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='\\+Inf'}} 3 \\d+\n"
- + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} \\+Inf \\d+\n"
- + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 3 \\d+\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='0'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='25'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='50'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='75'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='100'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='250'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='500'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='750'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='1000'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='2500'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5000'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='7500'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10000'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='\\+Inf'}} 3\n"
+ + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} \\+Inf\n"
+ + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 3\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -502,24 +496,24 @@ public void HistogramNaN()
Assert.Matches(
("^"
+ "# TYPE test_histogram histogram\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='0'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10'}} 0 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='25'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='50'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='75'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='100'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='250'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='500'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='750'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='1000'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='2500'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5000'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='7500'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10000'}} 1 \\d+\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='\\+Inf'}} 3 \\d+\n"
- + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} Nan \\d+\n"
- + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 3 \\d+\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='0'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='25'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='50'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='75'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='100'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='250'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='500'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='750'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='1000'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='2500'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='5000'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='7500'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='10000'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',le='\\+Inf'}} 3\n"
+ + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} Nan\n"
+ + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} 3\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -546,10 +540,8 @@ public void ExponentialHistogramIsIgnoredForNow()
Assert.False(PrometheusSerializer.CanWriteMetric(metrics[0]));
}
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void SumWithOpenMetricsFormat(bool disableTimestamp)
+ [Fact]
+ public void SumWithOpenMetricsFormat()
{
var buffer = new byte[85000];
var metrics = new List();
@@ -566,21 +558,18 @@ public void SumWithOpenMetricsFormat(bool disableTimestamp)
provider.ForceFlush();
- var cursor = WriteMetric(buffer, 0, metrics[0], true, disableTimestamp);
- var timestampPart = disableTimestamp ? string.Empty : " \\d+\\.\\d{3}";
+ var cursor = WriteMetric(buffer, 0, metrics[0], true);
var output = Encoding.UTF8.GetString(buffer, 0, cursor);
var expected =
("^"
+ "# TYPE test_updown_counter gauge\n"
- + $"test_updown_counter{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} -1{timestampPart}\n"
+ + $"test_updown_counter{{otel_scope_name='{Utils.GetCurrentMethodName()}'}} -1\n"
+ "$").Replace('\'', '"');
Assert.Matches(expected, output);
}
- [Theory]
- [InlineData(true)]
- [InlineData(false)]
- public void HistogramOneDimensionWithOpenMetricsFormat(bool disableTimestamp)
+ [Fact]
+ public void HistogramOneDimensionWithOpenMetricsFormat()
{
var buffer = new byte[85000];
var metrics = new List();
@@ -597,30 +586,29 @@ public void HistogramOneDimensionWithOpenMetricsFormat(bool disableTimestamp)
provider.ForceFlush();
- var cursor = WriteMetric(buffer, 0, metrics[0], true, disableTimestamp);
- var timestampPart = disableTimestamp ? string.Empty : " \\d+\\.\\d{3}";
+ var cursor = WriteMetric(buffer, 0, metrics[0], true);
var output = Encoding.UTF8.GetString(buffer, 0, cursor);
var expected =
("^"
+ "# TYPE test_histogram histogram\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='0'}} 0{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5'}} 0{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10'}} 0{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='25'}} 1{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='50'}} 1{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='75'}} 1{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='100'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='250'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='500'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='750'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='1000'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='2500'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5000'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='7500'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10000'}} 2{timestampPart}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='\\+Inf'}} 2{timestampPart}\n"
- + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 118{timestampPart}\n"
- + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 2{timestampPart}\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='0'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='25'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='50'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='75'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='100'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='250'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='750'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='1000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='2500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='5000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='7500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='10000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1',le='\\+Inf'}} 2\n"
+ + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 118\n"
+ + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',x='1'}} 2\n"
+ "$").Replace('\'', '"');
Assert.Matches(expected, output);
}
@@ -659,7 +647,7 @@ public void SumWithScopeVersion()
Assert.Matches(
("^"
+ "# TYPE test_updown_counter gauge\n"
- + $"test_updown_counter{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0'}} -1 \\d+\\.\\d{{3}}\n"
+ + $"test_updown_counter{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0'}} -1\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
@@ -686,30 +674,28 @@ public void HistogramOneDimensionWithScopeVersion()
Assert.Matches(
("^"
+ "# TYPE test_histogram histogram\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='0'}} 0 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='5'}} 0 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='10'}} 0 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='25'}} 1 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='50'}} 1 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='75'}} 1 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='100'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='250'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='500'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='750'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='1000'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='2500'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='5000'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='7500'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='10000'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='\\+Inf'}} 2 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1'}} 118 \\d+\\.\\d{{3}}\n"
- + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1'}} 2 \\d+\\.\\d{{3}}\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='0'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='5'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='10'}} 0\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='25'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='50'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='75'}} 1\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='100'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='250'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='750'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='1000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='2500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='5000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='7500'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='10000'}} 2\n"
+ + $"test_histogram_bucket{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1',le='\\+Inf'}} 2\n"
+ + $"test_histogram_sum{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1'}} 118\n"
+ + $"test_histogram_count{{otel_scope_name='{Utils.GetCurrentMethodName()}',otel_scope_version='1.0.0',x='1'}} 2\n"
+ "$").Replace('\'', '"'),
Encoding.UTF8.GetString(buffer, 0, cursor));
}
- private static int WriteMetric(byte[] buffer, int cursor, Metric metric, bool useOpenMetrics = false, bool disableTimestamp = false)
- {
- return PrometheusSerializer.WriteMetric(buffer, cursor, metric, PrometheusMetric.Create(metric, false), useOpenMetrics, disableTimestamp);
- }
+ private static int WriteMetric(byte[] buffer, int cursor, Metric metric, bool useOpenMetrics = false)
+ => PrometheusSerializer.WriteMetric(buffer, cursor, metric, PrometheusMetric.Create(metric, false), useOpenMetrics);
}