Skip to content

Commit

Permalink
Diagnostics: Adds Connection Mode to Client Configuration (#3231)
Browse files Browse the repository at this point in the history
* add connection mode to client config diagnostics and add testing logic

* add json validation testing for new property
  • Loading branch information
imanvt committed May 31, 2022
1 parent fcc19be commit e6f9933
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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; }
Expand All @@ -47,6 +48,8 @@ public ClientConfigurationTraceDatum(CosmosClientContext cosmosClientContext, Da

public int ProcessorCount { get; }

public ConnectionMode ConnectionMode { get; }

public ReadOnlyMemory<byte> SerializedJson
{
get
Expand Down Expand Up @@ -91,6 +94,8 @@ private ReadOnlyMemory<byte> 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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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}");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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"));
}
}
}

0 comments on commit e6f9933

Please sign in to comment.