public void ExecuteAsync_NoCallback_Test()
        {
            var handler     = new BatchMessageHandler(true);
            var initializer = new BaseClientService.Initializer()
            {
                HttpClientFactory = new MockHttpClientFactory(handler)
            };

            using (var service = new MockClientService(initializer, "http://sample.com"))
            {
                var responses = new List <Tuple <MockResponse, RequestError, HttpResponseMessage> >();
                var batch     = new BatchRequest(service);
                var request1  = new TestClientServiceRequest(service, new MockRequest
                {
                    ETag = "\"100\"",
                    Name = "Name1"
                });
                var request2 = new TestClientServiceRequest(service, new MockRequest
                {
                    ETag = "\"200\"",
                    Name = "Name1-1"
                });
                batch.Queue <MockResponse>(request1, null);
                batch.Queue <MockResponse>(request2, null);
                batch.ExecuteAsync().Wait();
            }
        }
Пример #2
0
        public void Run()
        {
            var offersListener = new BatchMessageHandler <CRUDWrapper <Offer> >("offers", BatchHandler, 10);

            this.queue.Listener(offersListener).Start();
            var offersTimer = new Timer(
                (o) => {
                this.logger.LogInfo("Offer batch 'Fatch Messages'");
                offersListener.FatchMessages();
            }, null, 10 * 1000, 10 * 1000);
        }
Пример #3
0
        public void Run()
        {
            var employeesListener = new BatchMessageHandler <CRUDWrapper <Employee> >("employees", BatchHandler, 10);

            queue.Listener(employeesListener).Start();
            var employeesTimer = new Timer(
                (o) => {
                this.logger.LogInfo("Employee batch 'Fatch Messages'");
                employeesListener.FatchMessages();
            }, null, 10 * 1000, 10 * 1000);
        }
Пример #4
0
        public static void UseSyncDataBroker(this IApplicationBuilder app)
        {
            provider = app.ApplicationServices;
            var employeesListener = new BatchMessageHandler <CRUDWrapper <Employee> >("employees", EmployeesBatchHandler, 10);
            var offersListener    = new BatchMessageHandler <CRUDWrapper <Offer> >("offers", OffersBatchHandler, 10);

            provider.GetService <IQueueManager>().Listener(employeesListener).Start();
            provider.GetService <IQueueManager>().Listener(offersListener).Start();

            var employeesTimer = new Timer(
                (o) => {
                employeesListener.FatchMessages();
            }, null, 10 * 1000, 10 * 1000);

            var offersTimer = new Timer(
                (o) => {
                offersListener.FatchMessages();
            }, null, 10 * 1000, 10 * 1000);
        }
        /// <summary>Subtest for the execute method.</summary>
        /// <param name="successful2ndReponse">Indicates if the 2nd individual response is unsuccessful.</param>
        void SubtestExecuteAsync_Test(bool successful2ndReponse)
        {
            var handler     = new BatchMessageHandler(successful2ndReponse);
            var initializer = new BaseClientService.Initializer()
            {
                HttpClientFactory = new MockHttpClientFactory(handler)
            };

            using (var service = new MockClientService(initializer, "http://sample.com"))
            {
                var responses = new List <Tuple <MockResponse, RequestError, HttpResponseMessage> >();
                var batch     = new BatchRequest(service);
                var request1  = new TestClientServiceRequest(service, new MockRequest
                {
                    ETag = "\"100\"",
                    Name = "Name1"
                });
                var request2 = new TestClientServiceRequest(service, new MockRequest
                {
                    ETag = "\"200\"",
                    Name = "Name1-1"
                });
                // Adding the content, error and message into the responses list to verify the results later on
                batch.Queue <MockResponse>(request1, (content, error, index, message) =>
                {
                    responses.Add(new Tuple <MockResponse, RequestError, HttpResponseMessage>(
                                      content, error, message));
                });
                batch.Queue <MockResponse>(request2, (content, error, index, message) =>
                {
                    responses.Add(new Tuple <MockResponse, RequestError, HttpResponseMessage>(
                                      content, error, message));
                });
                batch.ExecuteAsync().Wait();

                Assert.That(responses.Count, Is.EqualTo(2));
                var tuple = responses[0];
                Assert.Null(tuple.Item2);   // no error
                var response = tuple.Item1; // response
                Assert.That(response.ETag, Is.EqualTo(@"""10011"""));
                Assert.That(response.Id, Is.EqualTo(1));
                var httpMessage = tuple.Item3; // HTTP message
                Assert.That(httpMessage.Content.Headers.ContentType.MediaType, Is.EqualTo("application/json"));
                Assert.That(httpMessage.Content.Headers.ContentLength, Is.EqualTo(505));

                tuple = responses[1];
                if (successful2ndReponse)
                {
                    Assert.Null(tuple.Item2); // no error
                    response = tuple.Item1;   // response
                    Assert.That(response.ETag, Is.EqualTo(@"""234"""));
                    Assert.That(response.Id, Is.EqualTo(2));
                }
                else
                {
                    Assert.Null(tuple.Item1);            // no response
                    RequestError reqError = tuple.Item2; // error
                    Assert.That(reqError.Errors.Count, Is.EqualTo(1));
                    Assert.That(reqError.Code, Is.EqualTo(404));
                    Assert.That(reqError.Message, Is.EqualTo("Not Found"));
                }
                httpMessage = tuple.Item3; // HTTP message
                Assert.That(httpMessage.Content.Headers.ContentType.MediaType, Is.EqualTo("application/json"));
                Assert.That(httpMessage.Content.Headers.ContentLength, Is.EqualTo(202));
            }
        }