예제 #1
0
            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}"));
            }
        }