Example #1
0
 protected override void BeforeEach()
 {
     _analyticsOptions = new AnalyticsOptions();
     PackageMock.Setup(p => p.AnalyticsSettings).Returns(_analyticsOptions);
     _promptAnalyticsMock = new Mock <Func <bool> >();
     EventsReporterWrapper.PromptAnalyticsOptIn = _promptAnalyticsMock.Object;
 }
        public void Test_GetFormValuesAsJson()
        {
            var options = new AnalyticsOptions()
            {
                BucketName   = "default",
                ScopeName    = "scope1",
                QueryContext = "queryctx",
            }
            .Parameter("par1")
            .Parameter("par2")
            .Parameter("namedpar1", "namedpar1val")
            .Parameter("namedpar2", "namedpar2val")
            .Raw("raw1", "val1")
            .Raw("raw2", "val2")
            .Readonly(true)
            .ClientContextId("cctxid")
            .Timeout(TimeSpan.FromSeconds(10))
            .ScanConsistency(AnalyticsScanConsistency.RequestPlus)
            .Priority(true);

            var json     = options.GetFormValuesAsJson("SELECT * FROM default");
            var expected = "{\"statement\":\"SELECT * FROM default;\",\"timeout\":\"10000ms\",\"client_context_id\":\"cctxid\",\"query_context\":\"queryctx\",\"namedpar1\":\"namedpar1val\",\"namedpar2\":\"namedpar2val\",\"raw1\":\"val1\",\"raw2\":\"val2\",\"args\":[\"par1\",\"par2\"]}";

            Assert.Contains(expected, json);
        }
Example #3
0
        public async Task Test_Analytics(string file, HttpStatusCode httpStatusCode, Type errorType, bool readOnly)
        {
            var retryOrchestrator = CreateRetryOrchestrator();

            using (var response = ResourceHelper.ReadResourceAsStream(@"Documents\Analytics\" + file))
            {
                var buffer = new byte[response.Length];
                response.Read(buffer, 0, buffer.Length);

                var responses = GetResponses(20, buffer, httpStatusCode);
                var client    = MockedHttpClients.AnalyticsClient(responses);

                using var cts = new CancellationTokenSource();
                cts.CancelAfter(1000);

                var statement = "SELECT * FROM `bar`;";
                var options   = new AnalyticsOptions();
                options.Timeout(TimeSpan.FromSeconds(1000));
                options.CancellationToken(cts.Token);
                options.Readonly(readOnly);

                async Task <IAnalyticsResult <dynamic> > Send()
                {
                    var client1 = client;

                    return(await client1.QueryAsync <dynamic>(statement, options));
                }

                var meter = NoopMeter.Instance;
                await AssertThrowsIfExpectedAsync(errorType, () => retryOrchestrator.RetryAsync(Send, AnalyticsRequest.Create(statement, meter.ValueRecorder("analytics"), options)));
            }
        }
Example #4
0
        public void Can_set_statement()
        {
            // set statement using constructor
            var options = new AnalyticsOptions();

            var formValues = options.GetFormValues(Statement);

            Assert.Equal(Statement, formValues["statement"]);

            var json = JsonConvert.DeserializeObject <dynamic>(
                options.GetFormValuesAsJson(Statement)
                );

            Assert.Equal(Statement, json.statement.Value);

            // set statement using method
            const string statement = "SELECT 1 FROM `datset`;";

            formValues = options.GetFormValues(statement);
            Assert.Equal(statement, formValues["statement"]);

            json = JsonConvert.DeserializeObject <dynamic>(
                options.GetFormValuesAsJson(statement)
                );
            Assert.Equal(statement, json.statement.Value);
        }
        public void TestSetDialogShown()
        {
            var objectUnderTest = new AnalyticsOptions();

            objectUnderTest.DialogShown = true;

            Assert.IsTrue(objectUnderTest.DialogShown);
        }
        public void TestSetOptIn()
        {
            var objectUnderTest = new AnalyticsOptions();

            objectUnderTest.OptIn = true;

            Assert.IsTrue(objectUnderTest.OptIn);
        }
Example #7
0
        public void When_parameters_empty_GetParametersFromJson_returns_empty_object()
        {
            var options = new AnalyticsOptions();

            var json = options.GetParametersAsJson();

            Assert.Equal("{}", json);
        }
        public void TestSetInstalledVersion()
        {
            const string testVersionString = "test-version-string";
            var          objectUnderTest   = new AnalyticsOptions();

            objectUnderTest.InstalledVersion = testVersionString;

            Assert.AreEqual(testVersionString, objectUnderTest.InstalledVersion);
        }
        internal static IRequestSpan WithOperationId(this IRequestSpan span, AnalyticsOptions request)
        {
            if (span.CanWrite)
            {
                span.SetAttribute(InnerRequestSpans.DispatchSpan.Attributes.OperationId, request.ClientContextIdValue ?? Guid.NewGuid().ToString());
            }

            return(span);
        }
        public void TestSetClientId()
        {
            const string testClientId    = "test-client-id-string";
            var          objectUnderTest = new AnalyticsOptions();

            objectUnderTest.ClientId = testClientId;

            Assert.AreEqual(testClientId, objectUnderTest.ClientId);
        }
        public void TestInitialConditions()
        {
            var objectUnderTest = new AnalyticsOptions();

            Assert.IsFalse(objectUnderTest.OptIn);
            Assert.IsFalse(objectUnderTest.DialogShown);
            Assert.IsNull(objectUnderTest.ClientId);
            Assert.IsNull(objectUnderTest.InstalledVersion);
        }
Example #12
0
        public void Can_fetch_JSON_from_PositionalParameters()
        {
            var options = new AnalyticsOptions();

            options.Parameter("thevalue");

            var json = options.GetParametersAsJson();

            Assert.Equal("[\"thevalue\"]", json);
        }
Example #13
0
        public void Can_fetch_JSON_from_NamedParameters()
        {
            var options = new AnalyticsOptions();

            options.Parameter("theykey", "thevalue");

            var json = options.GetParametersAsJson();

            Assert.Equal("{\"theykey\":\"thevalue\"}", json);
        }
Example #14
0
        public void Request_auto_generates_context_and_request_Ids()
        {
            var options = new AnalyticsOptions();

            options.ClientContextId(Guid.NewGuid().ToString());

            var formValues = options.GetFormValues(Statement);
            var requestId  = formValues["client_context_id"].ToString();

            Assert.NotEmpty(requestId);
        }
        internal static IRequestSpan DispatchSpan(this IRequestSpan parentSpan, AnalyticsOptions request)
        {
            var childSpan = DispatchSpan(parentSpan);

            if (childSpan.CanWrite)
            {
                childSpan.SetAttribute(InnerRequestSpans.DispatchSpan.Attributes.OperationId, request.ClientContextIdValue ?? Guid.NewGuid().ToString());
            }

            return(childSpan);
        }
Example #16
0
        public void Request_ID_changes_on_each_request()
        {
            var options          = new AnalyticsOptions();
            var formValues       = options.GetFormValues(Statement);
            var clientContextId1 = formValues["client_context_id"].ToString();

            formValues = options.GetFormValues(Statement); // re-trigger as if going to re-submited the query
            var clientContextId2 = formValues["client_context_id"].ToString();

            Assert.NotEqual(clientContextId1, clientContextId2);
        }
        public void Can_set_priority()
        {
            var options = new AnalyticsOptions();

            Assert.Equal(0, options.PriorityValue);

            options.Priority(true);
            Assert.Equal(-1, options.PriorityValue);

            options.Priority(false);
            Assert.Equal(0, options.PriorityValue);
        }
        public void Can_set_timeout()
        {
            var options = new AnalyticsOptions().Timeout(TimeSpan.FromSeconds(15));

            var formValues = options.GetFormValues(Statement);

            Assert.Equal("15000ms", formValues["timeout"]);

            var jsonDocument = JsonDocument.Parse(options.GetFormValuesAsJson(Statement));

            Assert.Equal("15000ms", jsonDocument.RootElement.GetProperty("timeout").GetString());
        }
Example #19
0
        internal AnalyticsOptions CreateAnalyticsOptions()
        {
            var options = new AnalyticsOptions()
                          .CancellationToken(TokenValue);

            if (TimeoutValue.HasValue)
            {
                options.Timeout(TimeoutValue.Value);
            }

            return(options);
        }
        public void TestSaveSettingsSettingsInitalizesClientId()
        {
            var objectUnderTest = new AnalyticsOptions
            {
                OptIn    = true,
                ClientId = null
            };

            objectUnderTest.SaveSettingsToStorage();

            Assert.IsNotNull(objectUnderTest.ClientId);
        }
Example #21
0
        /// <summary>
        /// Ensures that the opt-in dialog is shown to the user.
        /// </summary>
        public static void EnsureAnalyticsOptIn()
        {
            AnalyticsOptions settings = GoogleCloudExtensionPackage.Instance.AnalyticsSettings;

            if (!settings.DialogShown)
            {
                Debug.WriteLine("Showing the opt-in dialog.");
                settings.OptIn       = PromptAnalyticsOptIn();
                settings.DialogShown = true;
                settings.SaveSettingsToStorage();
            }
        }
        public void TestSaveSettingsSettingsDiablesClientId()
        {
            var objectUnderTest = new AnalyticsOptions
            {
                ClientId = "test-client-id-string",
                OptIn    = false
            };

            objectUnderTest.SaveSettingsToStorage();

            Assert.IsNull(objectUnderTest.ClientId);
        }
        public void Default_timeout_is_75_seconds()
        {
            // sets default timeout to 75 seconds
            var options = new AnalyticsOptions().Timeout(TimeSpan.FromSeconds(75));

            var formValues = options.GetFormValues(Statement);

            Assert.Equal("75000ms", formValues["timeout"]);

            var jsonDocument = JsonDocument.Parse(options.GetFormValuesAsJson(Statement));

            Assert.Equal("75000ms", jsonDocument.RootElement.GetProperty("timeout").GetString());
        }
        public void Statement_is_cleaned(string statement)
        {
            const string expected = "SELECT 1;";
            var          options  = new AnalyticsOptions();

            var formValues = options.GetFormValues(statement);

            Assert.Equal(expected, formValues["statement"]);

            var jsonDocument1 = JsonDocument.Parse(options.GetFormValuesAsJson(statement));

            Assert.Equal(expected, jsonDocument1.RootElement.GetProperty("statement").GetString());
        }
Example #25
0
        /// <summary>
        /// Ensures that the opt-in dialog is shown to the user.
        /// </summary>
        public static void EnsureAnalyticsOptIn()
        {
            IGoogleCloudExtensionPackage package  = GoogleCloudExtensionPackage.Instance;
            AnalyticsOptions             settings = package.GeneralSettings;

            if (!settings.DialogShown)
            {
                Debug.WriteLine("Showing the opt-in dialog.");
                settings.OptIn       = package.UserPromptService.PromptUser(new AnalyticsOptInWindowContent());
                settings.DialogShown = true;
                settings.SaveSettingsToStorage();
            }
        }
Example #26
0
        public void Can_set_timeout()
        {
            var options = new AnalyticsOptions().Timeout(TimeSpan.FromSeconds(15));

            var formValues = options.GetFormValues(Statement);

            Assert.Equal("15000ms", formValues["timeout"]);

            var json = JsonConvert.DeserializeObject <dynamic>(
                options.GetFormValuesAsJson(Statement)
                );

            Assert.Equal("15000ms", json.timeout.Value);
        }
Example #27
0
        public void Can_set_client_context_id()
        {
            var options = new AnalyticsOptions();

            options.ClientContextId("testing");
            options.ClientContextId(Guid.NewGuid().ToString());

            var formValues = options.GetFormValues(Statement);
            var contextId  = formValues["client_context_id"].ToString();

            Assert.NotEmpty(contextId);

            Assert.True(Guid.TryParse(contextId, out Guid result));
        }
Example #28
0
        public void Default_timeout_is_75_seconds()
        {
            // sets default timeout to 75 seconds
            var options = new AnalyticsOptions().Timeout(TimeSpan.FromSeconds(75));

            var formValues = options.GetFormValues(Statement);

            Assert.Equal("75000ms", formValues["timeout"]);

            var json = JsonConvert.DeserializeObject <dynamic>(
                options.GetFormValuesAsJson(Statement)
                );

            Assert.Equal("75000ms", json.timeout.Value);
        }
Example #29
0
        public void Statement_is_cleaned(string statement)
        {
            const string expected = "SELECT 1;";
            var          options  = new AnalyticsOptions();

            var formValues = options.GetFormValues(statement);

            Assert.Equal(expected, formValues["statement"]);

            var json = JsonConvert.DeserializeObject <dynamic>(
                options.GetFormValuesAsJson(statement)
                );

            Assert.Equal(expected, json.statement.Value);
        }
        public void TestResetSettings()
        {
            const string testClientId    = "test-client-id-string";
            var          objectUnderTest = new AnalyticsOptions
            {
                ClientId    = testClientId,
                DialogShown = true,
                OptIn       = true
            };

            objectUnderTest.ResetSettings();

            Assert.IsFalse(objectUnderTest.OptIn);
            Assert.IsFalse(objectUnderTest.DialogShown);
            Assert.IsNull(objectUnderTest.ClientId);
        }