Пример #1
0
        /// <summary>
        /// Sends an analytics request to the server.
        /// </summary>
        /// <typeparam name="T">The <see cref="Type" /> T of the body for each row (or document) result.</typeparam>
        /// <param name="analyticsRequest">The analytics request.</param>
        /// <returns></returns>
        public IAnalyticsResult <T> Send <T>(IAnalyticsRequest analyticsRequest)
        {
            IAnalyticsResult <T> result;

            if (_isDown)
            {
                result = HandleNodeUnavailable <T>(analyticsRequest);
            }
            else
            {
                try
                {
                    result = AnalyticsClient.Query <T>(analyticsRequest);
                }
                catch (Exception exception)
                {
                    result = new AnalyticsResult <T>
                    {
                        Exception = exception,
                        Message   = exception.Message,
                        Success   = false,
                    };
                }
            }
            return(result);
        }
Пример #2
0
        public void Client_sets_AnalyticsPriority_Header(bool priority)
        {
            var context = ContextFactory.GetCouchbaseContext();

            context.AnalyticsUris.Add(new FailureCountingUri("http://localhost"));

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request =>
            {
                if (priority)
                {
                    Assert.IsTrue(request.Headers.TryGetValues(AnalyticsClient.AnalyticsPriorityHeaderName, out var values));
                    Assert.AreEqual("-1", values.First());
                }
                else
                {
                    Assert.IsFalse(request.Headers.TryGetValues(AnalyticsClient.AnalyticsPriorityHeaderName, out _));
                }

                return(new HttpResponseMessage(HttpStatusCode.OK));
            })
                );

            var client = new AnalyticsClient(httpClient, new JsonDataMapper(context.ClientConfig), context);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");

            queryRequest.Priority(priority);

            client.Query <dynamic>(queryRequest);
        }
Пример #3
0
        public void When_deferred_is_true_query_result_is_DeferredAnalyticsResult()
        {
            var resultJson = JsonConvert.SerializeObject(new
            {
                status = "Success",
                handle = "handle"
            });

            var context = ContextFactory.GetCouchbaseContext();

            context.AnalyticsUris.Add(new FailureCountingUri("http://localhost"));

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request => new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(resultJson)
            })
                );

            var client = new AnalyticsClient(httpClient,
                                             new JsonDataMapper(context.ClientConfig),
                                             context);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");
            var result       = client.Query <dynamic>(queryRequest);

            Assert.IsInstanceOf <AnalyticsDeferredResultHandle <dynamic> >(result.Handle);
            Assert.AreEqual(QueryStatus.Success, result.Status);

            var deferredResult = (AnalyticsDeferredResultHandle <dynamic>)result.Handle;

            Assert.AreEqual("handle", deferredResult.HandleUri);
        }
        public void Query_Sets_LastActivity()
        {
            var configuration = new ClusterOptions().WithServers("http://localhost");

            configuration.GlobalNodes.Add(new ClusterNode {
                AnalyticsUri = new Uri("http://localhost:8094/query")
            });

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request => new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("{}")
            })
                );

            var client = new AnalyticsClient(httpClient, new JsonDataMapper(new DefaultSerializer()), configuration);

            Assert.Null(client.LastActivity);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");

            client.Query <dynamic>(queryRequest);

            Assert.NotNull(client.LastActivity);
        }
        public void When_deferred_is_true_query_result_is_DeferredAnalyticsResult()
        {
            var resultJson = JsonConvert.SerializeObject(new
            {
                status = "Success",
                handle = "handle"
            });

            var configuration = new ClusterOptions().WithServers("http://localhost");

            configuration.GlobalNodes.Add(new ClusterNode {
                AnalyticsUri = new Uri("http://localhost:8094/query")
            });

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request => new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(resultJson)
            })
                );

            var client = new AnalyticsClient(httpClient, new JsonDataMapper(new DefaultSerializer()), configuration);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");
            var result       = client.Query <dynamic>(queryRequest);

            Assert.IsType <AnalyticsDeferredResultHandle <dynamic> >(result.Handle);
            Assert.Equal(QueryStatus.Success, result.MetaData.Status);

            var deferredResult = (AnalyticsDeferredResultHandle <dynamic>)result.Handle;

            Assert.Equal("handle", deferredResult.HandleUri);
        }
Пример #6
0
        public void Query_Sets_LastActivity()
        {
            var options = new ClusterOptions().WithServers("http://localhost");
            var context = new ClusterContext(null, options);

            context.AddNode(new ClusterNode(new ClusterContext(null, new ClusterOptions()))
            {
                AnalyticsUri = new Uri("http://localhost:8094/query"),
                EndPoint     = new IPEndPoint(IPAddress.Loopback, 8091),
                NodesAdapter = new NodeAdapter {
                    Analytics = 8094
                }
            });

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request => new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent("{}")
            })
                );

            var client = new AnalyticsClient(httpClient, new JsonDataMapper(new DefaultSerializer()), context);

            Assert.Null(client.LastActivity);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");

            client.Query <dynamic>(queryRequest);

            Assert.NotNull(client.LastActivity);
        }
Пример #7
0
        public void Client_sets_AnalyticsPriority_Header(bool priority)
        {
            var configuration = new Configuration().WithServers("http://localhost");

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request =>
            {
                if (priority)
                {
                    Assert.True(request.Headers.TryGetValues(AnalyticsClient.AnalyticsPriorityHeaderName, out var values));
                    Assert.Equal("-1", values.First());
                }
                else
                {
                    Assert.False(request.Headers.TryGetValues(AnalyticsClient.AnalyticsPriorityHeaderName, out _));
                }

                return(new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent("{}")
                });
            })
                );

            var client = new AnalyticsClient(httpClient, new JsonDataMapper(new DefaultSerializer()), configuration);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");

            queryRequest.Priority(priority);

            client.Query <dynamic>(queryRequest);
        }
Пример #8
0
        public void Query_Sets_LastActivity()
        {
            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request => new HttpResponseMessage(HttpStatusCode.OK))
                );

            var config = new ClientConfiguration();
            var client = new AnalyticsClient(httpClient, new JsonDataMapper(config), config);

            Assert.IsNull(client.LastActivity);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");

            client.Query <dynamic>(queryRequest);

            Assert.IsNotNull(client.LastActivity);
        }
Пример #9
0
        public void Client_sets_AnalyticsPriority_Header(bool priority)
        {
            var options = new ClusterOptions().WithServers("http://localhost");
            var context = new ClusterContext(null, options);

            context.AddNode(new ClusterNode(context)
            {
                AnalyticsUri = new Uri("http://localhost:8094/query"),
                EndPoint     = new IPEndPoint(IPAddress.Loopback, 8091),
                NodesAdapter = new NodeAdapter {
                    Analytics = 8094
                }
            });

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request =>
            {
                if (priority)
                {
                    Assert.True(request.Headers.TryGetValues(AnalyticsClient.AnalyticsPriorityHeaderName,
                                                             out var values));
                    Assert.Equal("-1", values.First());
                }
                else
                {
                    Assert.False(request.Headers.TryGetValues(AnalyticsClient.AnalyticsPriorityHeaderName, out _));
                }

                return(new HttpResponseMessage(HttpStatusCode.OK)
                {
                    Content = new StringContent("{}")
                });
            })
                );

            var client = new AnalyticsClient(httpClient, new JsonDataMapper(new DefaultSerializer()), context);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");

            queryRequest.Priority(priority);

            client.Query <dynamic>(queryRequest);
        }
Пример #10
0
        public void Query_Sets_LastActivity()
        {
            var context = ContextFactory.GetCouchbaseContext();

            context.AnalyticsUris.Add(new FailureCountingUri("http://localhost"));

            var httpClient = new HttpClient(
                FakeHttpMessageHandler.Create(request => new HttpResponseMessage(HttpStatusCode.OK))
                );

            var client = new AnalyticsClient(httpClient,
                                             new JsonDataMapper(context.ClientConfig),
                                             context);

            Assert.IsNull(client.LastActivity);

            var queryRequest = new AnalyticsRequest("SELECT * FROM `default`;");

            client.Query <dynamic>(queryRequest);

            Assert.IsNotNull(client.LastActivity);
        }