internal MacOsUserAgentContainer CreateUserAgentContainer(int clientId) { CosmosClientOptionsFeatures features = CosmosClientOptionsFeatures.NoFeatures; if (this.AllowBulkExecution) { features |= CosmosClientOptionsFeatures.AllowBulkExecution; } if (this.HttpClientFactory != null) { features |= CosmosClientOptionsFeatures.HttpClientFactory; } string featureString = null; if (features != CosmosClientOptionsFeatures.NoFeatures) { featureString = Convert.ToString((int)features, 2).PadLeft(8, '0'); } return(new MacOsUserAgentContainer( clientId: clientId, features: featureString, suffix: this.ApplicationName)); }
public async Task VerifyUserAgentWithFeatures(bool setApplicationName, bool useMacOs) { this.SetEnvironmentInformation(useMacOs); const string suffix = " UserApplicationName/1.0"; CosmosClientOptionsFeatures featuresFlags = CosmosClientOptionsFeatures.NoFeatures; featuresFlags |= CosmosClientOptionsFeatures.AllowBulkExecution; featuresFlags |= CosmosClientOptionsFeatures.HttpClientFactory; string features = Convert.ToString((int)featuresFlags, 2).PadLeft(8, '0'); Action <Fluent.CosmosClientBuilder> applicationNameBuilder = (builder) => { if (setApplicationName) { builder.WithApplicationName(suffix); } }; using (CosmosClient client = TestCommon.CreateCosmosClient(builder => applicationNameBuilder(builder.WithBulkExecution(true).WithHttpClientFactory(() => new HttpClient())))) { Cosmos.UserAgentContainer userAgentContainer = client.ClientOptions.GetConnectionPolicy().UserAgentContainer; string userAgentString = userAgentContainer.UserAgent; if (setApplicationName) { Assert.IsTrue(userAgentString.Contains(suffix)); } else { Assert.IsFalse(userAgentString.Contains(suffix)); } Assert.IsTrue(userAgentString.Contains($"|F {features}")); if (useMacOs) { Assert.IsTrue(userAgentString.Contains("Darwin 18.0.0")); } Cosmos.Database db = await client.CreateDatabaseIfNotExistsAsync(Guid.NewGuid().ToString()); Assert.IsNotNull(db); await db.DeleteAsync(); } using (CosmosClient client = TestCommon.CreateCosmosClient(builder => applicationNameBuilder(builder))) { Cosmos.UserAgentContainer userAgentContainer = client.ClientOptions.GetConnectionPolicy().UserAgentContainer; string userAgentString = userAgentContainer.UserAgent; if (setApplicationName) { Assert.IsTrue(userAgentString.Contains(suffix)); } else { Assert.IsFalse(userAgentString.Contains(suffix)); } Assert.IsFalse(userAgentString.Contains($"|F {features}")); } }