/// <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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }