diff --git a/Microsoft.Azure.Cosmos/src/Tracing/TraceData/ClientConfigurationTraceDatum.cs b/Microsoft.Azure.Cosmos/src/Tracing/TraceData/ClientConfigurationTraceDatum.cs index c70de6e958..ba4c4d086d 100644 --- a/Microsoft.Azure.Cosmos/src/Tracing/TraceData/ClientConfigurationTraceDatum.cs +++ b/Microsoft.Azure.Cosmos/src/Tracing/TraceData/ClientConfigurationTraceDatum.cs @@ -33,6 +33,7 @@ public ClientConfigurationTraceDatum(CosmosClientContext cosmosClientContext, Da this.cachedUserAgentString = this.UserAgentContainer.UserAgent; this.cachedSerializedJson = this.GetSerializedDatum(); this.ProcessorCount = Environment.ProcessorCount; + this.ConnectionMode = cosmosClientContext.ClientOptions.ConnectionMode; } public DateTime ClientCreatedDateTimeUtc { get; } @@ -47,6 +48,8 @@ public ClientConfigurationTraceDatum(CosmosClientContext cosmosClientContext, Da public int ProcessorCount { get; } + public ConnectionMode ConnectionMode { get; } + public ReadOnlyMemory SerializedJson { get @@ -91,6 +94,8 @@ private ReadOnlyMemory GetSerializedDatum() jsonTextWriter.WriteNumber64Value(this.cachedNumberOfClientCreated); jsonTextWriter.WriteFieldName("NumberOfActiveClients"); jsonTextWriter.WriteNumber64Value(this.cachedNumberOfActiveClient); + jsonTextWriter.WriteFieldName("ConnectionMode"); + jsonTextWriter.WriteStringValue(this.ConnectionMode.ToString()); jsonTextWriter.WriteFieldName("User Agent"); jsonTextWriter.WriteStringValue(this.cachedUserAgentString); diff --git a/Microsoft.Azure.Cosmos/src/Tracing/TraceWriter.TraceTextWriter.cs b/Microsoft.Azure.Cosmos/src/Tracing/TraceWriter.TraceTextWriter.cs index 7bc28aec80..a55860655c 100644 --- a/Microsoft.Azure.Cosmos/src/Tracing/TraceWriter.TraceTextWriter.cs +++ b/Microsoft.Azure.Cosmos/src/Tracing/TraceWriter.TraceTextWriter.cs @@ -482,6 +482,7 @@ public void Visit(ClientConfigurationTraceDatum clientConfigurationTraceDatum) stringBuilder.AppendLine($"Machine Id: {VmMetadataApiHandler.GetMachineId()}"); stringBuilder.AppendLine($"Number Of Clients Created: {CosmosClient.numberOfClientsCreated}"); stringBuilder.AppendLine($"Number Of Active Clients: {CosmosClient.NumberOfActiveClients}"); + stringBuilder.AppendLine($"Connection Mode: {clientConfigurationTraceDatum.ConnectionMode}"); stringBuilder.AppendLine($"User Agent: {clientConfigurationTraceDatum.UserAgentContainer.UserAgent}"); stringBuilder.AppendLine("Connection Config:"); stringBuilder.AppendLine($"{space}'gw': {clientConfigurationTraceDatum.GatewayConnectionConfig}"); diff --git a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/ClientConfigurationDiagnosticTest.cs b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/ClientConfigurationDiagnosticTest.cs index eb2d99489b..f366759814 100644 --- a/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/ClientConfigurationDiagnosticTest.cs +++ b/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/ClientConfigurationDiagnosticTest.cs @@ -2,6 +2,8 @@ { using System; using System.Collections.Generic; + using System.Diagnostics; + using System.Text; using System.Threading.Tasks; using Microsoft.Azure.Cosmos.Diagnostics; using Microsoft.Azure.Cosmos.Tracing; @@ -88,6 +90,13 @@ public void ClientConfigWithOptionsTest() Assert.AreEqual(clientConfig.ConsistencyConfig.ApplicationRegion, "East US"); Assert.IsNull(clientConfig.ConsistencyConfig.PreferredRegions); + Assert.AreEqual(clientConfig.ConnectionMode, ConnectionMode.Direct); + clientOptions.ConnectionMode = ConnectionMode.Gateway; + context = ClientContextCore.Create( + cosmosClient, + clientOptions); + clientConfig = new ClientConfigurationTraceDatum(context, DateTime.UtcNow); + Assert.AreEqual(clientConfig.ConnectionMode, ConnectionMode.Gateway); } [TestMethod] @@ -121,6 +130,8 @@ public async Task CachedSerializationTest() clientConfigurationTraceDatum = (ClientConfigurationTraceDatum)trace.Data["Client Configuration"]; Assert.IsNotNull(clientConfigurationTraceDatum.SerializedJson); Assert.AreEqual(clientConfigurationTraceDatum.ProcessorCount, Environment.ProcessorCount); + string deserializedJson = Encoding.UTF8.GetString(clientConfigurationTraceDatum.SerializedJson.Span); + Assert.IsTrue(deserializedJson.Contains("ConnectionMode")); } } }