diff --git a/sdk/monitor/Azure.Monitor.Query/CHANGELOG.md b/sdk/monitor/Azure.Monitor.Query/CHANGELOG.md index 6971a073106d..8a74ea766895 100644 --- a/sdk/monitor/Azure.Monitor.Query/CHANGELOG.md +++ b/sdk/monitor/Azure.Monitor.Query/CHANGELOG.md @@ -9,6 +9,7 @@ ### Bugs Fixed ### Other Changes +- Added testing for sovereign support for `LogsQueryClient` and `MetricsQueryClient` ## 1.2.0 (2023-05-22) diff --git a/sdk/monitor/Azure.Monitor.Query/src/LogsQueryClient.cs b/sdk/monitor/Azure.Monitor.Query/src/LogsQueryClient.cs index 19aae1aaf37e..b8df5264e493 100644 --- a/sdk/monitor/Azure.Monitor.Query/src/LogsQueryClient.cs +++ b/sdk/monitor/Azure.Monitor.Query/src/LogsQueryClient.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Generic; using System.Globalization; -using System.Linq; using System.Text; using System.Text.Json; using System.Threading; diff --git a/sdk/monitor/Azure.Monitor.Query/tests.yml b/sdk/monitor/Azure.Monitor.Query/tests.yml index 2498ec29ae4f..557ea5fcf7eb 100644 --- a/sdk/monitor/Azure.Monitor.Query/tests.yml +++ b/sdk/monitor/Azure.Monitor.Query/tests.yml @@ -5,4 +5,5 @@ extends: parameters: ServiceDirectory: monitor Project: Azure.Monitor.Query - TimeoutInMinutes: 120 + TimeoutInMinutes: 240 + SupportedClouds: 'Public,UsGov,China' diff --git a/sdk/monitor/Azure.Monitor.Query/tests/MonitorQueryTestEnvironment.cs b/sdk/monitor/Azure.Monitor.Query/tests/MonitorQueryTestEnvironment.cs index a83ade4be07e..7247686ba1b6 100644 --- a/sdk/monitor/Azure.Monitor.Query/tests/MonitorQueryTestEnvironment.cs +++ b/sdk/monitor/Azure.Monitor.Query/tests/MonitorQueryTestEnvironment.cs @@ -2,7 +2,9 @@ // Licensed under the MIT License. using System; +using System.Collections.Generic; using Azure.Core.TestFramework; +using NUnit.Framework; namespace Azure.Monitor.Query.Tests { @@ -16,10 +18,35 @@ public class MonitorQueryTestEnvironment : TestEnvironment public string MetricsNamespace => GetRecordedVariable("METRICS_RESOURCE_NAMESPACE"); public string MonitorIngestionEndpoint => GetOptionalVariable("METRICS_INGEST_SUFFIX") ?? "ods.opinsights.azure.com"; public string MetricsIngestionEndpoint => GetOptionalVariable("METRICS_INGEST_SUFFIX") ?? "monitoring.azure.com"; - public Uri LogsEndpoint => new(GetRecordedVariable("LOGS_ENDPOINT")); public Uri MetricsEndpoint => new(ResourceManagerUrl); public string ResourceId => GetRecordedVariable("RESOURCE_ID"); public string WorkspacePrimaryResourceId => GetRecordedVariable("WORKSPACE_PRIMARY_RESOURCE_ID"); public string WorkspaceSecondaryResourceId => GetRecordedVariable("WORKSPACE_SECONDARY_RESOURCE_ID"); + public Uri LogsEndpoint => new(GetEndpoint()); + + private Dictionary regions = new Dictionary() + { + { "AzureCloud", "https://api.loganalytics.io/v1" }, + { "AzureChinaCloud", "https://api.loganalytics.azure.cn/v1" }, + { "AzureUSGovernment", "https://api.loganalytics.us/v1" } + }; + + private string ENV_MONITOR_ENVIRONMENT = "MONITOR_ENVIRONMENT"; + private string GetEndpoint() + { + // if mode is Playback use DefaultEndpoint + if (Mode == RecordedTestMode.Playback) + { + return GetRecordedVariable("LOGS_ENDPOINT"); + } + // else find endpoing of specific region from pipeline + string endpoint = ""; + TestContext.Progress.WriteLine("Current Region: " + Environment.GetEnvironmentVariable(ENV_MONITOR_ENVIRONMENT)); + if (regions.TryGetValue(Environment.GetEnvironmentVariable(ENV_MONITOR_ENVIRONMENT), out string region)) + { + endpoint = region; + } + return endpoint; + } } } diff --git a/sdk/monitor/test-resources.bicep b/sdk/monitor/test-resources.bicep index 702c75ab775d..3a57ae63c73e 100644 --- a/sdk/monitor/test-resources.bicep +++ b/sdk/monitor/test-resources.bicep @@ -180,8 +180,8 @@ output WORKSPACE_KEY string = listKeys(primaryWorkspace.id, '2020-10-01').primar output SECONDARY_WORKSPACE_KEY string = listKeys(secondaryWorkspace.id, '2020-10-01').primarySharedKey output METRICS_RESOURCE_ID string = primaryWorkspace.id output METRICS_RESOURCE_NAMESPACE string = 'Microsoft.OperationalInsights/workspaces' -output LOGS_ENDPOINT string = 'https://api.loganalytics.io' output MONITOR_INGESTION_DATA_COLLECTION_ENDPOINT string = dataCollectionEndpoint.properties.logsIngestion.endpoint +output LOGS_ENDPOINT string = 'https://api.loganalytics.io' output INGESTION_STREAM_NAME string = streamName output INGESTION_TABLE_NAME string = table.name output INGESTION_DATA_COLLECTION_RULE_ID string = dataCollectionRule.id