Replace use of TestExporter with InMemoryExporter (#2562)

This commit is contained in:
Michael Maxwell 2021-11-05 09:35:49 -07:00 committed by GitHub
parent 4f930d5074
commit c085504462
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 42 additions and 83 deletions

View File

@ -19,6 +19,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.Testing;
using OpenTelemetry.Exporter;
using OpenTelemetry.Metrics;
using OpenTelemetry.Tests;
using OpenTelemetry.Trace;
@ -57,15 +58,7 @@ namespace OpenTelemetry.Instrumentation.AspNetCore.Tests
public async Task RequestMetricIsCaptured()
{
var metricItems = new List<Metric>();
var metricExporter = new TestExporter<Metric>(ProcessExport);
void ProcessExport(Batch<Metric> batch)
{
foreach (var metricItem in batch)
{
metricItems.Add(metricItem);
}
}
var metricExporter = new InMemoryExporter<Metric>(metricItems);
var metricReader = new BaseExportingMetricReader(metricExporter)
{

View File

@ -16,11 +16,15 @@
</ItemGroup>
<ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.InMemory\OpenTelemetry.Exporter.InMemory.csproj" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Instrumentation.AspNetCore\OpenTelemetry.Instrumentation.AspNetCore.csproj" />
</ItemGroup>
<ItemGroup>
<Compile Include="$(RepoRoot)\test\OpenTelemetry.Tests\Shared\EventSourceTestHelper.cs" Link="EventSourceTestHelper.cs" />
<Compile Include="$(RepoRoot)\test\OpenTelemetry.Tests\Shared\InMemoryEventListener.cs" Link="InMemoryEventListener.cs" />
<Compile Include="$(RepoRoot)\test\OpenTelemetry.Tests\Shared\TestEventListener.cs" Link="TestEventListener.cs" />
<Compile Include="$(RepoRoot)\test\OpenTelemetry.Tests\Shared\TestExporter.cs" Link="TestExporter.cs" />
<Compile Include="$(RepoRoot)\test\OpenTelemetry.Tests\Shared\InMemoryEventListener.cs" Link="InMemoryEventListener.cs" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">

View File

@ -25,6 +25,7 @@ using System.Reflection;
using System.Threading.Tasks;
using Moq;
using Newtonsoft.Json;
using OpenTelemetry.Exporter;
using OpenTelemetry.Metrics;
using OpenTelemetry.Tests;
using OpenTelemetry.Trace;
@ -55,15 +56,7 @@ namespace OpenTelemetry.Instrumentation.Http.Tests
tc.Url = HttpTestData.NormalizeValues(tc.Url, host, port);
var metricItems = new List<Metric>();
var metricExporter = new TestExporter<Metric>(ProcessExport);
void ProcessExport(Batch<Metric> batch)
{
foreach (var metricItem in batch)
{
metricItems.Add(metricItem);
}
}
var metricExporter = new InMemoryExporter<Metric>(metricItems);
var metricReader = new BaseExportingMetricReader(metricExporter)
{

View File

@ -34,6 +34,7 @@
<ItemGroup>
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Instrumentation.Http\OpenTelemetry.Instrumentation.Http.csproj" />
<ProjectReference Include="$(RepoRoot)\src\OpenTelemetry.Exporter.InMemory\OpenTelemetry.Exporter.InMemory.csproj" />
</ItemGroup>
</Project>

View File

@ -19,6 +19,7 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.Diagnostics.Metrics;
using System.Threading;
using OpenTelemetry.Exporter;
using OpenTelemetry.Tests;
using Xunit;
using Xunit.Abstractions;
@ -117,16 +118,7 @@ namespace OpenTelemetry.Metrics.Tests
public void StreamNamesDuplicatesAreNotAllowedTest(AggregationTemporality temporality)
{
var metricItems = new List<Metric>();
int metricCount = 0;
var metricExporter = new TestExporter<Metric>(ProcessExport);
void ProcessExport(Batch<Metric> batch)
{
foreach (var metric in batch)
{
metricCount++;
}
}
var metricExporter = new InMemoryExporter<Metric>(metricItems);
var metricReader = new BaseExportingMetricReader(metricExporter)
{
@ -144,25 +136,25 @@ namespace OpenTelemetry.Metrics.Tests
var counterLong = meter1.CreateCounter<long>("name1");
counterLong.Add(10);
metricReader.Collect();
Assert.Equal(1, metricCount);
Assert.Single(metricItems);
// The following will be ignored as
// metric of same name exists.
// Metric stream will remain one.
var anotherCounterSameName = meter1.CreateCounter<long>("name1");
anotherCounterSameName.Add(10);
metricCount = 0;
metricItems.Clear();
metricReader.Collect();
Assert.Equal(1, metricCount);
Assert.Single(metricItems);
// The following will also be ignored
// as the name is same.
// (the Meter name is not part of stream name)
var anotherCounterSameNameDiffMeter = meter2.CreateCounter<long>("name1");
anotherCounterSameNameDiffMeter.Add(10);
metricCount = 0;
metricItems.Clear();
metricReader.Collect();
Assert.Equal(1, metricCount);
Assert.Single(metricItems);
}
[Theory]
@ -267,15 +259,7 @@ namespace OpenTelemetry.Metrics.Tests
public void CounterAggregationTest(bool exportDelta)
{
var metricItems = new List<Metric>();
var metricExporter = new TestExporter<Metric>(ProcessExport);
void ProcessExport(Batch<Metric> batch)
{
foreach (var metricItem in batch)
{
metricItems.Add(metricItem);
}
}
var metricExporter = new InMemoryExporter<Metric>(metricItems);
var metricReader = new BaseExportingMetricReader(metricExporter)
{
@ -343,15 +327,7 @@ namespace OpenTelemetry.Metrics.Tests
{
var meterName = "TestMeter" + exportDelta;
var metricItems = new List<Metric>();
var metricExporter = new TestExporter<Metric>(ProcessExport);
void ProcessExport(Batch<Metric> batch)
{
foreach (var metricItem in batch)
{
metricItems.Add(metricItem);
}
}
var metricExporter = new InMemoryExporter<Metric>(metricItems);
var metricReader = new BaseExportingMetricReader(metricExporter)
{
@ -409,18 +385,21 @@ namespace OpenTelemetry.Metrics.Tests
public void TestMetricPointCap(AggregationTemporality temporality)
{
var metricItems = new List<Metric>();
int metricPointCount = 0;
var metricExporter = new TestExporter<Metric>(ProcessExport);
var metricExporter = new InMemoryExporter<Metric>(metricItems);
void ProcessExport(Batch<Metric> batch)
int MetricPointCount()
{
foreach (var metric in batch)
var count = 0;
foreach (var metric in metricItems)
{
foreach (ref var metricPoint in metric.GetMetricPoints())
{
metricPointCount++;
count++;
}
}
return count;
}
var metricReader = new BaseExportingMetricReader(metricExporter)
@ -445,34 +424,26 @@ namespace OpenTelemetry.Metrics.Tests
}
metricReader.Collect();
Assert.Equal(AggregatorStore.MaxMetricPoints, metricPointCount);
Assert.Equal(AggregatorStore.MaxMetricPoints, MetricPointCount());
metricPointCount = 0;
metricItems.Clear();
metricReader.Collect();
Assert.Equal(AggregatorStore.MaxMetricPoints, metricPointCount);
Assert.Equal(AggregatorStore.MaxMetricPoints, MetricPointCount());
// These updates would be dropped.
counterLong.Add(10, new KeyValuePair<string, object>("key", "valueA"));
counterLong.Add(10, new KeyValuePair<string, object>("key", "valueB"));
counterLong.Add(10, new KeyValuePair<string, object>("key", "valueC"));
metricPointCount = 0;
metricItems.Clear();
metricReader.Collect();
Assert.Equal(AggregatorStore.MaxMetricPoints, metricPointCount);
Assert.Equal(AggregatorStore.MaxMetricPoints, MetricPointCount());
}
[Fact]
public void MultithreadedLongCounterTest()
{
var metricItems = new List<Metric>();
var metricExporter = new TestExporter<Metric>(ProcessExport);
void ProcessExport(Batch<Metric> batch)
{
foreach (var metricItem in batch)
{
metricItems.Add(metricItem);
}
}
var metricExporter = new InMemoryExporter<Metric>(metricItems);
var metricReader = new BaseExportingMetricReader(metricExporter)
{
@ -533,15 +504,7 @@ namespace OpenTelemetry.Metrics.Tests
public void MultithreadedDoubleCounterTest()
{
var metricItems = new List<Metric>();
var metricExporter = new TestExporter<Metric>(ProcessExport);
void ProcessExport(Batch<Metric> batch)
{
foreach (var metricItem in batch)
{
metricItems.Add(metricItem);
}
}
var metricExporter = new InMemoryExporter<Metric>(metricItems);
var metricReader = new BaseExportingMetricReader(metricExporter)
{

View File

@ -14,7 +14,9 @@
// limitations under the License.
// </copyright>
using System.Collections.Generic;
using System.Diagnostics;
using OpenTelemetry.Exporter;
using OpenTelemetry.Tests;
using Xunit;
@ -28,7 +30,8 @@ namespace OpenTelemetry.Trace.Tests
public void ExportProcessorIgnoresActivityWhenDropped()
{
var sampler = new AlwaysOffSampler();
var processor = new TestActivityExportProcessor(new TestExporter<Activity>(_ => { }));
var exportedItems = new List<Activity>();
var processor = new TestActivityExportProcessor(new InMemoryExporter<Activity>(exportedItems));
using var activitySource = new ActivitySource(ActivitySourceName);
using var sdk = Sdk.CreateTracerProviderBuilder()
.AddSource(ActivitySourceName)
@ -49,7 +52,8 @@ namespace OpenTelemetry.Trace.Tests
public void ExportProcessorIgnoresActivityMarkedAsRecordOnly()
{
var sampler = new RecordOnlySampler();
var processor = new TestActivityExportProcessor(new TestExporter<Activity>(_ => { }));
var exportedItems = new List<Activity>();
var processor = new TestActivityExportProcessor(new InMemoryExporter<Activity>(exportedItems));
using var activitySource = new ActivitySource(ActivitySourceName);
using var sdk = Sdk.CreateTracerProviderBuilder()
.AddSource(ActivitySourceName)
@ -70,7 +74,8 @@ namespace OpenTelemetry.Trace.Tests
public void ExportProcessorExportsActivityMarkedAsRecordAndSample()
{
var sampler = new AlwaysOnSampler();
var processor = new TestActivityExportProcessor(new TestExporter<Activity>(_ => { }));
var exportedItems = new List<Activity>();
var processor = new TestActivityExportProcessor(new InMemoryExporter<Activity>(exportedItems));
using var activitySource = new ActivitySource(ActivitySourceName);
using var sdk = Sdk.CreateTracerProviderBuilder()
.AddSource(ActivitySourceName)