diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml
index f2e67d4e55..7e00791451 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.yml
+++ b/.github/ISSUE_TEMPLATE/bug_report.yml
@@ -21,7 +21,7 @@ body:
- OpenTelemetry.Exporter.InfluxDB
- OpenTelemetry.Exporter.Instana
- OpenTelemetry.Exporter.OneCollector
- - OpenTelemetry.Exporter.Stackdriver
+ - OpenTelemetry.Exporter.GoogleCloud
- OpenTelemetry.Extensions
- OpenTelemetry.Extensions.AWS
- OpenTelemetry.Extensions.Enrichment
diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml
index 5461bf353a..64a7c49a5b 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.yml
+++ b/.github/ISSUE_TEMPLATE/feature_request.yml
@@ -21,7 +21,7 @@ body:
- OpenTelemetry.Exporter.InfluxDB
- OpenTelemetry.Exporter.Instana
- OpenTelemetry.Exporter.OneCollector
- - OpenTelemetry.Exporter.Stackdriver
+ - OpenTelemetry.Exporter.GoogleCloud
- OpenTelemetry.Extensions
- OpenTelemetry.Extensions.AWS
- OpenTelemetry.Extensions.Enrichment
diff --git a/.github/ISSUE_TEMPLATE/release_request.yml b/.github/ISSUE_TEMPLATE/release_request.yml
index b219f533ff..e0ef6d871c 100644
--- a/.github/ISSUE_TEMPLATE/release_request.yml
+++ b/.github/ISSUE_TEMPLATE/release_request.yml
@@ -19,7 +19,7 @@ body:
- OpenTelemetry.Exporter.InfluxDB
- OpenTelemetry.Exporter.Instana
- OpenTelemetry.Exporter.OneCollector
- - OpenTelemetry.Exporter.Stackdriver
+ - OpenTelemetry.Exporter.GoogleCloud
- OpenTelemetry.Extensions
- OpenTelemetry.Extensions.AWS
- OpenTelemetry.Extensions.Enrichment
diff --git a/.github/codecov.yml b/.github/codecov.yml
index b94a66eb52..bc338e88cf 100644
--- a/.github/codecov.yml
+++ b/.github/codecov.yml
@@ -51,10 +51,10 @@ flags:
paths:
- src/OpenTelemetry.Exporter.OneCollector
- unittests-Exporter.Stackdriver:
+ unittests-Exporter.GoogleCloud:
carryforward: true
paths:
- - src/OpenTelemetry.Exporter.Stackdriver
+ - src/OpenTelemetry.Exporter.GoogleCloud
unittests-Extensions:
carryforward: true
diff --git a/.github/component_owners.yml b/.github/component_owners.yml
index 9648725d7b..79c83d2fcf 100644
--- a/.github/component_owners.yml
+++ b/.github/component_owners.yml
@@ -12,7 +12,7 @@ components:
- zivaninstana
src/OpenTelemetry.Exporter.OneCollector/:
- rajkumar-rangaraj
- src/OpenTelemetry.Exporter.Stackdriver/:
+ src/OpenTelemetry.Exporter.GoogleCloudMonitoring /:
- SergeyKanzhelev
src/OpenTelemetry.Extensions/:
- mikegoldsmith
@@ -99,7 +99,7 @@ components:
- rajkumar-rangaraj
test/OpenTelemetry.Exporter.OneCollector.Tests/:
- rajkumar-rangaraj
- test/OpenTelemetry.Exporter.Stackdriver.Tests/:
+ test/OpenTelemetry.Exporter.GoogleCloudMonitoring .Tests/:
- SergeyKanzhelev
test/OpenTelemetry.Extensions.Tests/:
- mikegoldsmith
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index ee82dfb329..c0b0804207 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -28,7 +28,7 @@ jobs:
exporter-influxdb: ['*/OpenTelemetry.Exporter.InfluxDB*/**', '!**/*.md']
exporter-instana: ['*/OpenTelemetry.Exporter.Instana*/**', '!**/*.md']
exporter-onecollector: ['*/OpenTelemetry.Exporter.OneCollector*/**', '!**/*.md']
- exporter-stackdriver: ['*/OpenTelemetry.Exporter.Stackdriver*/**', '!**/*.md']
+ exporter-googlecloud: ['*/OpenTelemetry.Exporter.GoogleCloud*/**', '!**/*.md']
extensions: ['*/OpenTelemetry.Extensions/**', '*/OpenTelemetry.Extensions.Tests/**', '!**/*.md']
extensions-enrichment: ['*/OpenTelemetry.Extensions.Enrichment*/**', '!**/*.md']
instrumentation-aspnet: ['*/OpenTelemetry.Instrumentation.AspNet/**', '*/OpenTelemetry.Instrumentation.AspNet.Tests/**', '*/OpenTelemetry.Instrumentation.OpenTelemetry.Instrumentation.AspNet.TelemetryHttpModule.*/**', 'examples/AspNet/**', '!**/*.md']
@@ -142,16 +142,16 @@ jobs:
project-name: Component[OpenTelemetry.Exporter.OneCollector]
code-cov-name: Exporter.OneCollector
- build-test-exporter-stackdriver:
+ build-test-exporter-googlecloud:
needs: detect-changes
if: |
- contains(needs.detect-changes.outputs.changes, 'exporter-stackdriver')
+ contains(needs.detect-changes.outputs.changes, 'exporter-googlecloud')
|| contains(needs.detect-changes.outputs.changes, 'build')
|| contains(needs.detect-changes.outputs.changes, 'shared')
uses: ./.github/workflows/Component.BuildTest.yml
with:
- project-name: Component[OpenTelemetry.Exporter.Stackdriver]
- code-cov-name: Exporter.Stackdriver
+ project-name: Component[OpenTelemetry.Exporter.GoogleCloud]
+ code-cov-name: Exporter.GoogleCloudMonitoring
build-test-extensions:
needs: detect-changes
@@ -606,7 +606,7 @@ jobs:
build-test-exporter-influxdb,
build-test-exporter-instana,
build-test-exporter-onecollector,
- build-test-exporter-stackdriver,
+ build-test-exporter-googlecloud,
build-test-extensions,
build-test-extensions-enrichment,
build-test-instrumentation-aspnet,
diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml
index eb6f2b7b78..6dc79f1304 100644
--- a/.github/workflows/prepare-release.yml
+++ b/.github/workflows/prepare-release.yml
@@ -10,7 +10,7 @@ on:
- OpenTelemetry.Exporter.InfluxDB
- OpenTelemetry.Exporter.Instana
- OpenTelemetry.Exporter.OneCollector
- - OpenTelemetry.Exporter.Stackdriver
+ - OpenTelemetry.Exporter.GoogleCloud
- OpenTelemetry.Extensions
- OpenTelemetry.Extensions.AWS
- OpenTelemetry.Extensions.Enrichment
diff --git a/opentelemetry-dotnet-contrib.sln b/opentelemetry-dotnet-contrib.sln
index 9dea59b245..42c19f755c 100644
--- a/opentelemetry-dotnet-contrib.sln
+++ b/opentelemetry-dotnet-contrib.sln
@@ -118,9 +118,9 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "owin", "owin", "{8D11A34C-D
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Examples.Owin", "examples\owin\Examples.Owin.csproj", "{6B3AA3F2-89A7-433F-918A-1E5E6AAF8423}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.Stackdriver", "src\OpenTelemetry.Exporter.Stackdriver\OpenTelemetry.Exporter.Stackdriver.csproj", "{8A25B43D-BBB2-40FF-B0EB-33AACCD15AD7}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.GoogleCloud", "src\OpenTelemetry.Exporter.GoogleCloud\OpenTelemetry.Exporter.GoogleCloud.csproj", "{8A25B43D-BBB2-40FF-B0EB-33AACCD15AD7}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.Stackdriver.Tests", "test\OpenTelemetry.Exporter.Stackdriver.Tests\OpenTelemetry.Exporter.Stackdriver.Tests.csproj", "{8DABC11A-624E-4554-ACA4-D5B80146B9C6}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Exporter.GoogleCloud.Tests", "test\OpenTelemetry.Exporter.GoogleCloud.Tests\OpenTelemetry.Exporter.GoogleCloud.Tests.csproj", "{8DABC11A-624E-4554-ACA4-D5B80146B9C6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenTelemetry.Instrumentation.ElasticsearchClient", "src\OpenTelemetry.Instrumentation.ElasticsearchClient\OpenTelemetry.Instrumentation.ElasticsearchClient.csproj", "{96F5B85B-402B-4DFB-AF31-33D5A2EBE35B}"
EndProject
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/.publicApi/PublicAPI.Shipped.txt b/src/OpenTelemetry.Exporter.GoogleCloud/.publicApi/PublicAPI.Shipped.txt
similarity index 100%
rename from src/OpenTelemetry.Exporter.Stackdriver/.publicApi/PublicAPI.Shipped.txt
rename to src/OpenTelemetry.Exporter.GoogleCloud/.publicApi/PublicAPI.Shipped.txt
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/.publicApi/PublicAPI.Unshipped.txt b/src/OpenTelemetry.Exporter.GoogleCloud/.publicApi/PublicAPI.Unshipped.txt
similarity index 100%
rename from src/OpenTelemetry.Exporter.Stackdriver/.publicApi/PublicAPI.Unshipped.txt
rename to src/OpenTelemetry.Exporter.GoogleCloud/.publicApi/PublicAPI.Unshipped.txt
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/CHANGELOG.md b/src/OpenTelemetry.Exporter.GoogleCloud/CHANGELOG.md
similarity index 84%
rename from src/OpenTelemetry.Exporter.Stackdriver/CHANGELOG.md
rename to src/OpenTelemetry.Exporter.GoogleCloud/CHANGELOG.md
index ad37757863..2e1e032fa3 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/CHANGELOG.md
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/CHANGELOG.md
@@ -13,7 +13,17 @@
* Updated OpenTelemetry core component version(s) to `1.12.0`.
([#2725](https://github.com/open-telemetry/opentelemetry-dotnet-contrib/pull/2725))
-
+* Rename the namespaces to replace the `StackDrive` with GoogleCloud from them:
+ 1. `OpenTelemetry.Exporter.Stackdriver` ->
+ `OpenTelemetry.Exporter.GoogleCloud`
+ 2. `OpenTelemetry.Exporter.StackdriverImplementation` ->
+ `OpenTelemetry.Exporter.GoogleCloud.Implementation`
+ 3. `OpenTelemetry.Exporter.Stackdriver.Utils` ->
+ `OpenTelemetry.Exporter.GoogleCloud.Utils`
+* Going forward the NuGet package will be
+ [`OpenTelemetry.Exporter.GoogleCloud`](https://www.nuget.org/packages/OpenTelemetry.Exporter.GoogleCloud).
+ Older versions will remain at
+ [`OpenTelemetry.Exporter.Stackdriver`](https://www.nuget.org/packages/OpenTelemetry.Exporter.Stackdriver).
## 1.0.0-beta.6
Released 2024-Apr-22
diff --git a/src/OpenTelemetry.Exporter.GoogleCloud/GoogleCloudMonitoringExporter.cs b/src/OpenTelemetry.Exporter.GoogleCloud/GoogleCloudMonitoringExporter.cs
new file mode 100644
index 0000000000..a35869bf8d
--- /dev/null
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/GoogleCloudMonitoringExporter.cs
@@ -0,0 +1,245 @@
+// Copyright The OpenTelemetry Authors
+// SPDX-License-Identifier: Apache-2.0
+
+using System.Diagnostics.CodeAnalysis;
+using System.Reflection;
+using Google.Api;
+using Google.Api.Gax.Grpc;
+using Google.Api.Gax.ResourceNames;
+using Google.Cloud.Monitoring.V3;
+using Google.Protobuf.Collections;
+using Google.Protobuf.WellKnownTypes;
+using Grpc.Core;
+using OpenTelemetry.Exporter.GoogleCloud.Implementation;
+using OpenTelemetry.Metrics;
+using Metric = OpenTelemetry.Metrics.Metric;
+
+namespace OpenTelemetry.Exporter.GoogleCloud;
+
+///
+/// Exports a metrics to Google Cloud Monitoring .
+///
+[Obsolete("This exporter is deprecated and might be removed in a future version. Please consider using directly OTPL directly: https://cloud.google.com/stackdriver/docs/reference/telemetry/overview")]
+public class GoogleCloudMonitoringExporter : BaseExporter
+{
+ private readonly ProjectName projectName;
+ private readonly MetricServiceSettings? metricServiceSettings;
+ private MetricServiceClient? metricServiceClient;
+
+#pragma warning disable CA1810 // Initialize reference type static fields inline
+ static GoogleCloudMonitoringExporter()
+#pragma warning restore CA1810 // Initialize reference type static fields inline
+ {
+ try
+ {
+ var assemblyPackageVersion = typeof(GoogleCloudTraceExporter).GetTypeInfo().Assembly
+ .GetCustomAttributes().First().InformationalVersion;
+ GoogleCloudMetricExportVersion = assemblyPackageVersion;
+ }
+ catch (Exception)
+ {
+ GoogleCloudMetricExportVersion = $"{Constants.PackagVersionUndefined}";
+ }
+
+ try
+ {
+ OpenTelemetryExporterVersion = Assembly.GetCallingAssembly().GetName().Version!.ToString();
+ }
+ catch (Exception)
+ {
+ OpenTelemetryExporterVersion = $"{Constants.PackagVersionUndefined}";
+ }
+ }
+
+ private static string OpenTelemetryExporterVersion { get; set; }
+
+ private static string GoogleCloudMetricExportVersion { get; set; }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Project ID to send telemetry to.
+ public GoogleCloudMonitoringExporter(string projectId)
+ {
+ this.projectName = new ProjectName(projectId);
+
+ // Set header mutation for every outgoing API call to Google Cloud Monitoring so the BE knows
+ // which version of OC client is calling it as well as which version of the exporter
+ var callSettings = CallSettings.FromHeaderMutation(StackdriverCallHeaderAppender);
+ this.metricServiceSettings = new MetricServiceSettings { CallSettings = callSettings };
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ /// Only used internally for tests.
+ ///
+ /// Project ID to send telemetry to.
+ /// MetricServiceClient instance to use.
+ [ExcludeFromCodeCoverage]
+ internal GoogleCloudMonitoringExporter(string projectId, MetricServiceClient metricServiceClient)
+ : this(projectId)
+ {
+ this.metricServiceClient = metricServiceClient;
+ }
+
+ ///
+ public override ExportResult Export(in Batch batch)
+ {
+ this.metricServiceClient ??=
+ new MetricServiceClientBuilder { Settings = this.metricServiceSettings, }.Build();
+ var timeSeriesList = new List();
+
+ foreach (var metric in batch)
+ {
+ foreach (var point in metric.GetMetricPoints())
+ {
+ var ts = CreateTimeSeriesForMetricPoint(metric, point);
+ timeSeriesList.Add(ts);
+ }
+ }
+
+ if (timeSeriesList.Count > 0)
+ {
+ this.metricServiceClient.CreateTimeSeries(this.projectName, timeSeriesList);
+ }
+
+ return ExportResult.Success;
+ }
+
+ private static TimeSeries CreateTimeSeriesForMetricPoint(Metric metric, MetricPoint point)
+ {
+ MetricDescriptor.Types.MetricKind metricKind;
+ MetricDescriptor.Types.ValueType valueType;
+ TypedValue value;
+
+ switch (metric.MetricType)
+ {
+ case MetricType.DoubleGauge:
+ metricKind = MetricDescriptor.Types.MetricKind.Gauge;
+ valueType = MetricDescriptor.Types.ValueType.Double;
+ value = new TypedValue { DoubleValue = point.GetGaugeLastValueDouble() };
+ break;
+ case MetricType.LongGauge:
+ metricKind = MetricDescriptor.Types.MetricKind.Gauge;
+ valueType = MetricDescriptor.Types.ValueType.Int64;
+ value = new TypedValue { Int64Value = point.GetGaugeLastValueLong() };
+ break;
+ case MetricType.DoubleSum:
+ metricKind = MetricDescriptor.Types.MetricKind.Cumulative;
+ valueType = MetricDescriptor.Types.ValueType.Double;
+ value = new TypedValue { DoubleValue = point.GetSumDouble() };
+ break;
+ case MetricType.LongSum:
+ metricKind = MetricDescriptor.Types.MetricKind.Cumulative;
+ valueType = MetricDescriptor.Types.ValueType.Int64;
+ value = new TypedValue { Int64Value = point.GetSumLong() };
+ break;
+ case MetricType.DoubleSumNonMonotonic:
+ metricKind = MetricDescriptor.Types.MetricKind.Gauge;
+ valueType = MetricDescriptor.Types.ValueType.Double;
+ value = new TypedValue { DoubleValue = point.GetSumDouble() };
+ break;
+ case MetricType.LongSumNonMonotonic:
+ metricKind = MetricDescriptor.Types.MetricKind.Gauge;
+ valueType = MetricDescriptor.Types.ValueType.Int64;
+ value = new TypedValue { Int64Value = point.GetSumLong() };
+ break;
+ case MetricType.Histogram:
+ metricKind = MetricDescriptor.Types.MetricKind.Cumulative;
+ valueType = MetricDescriptor.Types.ValueType.Distribution;
+ var count = point.GetHistogramCount();
+ var sum = point.GetHistogramSum();
+ var mean = count > 0 ? sum / count : 0;
+ var buckets = point.GetHistogramBuckets();
+
+ value = new TypedValue
+ {
+ DistributionValue = new Distribution
+ {
+ Count = count,
+ Mean = mean,
+ BucketCounts = { ToRepeatedField(buckets) },
+ BucketOptions = new Distribution.Types.BucketOptions
+ {
+ ExplicitBuckets = new Distribution.Types.BucketOptions.Types.Explicit
+ {
+ Bounds = { ToRepeatedFieldBounds(buckets) },
+ },
+ },
+ },
+ };
+ break;
+ case MetricType.ExponentialHistogram:
+ throw new NotImplementedException("ExponentialHistogram is not supported yet.");
+ default:
+ metricKind = MetricDescriptor.Types.MetricKind.Gauge;
+ valueType = MetricDescriptor.Types.ValueType.Double;
+ value = new TypedValue { DoubleValue = point.GetSumDouble() };
+ break;
+ }
+
+ return new TimeSeries
+ {
+ Metric = new Google.Api.Metric { Type = $"custom.googleapis.com/opentelemetry/{metric.Name}" },
+ Resource = new MonitoredResource { Type = "global" },
+ MetricKind = metricKind,
+ ValueType = valueType,
+ Points =
+ {
+ new Point
+ {
+ Interval = new TimeInterval
+ {
+ StartTime = Timestamp.FromDateTimeOffset(point.StartTime),
+ EndTime = Timestamp.FromDateTimeOffset(point.EndTime),
+ },
+ Value = value,
+ },
+ },
+ };
+ }
+
+ private static RepeatedField ToRepeatedField(HistogramBuckets? buckets)
+ {
+ var result = new RepeatedField();
+ if (buckets == null)
+ {
+ return result;
+ }
+
+ foreach (var count in buckets)
+ {
+ result.Add(count.BucketCount);
+ }
+
+ return result;
+ }
+
+ private static RepeatedField ToRepeatedFieldBounds(HistogramBuckets? buckets)
+ {
+ var result = new RepeatedField();
+ if (buckets == null)
+ {
+ return result;
+ }
+
+ foreach (var bucket in buckets)
+ {
+ result.Add(bucket.ExplicitBound);
+ }
+
+ return result;
+ }
+
+ ///
+ /// Appends OpenTelemetry headers for every outgoing request to Stackdriver Backend.
+ ///
+ /// The metadata that is sent with every outgoing http request.
+ private static void StackdriverCallHeaderAppender(Metadata metadata)
+ {
+ metadata.Add("AGENT_LABEL_KEY", "g.co/agent");
+ metadata.Add(
+ "AGENT_LABEL_VALUE_STRING",
+ $"{OpenTelemetryExporterVersion}; googlecloud-exporter {GoogleCloudMetricExportVersion}");
+ }
+}
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/StackdriverTraceExporter.cs b/src/OpenTelemetry.Exporter.GoogleCloud/GoogleCloudTraceExporter.cs
similarity index 73%
rename from src/OpenTelemetry.Exporter.Stackdriver/StackdriverTraceExporter.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/GoogleCloudTraceExporter.cs
index 5aa5067fd2..a880974f08 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/StackdriverTraceExporter.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/GoogleCloudTraceExporter.cs
@@ -7,16 +7,17 @@
using Google.Api.Gax.Grpc;
using Google.Cloud.Trace.V2;
using Grpc.Core;
-using OpenTelemetry.Exporter.Stackdriver.Implementation;
+using OpenTelemetry.Exporter.GoogleCloud.Implementation;
-namespace OpenTelemetry.Exporter.Stackdriver;
+namespace OpenTelemetry.Exporter.GoogleCloud;
///
-/// Exports a group of spans to Stackdriver.
+/// Exports a group of spans to Google Cloud.
///
-public class StackdriverTraceExporter : BaseExporter
+[Obsolete("This exporter is deprecated and might be removed in a future version. Please consider using directly OTPL directly: https://cloud.google.com/stackdriver/docs/reference/telemetry/overview")]
+public class GoogleCloudTraceExporter : BaseExporter
{
- private static readonly string StackdriverExportVersion;
+ private static readonly string GoogleCloudTraceExportVersion;
private static readonly string OpenTelemetryExporterVersion;
private readonly Google.Api.Gax.ResourceNames.ProjectName googleCloudProjectId;
@@ -24,17 +25,17 @@ public class StackdriverTraceExporter : BaseExporter
private readonly TraceServiceClient? traceServiceClient;
#pragma warning disable CA1810 // Initialize reference type static fields inline
- static StackdriverTraceExporter()
+ static GoogleCloudTraceExporter()
#pragma warning restore CA1810 // Initialize reference type static fields inline
{
try
{
- var assemblyPackageVersion = typeof(StackdriverTraceExporter).GetTypeInfo().Assembly.GetCustomAttributes().First().InformationalVersion;
- StackdriverExportVersion = assemblyPackageVersion;
+ var assemblyPackageVersion = typeof(GoogleCloudTraceExporter).GetTypeInfo().Assembly.GetCustomAttributes().First().InformationalVersion;
+ GoogleCloudTraceExportVersion = assemblyPackageVersion;
}
catch (Exception)
{
- StackdriverExportVersion = $"{Constants.PackagVersionUndefined}";
+ GoogleCloudTraceExportVersion = $"{Constants.PackagVersionUndefined}";
}
try
@@ -48,27 +49,27 @@ static StackdriverTraceExporter()
}
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
///
/// Project ID to send telemetry to.
- public StackdriverTraceExporter(string projectId)
+ public GoogleCloudTraceExporter(string projectId)
{
this.googleCloudProjectId = new Google.Api.Gax.ResourceNames.ProjectName(projectId);
- // Set header mutation for every outgoing API call to Stackdriver so the BE knows
+ // Set header mutation for every outgoing API call to Google Cloud so the BE knows
// which version of OC client is calling it as well as which version of the exporter
- var callSettings = CallSettings.FromHeaderMutation(StackdriverCallHeaderAppender);
+ var callSettings = CallSettings.FromHeaderMutation(GoogleCloudCallHeaderAppender);
this.traceServiceSettings = new TraceServiceSettings { CallSettings = callSettings };
}
///
- /// Initializes a new instance of the class.
+ /// Initializes a new instance of the class.
/// Only used internally for tests.
///
/// Project ID to send telemetry to.
/// TraceServiceClient instance to use.
[ExcludeFromCodeCoverage]
- internal StackdriverTraceExporter(string projectId, TraceServiceClient traceServiceClient)
+ internal GoogleCloudTraceExporter(string projectId, TraceServiceClient traceServiceClient)
: this(projectId)
{
this.traceServiceClient = traceServiceClient;
@@ -111,7 +112,7 @@ public override ExportResult Export(in Batch batch)
}
catch (Exception ex)
{
- ExporterStackdriverEventSource.Log.ExportMethodException(ex);
+ ExporterGoogleCloudEventSource.Log.ExportMethodException(ex);
return ExportResult.Failure;
}
@@ -123,9 +124,9 @@ public override ExportResult Export(in Batch batch)
/// Appends OpenTelemetry headers for every outgoing request to Stackdriver Backend.
///
/// The metadata that is sent with every outgoing http request.
- private static void StackdriverCallHeaderAppender(Metadata metadata)
+ private static void GoogleCloudCallHeaderAppender(Metadata metadata)
{
metadata.Add("AGENT_LABEL_KEY", "g.co/agent");
- metadata.Add("AGENT_LABEL_VALUE_STRING", $"{OpenTelemetryExporterVersion}; stackdriver-exporter {StackdriverExportVersion}");
+ metadata.Add("AGENT_LABEL_VALUE_STRING", $"{OpenTelemetryExporterVersion}; googlecloud-exporter {GoogleCloudTraceExportVersion}");
}
}
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ActivityExtensions.cs b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ActivityExtensions.cs
similarity index 96%
rename from src/OpenTelemetry.Exporter.Stackdriver/Implementation/ActivityExtensions.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ActivityExtensions.cs
index d833dc9eed..5ca2216e01 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ActivityExtensions.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ActivityExtensions.cs
@@ -7,7 +7,7 @@
using Google.Protobuf.WellKnownTypes;
using OpenTelemetry.Trace;
-namespace OpenTelemetry.Exporter.Stackdriver.Implementation;
+namespace OpenTelemetry.Exporter.GoogleCloud.Implementation;
internal static class ActivityExtensions
{
@@ -24,7 +24,7 @@ internal static class ActivityExtensions
};
///
- /// Translating to Stackdriver's Span
+ /// Translating to GoogleCloudMonitoring 's Span
/// According to specifications.
///
/// Activity in OpenTelemetry format.
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/Constants.cs b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/Constants.cs
similarity index 81%
rename from src/OpenTelemetry.Exporter.Stackdriver/Implementation/Constants.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/Implementation/Constants.cs
index 9a642cdda6..900297095c 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/Constants.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/Constants.cs
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-namespace OpenTelemetry.Exporter.Stackdriver.Implementation;
+namespace OpenTelemetry.Exporter.GoogleCloud.Implementation;
internal class Constants
{
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ExporterStackdriverEventSource.cs b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ExporterGoogleCloudEventSource.cs
similarity index 54%
rename from src/OpenTelemetry.Exporter.Stackdriver/Implementation/ExporterStackdriverEventSource.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ExporterGoogleCloudEventSource.cs
index 66715f6cb0..2f453459b5 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ExporterStackdriverEventSource.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ExporterGoogleCloudEventSource.cs
@@ -4,12 +4,12 @@
using System.Diagnostics.Tracing;
using OpenTelemetry.Internal;
-namespace OpenTelemetry.Exporter.Stackdriver.Implementation;
+namespace OpenTelemetry.Exporter.GoogleCloud.Implementation;
-[EventSource(Name = "OpenTelemetry-Exporter-Stackdriver")]
-internal class ExporterStackdriverEventSource : EventSource
+[EventSource(Name = "OpenTelemetry-Exporter-GoogleCloudMonitoring ")]
+internal class ExporterGoogleCloudEventSource : EventSource
{
- public static readonly ExporterStackdriverEventSource Log = new();
+ public static readonly ExporterGoogleCloudEventSource Log = new();
[NonEvent]
public void ExportMethodException(Exception ex)
@@ -20,7 +20,7 @@ public void ExportMethodException(Exception ex)
}
}
- [Event(3, Message = "Stackdriver exporter encountered an error while exporting. Exception: {0}", Level = EventLevel.Error)]
+ [Event(3, Message = "GoogleCloudMonitoring exporter encountered an error while exporting. Exception: {0}", Level = EventLevel.Error)]
public void ExportMethodException(string ex)
{
this.WriteEvent(1, ex);
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/GoogleCloudResourceUtils.cs b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/GoogleCloudResourceUtils.cs
similarity index 94%
rename from src/OpenTelemetry.Exporter.Stackdriver/Implementation/GoogleCloudResourceUtils.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/Implementation/GoogleCloudResourceUtils.cs
index 253b7c1169..d2acb297ba 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/GoogleCloudResourceUtils.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/GoogleCloudResourceUtils.cs
@@ -3,7 +3,7 @@
using Google.Api;
-namespace OpenTelemetry.Exporter.Stackdriver.Implementation;
+namespace OpenTelemetry.Exporter.GoogleCloud.Implementation;
///
/// Utility methods for working with Google Cloud Resources.
@@ -44,7 +44,7 @@ public static class GoogleCloudResourceUtils
/// Determining the resource to which the metrics belong.
///
/// The project id.
- /// Stackdriver Monitored Resource.
+ /// GoogleCloudMonitoring Monitored Resource.
public static MonitoredResource GetDefaultResource(string? projectId)
{
var resource = new MonitoredResource();
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/StackdriverStatsConfiguration.cs b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/GoogleCloudStatsConfiguration.cs
similarity index 78%
rename from src/OpenTelemetry.Exporter.Stackdriver/Implementation/StackdriverStatsConfiguration.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/Implementation/GoogleCloudStatsConfiguration.cs
index 06da734ec2..0fb26d5a29 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/StackdriverStatsConfiguration.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/GoogleCloudStatsConfiguration.cs
@@ -4,23 +4,23 @@
using Google.Api;
using Google.Apis.Auth.OAuth2;
-namespace OpenTelemetry.Exporter.Stackdriver.Implementation;
+namespace OpenTelemetry.Exporter.GoogleCloud.Implementation;
///
-/// Configuration for exporting stats into Stackdriver.
+/// Configuration for exporting stats into GoogleCloudMonitoring .
///
-public class StackdriverStatsConfiguration
+public class GoogleCloudStatsConfiguration
{
private static readonly TimeSpan DefaultInterval = TimeSpan.FromMinutes(1);
///
- /// Gets default Stats Configuration for Stackdriver.
+ /// Gets default Stats Configuration for GoogleCloudMonitoring .
///
- public static StackdriverStatsConfiguration Default
+ public static GoogleCloudStatsConfiguration Default
{
get
{
- var defaultConfig = new StackdriverStatsConfiguration
+ var defaultConfig = new GoogleCloudStatsConfiguration
{
ExportInterval = DefaultInterval,
ProjectId = GoogleCloudResourceUtils.GetProjectId(),
@@ -38,7 +38,7 @@ public static StackdriverStatsConfiguration Default
public TimeSpan ExportInterval { get; set; }
///
- /// Gets or sets the prefix to append to every OpenTelemetry metric name in Stackdriver.
+ /// Gets or sets the prefix to append to every OpenTelemetry metric name in GoogleCloudMonitoring .
///
public string? MetricNamePrefix { get; set; }
@@ -48,7 +48,7 @@ public static StackdriverStatsConfiguration Default
public string? ProjectId { get; set; }
///
- /// Gets or sets credential used to authenticate against Google Stackdriver Monitoring APIs.
+ /// Gets or sets credential used to authenticate against Google GoogleCloudMonitoring Monitoring APIs.
///
public GoogleCredential? GoogleCredential { get; set; }
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ResourceExtensions.cs b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ResourceExtensions.cs
similarity index 95%
rename from src/OpenTelemetry.Exporter.Stackdriver/Implementation/ResourceExtensions.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ResourceExtensions.cs
index 0b4d791253..c7d2c15117 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ResourceExtensions.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ResourceExtensions.cs
@@ -4,7 +4,7 @@
using Google.Cloud.Trace.V2;
using OpenTelemetry.Resources;
-namespace OpenTelemetry.Exporter.Stackdriver.Implementation;
+namespace OpenTelemetry.Exporter.GoogleCloud.Implementation;
internal static class ResourceExtensions
{
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ResourceSemanticConventions.cs b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ResourceSemanticConventions.cs
similarity index 80%
rename from src/OpenTelemetry.Exporter.Stackdriver/Implementation/ResourceSemanticConventions.cs
rename to src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ResourceSemanticConventions.cs
index b9b1b59a39..2b81f1532a 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/Implementation/ResourceSemanticConventions.cs
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/Implementation/ResourceSemanticConventions.cs
@@ -1,7 +1,7 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0
-namespace OpenTelemetry.Exporter.Stackdriver.Implementation;
+namespace OpenTelemetry.Exporter.GoogleCloud.Implementation;
internal class ResourceSemanticConventions
{
diff --git a/src/OpenTelemetry.Exporter.Stackdriver/OpenTelemetry.Exporter.Stackdriver.csproj b/src/OpenTelemetry.Exporter.GoogleCloud/OpenTelemetry.Exporter.GoogleCloud.csproj
similarity index 87%
rename from src/OpenTelemetry.Exporter.Stackdriver/OpenTelemetry.Exporter.Stackdriver.csproj
rename to src/OpenTelemetry.Exporter.GoogleCloud/OpenTelemetry.Exporter.GoogleCloud.csproj
index a291cb8043..c51f9b3e90 100644
--- a/src/OpenTelemetry.Exporter.Stackdriver/OpenTelemetry.Exporter.Stackdriver.csproj
+++ b/src/OpenTelemetry.Exporter.GoogleCloud/OpenTelemetry.Exporter.GoogleCloud.csproj
@@ -4,8 +4,8 @@
$(NetMinimumSupportedVersion);$(NetStandardMinimumSupportedVersion);$(NetFrameworkMinimumSupportedVersion)
An OpenTelemetry .NET exporter that sends telemetry to Google Stackdriver.
- $(PackageTags);Stackdriver;Google;GCP;distributed-tracing
- Exporter.Stackdriver-
+ $(PackageTags);Google;GCP;distributed-tracing
+ Exporter.GoogleCloud-
$(SupportedNetTargets)
$(TargetFrameworks);$(NetFrameworkMinimumSupportedVersion)
- Unit test project for Stackdriver Exporter for OpenTelemetry.
+ Unit test project for GoogleCloud Exporter for OpenTelemetry.
-
+
@@ -23,7 +23,7 @@
diff --git a/test/OpenTelemetry.Exporter.Stackdriver.Tests/ResourceExtensionsTests.cs b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/ResourceExtensionsTests.cs
similarity index 94%
rename from test/OpenTelemetry.Exporter.Stackdriver.Tests/ResourceExtensionsTests.cs
rename to test/OpenTelemetry.Exporter.GoogleCloud.Tests/ResourceExtensionsTests.cs
index 8072d0aca7..42df160d3b 100644
--- a/test/OpenTelemetry.Exporter.Stackdriver.Tests/ResourceExtensionsTests.cs
+++ b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/ResourceExtensionsTests.cs
@@ -2,11 +2,11 @@
// SPDX-License-Identifier: Apache-2.0
using Google.Cloud.Trace.V2;
-using OpenTelemetry.Exporter.Stackdriver.Implementation;
+using OpenTelemetry.Exporter.GoogleCloud.Implementation;
using OpenTelemetry.Resources;
using Xunit;
-namespace OpenTelemetry.Exporter.Stackdriver.Tests;
+namespace OpenTelemetry.Exporter.GoogleCloud.Tests;
public class ResourceExtensionsTests
{
diff --git a/test/OpenTelemetry.Exporter.Stackdriver.Tests/StackdriverExporterTests.cs b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/StackdriverExporterTests.cs
similarity index 90%
rename from test/OpenTelemetry.Exporter.Stackdriver.Tests/StackdriverExporterTests.cs
rename to test/OpenTelemetry.Exporter.GoogleCloud.Tests/StackdriverExporterTests.cs
index 5d6a65772c..33116ec530 100644
--- a/test/OpenTelemetry.Exporter.Stackdriver.Tests/StackdriverExporterTests.cs
+++ b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/StackdriverExporterTests.cs
@@ -2,16 +2,16 @@
// SPDX-License-Identifier: Apache-2.0
using System.Diagnostics;
-using OpenTelemetry.Exporter.Stackdriver.Implementation;
+using OpenTelemetry.Exporter.GoogleCloud.Implementation;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using Xunit;
-namespace OpenTelemetry.Exporter.Stackdriver.Tests;
+namespace OpenTelemetry.Exporter.GoogleCloud.Tests;
-public class StackdriverExporterTests
+public class GoogleCloudMonitoringExporterTests
{
- static StackdriverExporterTests()
+ static GoogleCloudMonitoringExporterTests()
{
Activity.DefaultIdFormat = ActivityIdFormat.W3C;
Activity.ForceDefaultIdFormat = true;
@@ -26,7 +26,7 @@ static StackdriverExporterTests()
}
[Fact]
- public void StackdriverExporter_CustomActivityProcessor()
+ public void GoogleCloudMonitoringExporter_CustomActivityProcessor()
{
const string ActivitySourceName = "stackdriver.test";
var requestId = Guid.NewGuid();
@@ -50,7 +50,7 @@ public void StackdriverExporter_CustomActivityProcessor()
var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
.AddSource(ActivitySourceName)
.AddProcessor(testActivityProcessor)
- .UseStackdriverExporter("test").Build();
+ .UseGoogleCloudExporter("test").Build();
var source = new ActivitySource(ActivitySourceName);
var activity = source.StartActivity("Test Activity");
@@ -61,12 +61,12 @@ public void StackdriverExporter_CustomActivityProcessor()
}
[Fact]
- public void StackdriverExporter_WithServiceNameMetadata()
+ public void GoogleCloudMonitoringExporter_WithServiceNameMetadata()
{
const string ActivitySourceName = "stackdriver.test";
var traceClient = new TestTraceServiceClient(throwException: false);
- var activityExporter = new StackdriverTraceExporter("test_project", traceClient);
+ var activityExporter = new GoogleCloudTraceExporter("test_project", traceClient);
var openTelemetrySdk = Sdk.CreateTracerProviderBuilder()
.AddSource(ActivitySourceName)
@@ -83,7 +83,7 @@ public void StackdriverExporter_WithServiceNameMetadata()
}
[Fact]
- public void StackdriverExporter_TraceClientThrows_ExportResultFailure()
+ public void GoogleCloudMonitoringExporter_TraceClientThrows_ExportResultFailure()
{
Exception? exception;
var result = ExportResult.Success;
@@ -91,7 +91,7 @@ public void StackdriverExporter_TraceClientThrows_ExportResultFailure()
const string ActivitySourceName = "stackdriver.test";
var source = new ActivitySource(ActivitySourceName);
var traceClient = new TestTraceServiceClient(throwException: true);
- var activityExporter = new StackdriverTraceExporter("test", traceClient);
+ var activityExporter = new GoogleCloudTraceExporter("test", traceClient);
var processor = new BatchActivityExportProcessor(new InMemoryExporter(exportedItems));
@@ -119,7 +119,7 @@ void RunTest(Batch batch)
}
[Fact]
- public void StackdriverExporter_TraceClientDoesNotTrow_ExportResultSuccess()
+ public void GoogleCloudMonitoringExporter_TraceClientDoesNotTrow_ExportResultSuccess()
{
Exception? exception;
var result = ExportResult.Failure;
@@ -127,7 +127,7 @@ public void StackdriverExporter_TraceClientDoesNotTrow_ExportResultSuccess()
const string ActivitySourceName = "stackdriver.test";
var source = new ActivitySource(ActivitySourceName);
var traceClient = new TestTraceServiceClient(throwException: false);
- var activityExporter = new StackdriverTraceExporter("test", traceClient);
+ var activityExporter = new GoogleCloudTraceExporter("test", traceClient);
var processor = new BatchActivityExportProcessor(new InMemoryExporter(exportedItems));
diff --git a/test/OpenTelemetry.Exporter.Stackdriver.Tests/TestActivityProcessor.cs b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/TestActivityProcessor.cs
similarity index 96%
rename from test/OpenTelemetry.Exporter.Stackdriver.Tests/TestActivityProcessor.cs
rename to test/OpenTelemetry.Exporter.GoogleCloud.Tests/TestActivityProcessor.cs
index e82193e16a..113cb32874 100644
--- a/test/OpenTelemetry.Exporter.Stackdriver.Tests/TestActivityProcessor.cs
+++ b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/TestActivityProcessor.cs
@@ -3,7 +3,7 @@
using System.Diagnostics;
-namespace OpenTelemetry.Exporter.Stackdriver.Tests;
+namespace OpenTelemetry.Exporter.GoogleCloud.Tests;
internal class TestActivityProcessor : BaseProcessor, IDisposable
{
diff --git a/test/OpenTelemetry.Exporter.Stackdriver.Tests/TestTraceServiceClient.cs b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/TestTraceServiceClient.cs
similarity index 92%
rename from test/OpenTelemetry.Exporter.Stackdriver.Tests/TestTraceServiceClient.cs
rename to test/OpenTelemetry.Exporter.GoogleCloud.Tests/TestTraceServiceClient.cs
index 8baebef691..5dee351b8a 100644
--- a/test/OpenTelemetry.Exporter.Stackdriver.Tests/TestTraceServiceClient.cs
+++ b/test/OpenTelemetry.Exporter.GoogleCloud.Tests/TestTraceServiceClient.cs
@@ -5,7 +5,7 @@
using Google.Cloud.Trace.V2;
using Grpc.Core;
-namespace OpenTelemetry.Exporter.Stackdriver.Tests;
+namespace OpenTelemetry.Exporter.GoogleCloud.Tests;
internal class TestTraceServiceClient(bool throwException) : TraceServiceClient
{
diff --git a/test/OpenTelemetry.Exporter.Stackdriver.Tests/Implementation/StackdriverStatsConfigurationTests.cs b/test/OpenTelemetry.Exporter.Stackdriver.Tests/Implementation/StackdriverStatsConfigurationTests.cs
deleted file mode 100644
index caaea64bc7..0000000000
--- a/test/OpenTelemetry.Exporter.Stackdriver.Tests/Implementation/StackdriverStatsConfigurationTests.cs
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright The OpenTelemetry Authors
-// SPDX-License-Identifier: Apache-2.0
-
-using OpenTelemetry.Exporter.Stackdriver.Implementation;
-using Xunit;
-
-namespace OpenTelemetry.Exporter.Stackdriver.Tests;
-
-public class StackdriverStatsConfigurationTests
-{
- public StackdriverStatsConfigurationTests()
- {
- // Setting this for unit testing purposes, so we don't need credentials for real Google Cloud Account
- Environment.SetEnvironmentVariable("GOOGLE_PROJECT_ID", "test", EnvironmentVariableTarget.Process);
- }
-
- [Fact]
- public void StatsConfiguration_ByDefault_MetricNamePrefixEmpty()
- {
- Assert.NotNull(StackdriverStatsConfiguration.Default);
- Assert.Equal(GoogleCloudResourceUtils.GetProjectId(), StackdriverStatsConfiguration.Default.ProjectId);
- Assert.Equal(string.Empty, StackdriverStatsConfiguration.Default.MetricNamePrefix);
- }
-
- [Fact]
- public void StatsConfiguration_ByDefault_ProjectIdIsGoogleCloudProjectId()
- {
- Assert.NotNull(StackdriverStatsConfiguration.Default);
- Assert.Equal(GoogleCloudResourceUtils.GetProjectId(), StackdriverStatsConfiguration.Default.ProjectId);
- }
-
- [Fact]
- public void StatsConfiguration_ByDefault_ExportIntervalMinute()
- {
- Assert.Equal(TimeSpan.FromMinutes(1), StackdriverStatsConfiguration.Default.ExportInterval);
- }
-
- [Fact]
- public void StatsConfiguration_ByDefault_MonitoredResourceIsGlobal()
- {
- Assert.NotNull(StackdriverStatsConfiguration.Default.MonitoredResource);
-
- Assert.Equal(Constants.Global, StackdriverStatsConfiguration.Default.MonitoredResource.Type);
-
- Assert.NotNull(StackdriverStatsConfiguration.Default.MonitoredResource.Labels);
-
- Assert.True(StackdriverStatsConfiguration.Default.MonitoredResource.Labels.ContainsKey("project_id"));
- Assert.True(StackdriverStatsConfiguration.Default.MonitoredResource.Labels.ContainsKey(Constants.ProjectIdLabelKey));
- Assert.Equal(
- StackdriverStatsConfiguration.Default.ProjectId,
- StackdriverStatsConfiguration.Default.MonitoredResource.Labels[Constants.ProjectIdLabelKey]);
- }
-}