Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 25 additions & 38 deletions test/OpenTelemetry.Tests/Metrics/MetricPointReclaimTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public void MeasurementsAreNotDropped(bool emitMetricWithNoDimensions)
var counter = meter.CreateCounter<long>("MyFruitCounter");

int numberOfUpdateThreads = 25;
int maxNumberofDistinctMetricPoints = 4000; // Default max MetricPoints * 2
int maxNumberOfDistinctMetricPoints = 4000; // Default max MetricPoints * 2

using var exporter = new CustomExporter(assertNoDroppedMeasurements: true);
using var metricReader = new PeriodicExportingMetricReader(exporter, exportIntervalMilliseconds: 10)
Expand All @@ -38,7 +38,7 @@ void EmitMetric(object obj)
while (true)
{
int i = Interlocked.Increment(ref threadArguments!.Counter);
if (i <= maxNumberofDistinctMetricPoints)
if (i <= maxNumberOfDistinctMetricPoints)
{
// Check for cases where a metric with no dimension is also emitted
if (emitMetricWithNoDimensions)
Expand Down Expand Up @@ -81,18 +81,12 @@ void EmitMetric(object obj)
threads[i].Join();
}

meterProvider.ForceFlush();
Assert.True(meterProvider.ForceFlush());

long expectedSum;

if (emitMetricWithNoDimensions)
{
expectedSum = maxNumberofDistinctMetricPoints * (25 + 100);
}
else
{
expectedSum = maxNumberofDistinctMetricPoints * 100;
}
long expectedSum =
emitMetricWithNoDimensions ?
maxNumberOfDistinctMetricPoints * (100 + 25) :
maxNumberOfDistinctMetricPoints * 100;

Assert.Equal(expectedSum, exporter.Sum);
}
Expand All @@ -106,7 +100,7 @@ public void MeasurementsAreAggregatedEvenAfterTheyAreDropped(bool emitMetricWith
var counter = meter.CreateCounter<long>("MyFruitCounter");

long sum = 0;
var measurementValues = new long[] { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 };
long[] measurementValues = [10, 20, 30, 40, 50, 60, 70, 80, 90, 100];

int numberOfUpdateThreads = 4;
int numberOfMeasurementsPerThread = 10;
Expand All @@ -132,49 +126,42 @@ public void MeasurementsAreAggregatedEvenAfterTheyAreDropped(bool emitMetricWith
counter.Add(100, new KeyValuePair<string, object?>("key", $"value{i}"));
}

meterProvider.ForceFlush();
meterProvider.ForceFlush();
Assert.True(meterProvider.ForceFlush());
Assert.True(meterProvider.ForceFlush());

exporter.Sum = 0;

void EmitMetric()
{
int numberOfMeasurements = 0;
var random = new Random();
while (true)
while (numberOfMeasurements < numberOfMeasurementsPerThread)
{
if (numberOfMeasurements < numberOfMeasurementsPerThread)
// Check for cases where a metric with no dimension is also emitted
if (emitMetricWithNoDimension)
{
// Check for cases where a metric with no dimension is also emitted
if (emitMetricWithNoDimension)
{
counter.Add(25);
Interlocked.Add(ref sum, 25);
}
counter.Add(25);
Interlocked.Add(ref sum, 25);
}

#pragma warning disable CA5394 // Do not use insecure randomness
var index = random.Next(measurementValues.Length);
var index = random.Next(measurementValues.Length);
#pragma warning restore CA5394 // Do not use insecure randomness
var measurement = measurementValues[index];
counter.Add(measurement, new KeyValuePair<string, object?>("key", $"value{index}"));
Interlocked.Add(ref sum, measurement);
var measurement = measurementValues[index];
counter.Add(measurement, new KeyValuePair<string, object?>("key", $"value{index}"));
Interlocked.Add(ref sum, measurement);

numberOfMeasurements++;
numberOfMeasurements++;

Thread.Sleep(25);
}
else
{
break;
}
Thread.Sleep(25);
}
}

var threads = new Thread[numberOfUpdateThreads];

for (int i = 0; i < threads.Length; i++)
{
threads[i] = new Thread(EmitMetric!);
threads[i] = new Thread(EmitMetric);
threads[i].Start();
}

Expand All @@ -183,7 +170,7 @@ void EmitMetric()
threads[i].Join();
}

meterProvider.ForceFlush();
Assert.True(meterProvider.ForceFlush());
Assert.Equal(sum, exporter.Sum);
}

Expand Down Expand Up @@ -232,7 +219,7 @@ public override ExportResult Export(in Batch<Metric> batch)

if (metric.MetricType.IsSum())
{
this.Sum += metricPoint.GetSumLong();
Interlocked.Add(ref this.Sum, metricPoint.GetSumLong());
}
}
}
Expand Down
Loading