Exemplo n.º 1
0
        public void GetRequestByRequestIdReturnsNullIfRequestIdIsNotFound()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");

                Assert.AreEqual(0, queue.GetCount());

                Request request1 = CreateRequest();
                request1.Behavior.Tag = "A";

                Request request2 = CreateRequest();
                request2.Behavior.Tag = "B";

                queue.Enqueue(request1);
                queue.Enqueue(request2);

                Assert.AreEqual(2, queue.GetCount());

                Request req = queue.GetRequest(Guid.Empty);

                Assert.IsNull(req);
                Assert.AreEqual(2, queue.GetCount());
            }
        }
Exemplo n.º 2
0
        public void CanGetRequestByRequestId()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");

                Assert.AreEqual(0, queue.GetCount());

                Request request1 = CreateRequest();
                request1.Behavior.Tag = "A";

                Request request2 = CreateRequest();
                request2.Behavior.Tag = "B";

                Request request3 = CreateRequest();
                request3.Behavior.Tag = "A";

                queue.Enqueue(request1);
                queue.Enqueue(request2);
                queue.Enqueue(request3);

                Assert.AreEqual(3, queue.GetCount());

                Request req = queue.GetRequest(request2.RequestId);
                queue.Remove(req);

                Assert.IsNotNull(req);
                Assert.IsTrue(AreEqual(request2, req));
                Assert.AreEqual(2, queue.GetCount());
            }
        }
Exemplo n.º 3
0
        public void CreatesTableWhenNotPresent()
        {
            string tableName = "Requests";

            using (SmartClientDatabase database = GetDatabase())
            {
                Assert.IsFalse(database.TableExists(tableName));
                IRequestQueue queue = new DatabaseRequestQueue(database, tableName);

                Assert.IsTrue(database.TableExists(tableName));
            }
        }
Exemplo n.º 4
0
        public void UsesDefaultTableNameWhenNotSupplied()
        {
            string tableName = "Requests";

            using (SmartClientDatabase database = GetDatabase())
            {
                Assert.IsFalse(database.TableExists(tableName));
                IRequestQueue queue = new DatabaseRequestQueue(database);

                Assert.IsTrue(database.TableExists(tableName));
            }
        }
Exemplo n.º 5
0
        public void CanEnqueueRequestWithProxyFactoryTypeover255CharactersLong()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue    = new DatabaseRequestQueue(database, "Requests");
                Request       request1 = CreateRequest();
                request1.OnlineProxyType = typeof(ClassWithReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyReallyLongName);

                queue.Enqueue(request1);

                Assert.AreEqual(1, queue.GetCount());
            }
        }
Exemplo n.º 6
0
        public void AddARequestIncreasesCount()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue    = new DatabaseRequestQueue(database, "Requests");
                int           expected = queue.GetCount() + 1;

                Request request = CreateRequest();
                queue.Enqueue(request);

                Assert.AreEqual(expected, queue.GetCount());
            }
        }
Exemplo n.º 7
0
        public void EnqueingRequestWithMissingOnlineProxyTypeThrows()
        {
            Request request = new Request();

            request.MethodName = "Method";
            request.Endpoint   = "Endpoint";
            request.Behavior   = new OfflineBehavior();

            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");
                queue.Enqueue(request);
            }
        }
Exemplo n.º 8
0
        public void MessagesInQueueSurviveApplicationRestart()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue    = new DatabaseRequestQueue(database, "Requests");
                Request       request1 = CreateRequest();
                queue.Enqueue(request1);

                queue = new DatabaseRequestQueue(database, "Requests");

                Assert.AreEqual(1, queue.GetCount());
                Request request2 = queue.GetNextRequest();
                Assert.IsTrue(AreEqual(request1, request2));
            }
        }
Exemplo n.º 9
0
        public void CanEnqueueRequestWithEndpointName300CharactersLong()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue    = new DatabaseRequestQueue(database, "Requests");
                Request       request1 = CreateRequest();
                String        name     = new string('s', 300);
                request1.Endpoint = name;

                queue.Enqueue(request1);

                Assert.AreEqual(1, queue.GetCount());
                Assert.AreEqual(name, queue.GetNextRequest().Endpoint);
            }
        }
Exemplo n.º 10
0
        public void RemovingARequestsDecreasesCount()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue   = new DatabaseRequestQueue(database, "Requests");
                Request       request = CreateRequest();

                Assert.AreEqual(0, queue.GetCount());
                queue.Enqueue(request);
                Assert.AreEqual(1, queue.GetCount());

                queue.Remove(request);
                Assert.AreEqual(0, queue.GetCount());
            }
        }
Exemplo n.º 11
0
        public void CannotEnquequeRequestsWithSameId()
        {
            string tableName = "Requests";

            using (SmartClientDatabase database = GetDatabase())
            {
                Request request1 = CreateRequest();
                Request request2 = CreateRequest();
                request2.RequestId = request1.RequestId;

                IRequestQueue queue = new DatabaseRequestQueue(database, tableName);

                queue.Enqueue(request1);
                queue.Enqueue(request2);
            }
        }
Exemplo n.º 12
0
        public void OnEnqueuedEventIsFiredWhenRequestIsEnqueued()
        {
            bool eventFired = false;

            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");
                queue.RequestEnqueued += delegate(object sender, RequestEnqueuedEventArgs args) { eventFired = true; };

                Assert.IsFalse(eventFired);
                Request request1 = CreateRequest();
                request1.Behavior.Stamps = 7;
                queue.Enqueue(request1);
                Assert.IsTrue(eventFired);
                Assert.AreEqual(1, queue.GetCount());
            }
        }
Exemplo n.º 13
0
        public void OnRequestEnqueuedTheQueuedDateIsFilledInTheRequestByTheQueue()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue    = new DatabaseRequestQueue(database, "Requests");
                Request       request1 = CreateRequest();
                request1.Behavior.QueuedDate = null;
                Assert.IsNull(request1.Behavior.QueuedDate);
                DateTime before = DateTime.Now;
                queue.Enqueue(request1);
                DateTime after = DateTime.Now;

                Assert.IsNotNull(request1.Behavior.QueuedDate);
                Assert.IsTrue(before <= request1.Behavior.QueuedDate);
                Assert.IsTrue(after >= request1.Behavior.QueuedDate);
            }
        }
Exemplo n.º 14
0
        public void RequestCanBeQueuedWhenOptionalPropertiesNotSet()
        {
            Request request = new Request();

            request.Endpoint                  = "Endpoint";
            request.MethodName                = "Method";
            request.OnlineProxyType           = typeof(DatabaseRequestQueueFixture);
            request.Behavior                  = new OfflineBehavior();
            request.Behavior.ProxyFactoryType = typeof(MockProxyFactory);

            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");
                Assert.AreEqual(0, queue.GetCount());
                queue.Enqueue(request);
                Assert.AreEqual(1, queue.GetCount());
            }
        }
Exemplo n.º 15
0
        public void GetNextRequestDoesntRemoveItFromQueue()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");

                Assert.AreEqual(0, queue.GetCount());

                Request request = CreateRequest();
                queue.Enqueue(request);

                Assert.AreEqual(1, queue.GetCount());
                Request dequeued = queue.GetNextRequest();

                Assert.AreEqual(1, queue.GetCount());
                Assert.IsTrue(AreEqual(request, dequeued));
            }
        }
Exemplo n.º 16
0
        public void CanEnqueueRequestsWithNullParameters()
        {
            string tableName = "Requests";

            using (SmartClientDatabase database = GetDatabase())
            {
                Assert.IsFalse(database.TableExists(tableName));

                IRequestQueue queue = new DatabaseRequestQueue(database, tableName);

                Request req = CreateRequest();
                req.CallParameters = CallParameters.ToArray("Test", null, 123, null);

                // Throws Exception
                queue.Enqueue(req);

                Request result = queue.GetNextRequest();
                Assert.IsTrue(AreEqual(req, result));
            }
        }
Exemplo n.º 17
0
        public void RequestsByPriceAreFifo()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");

                Assert.AreEqual(0, queue.GetCount());

                Request request1 = CreateRequest();
                request1.Behavior.Stamps = 7;
                Request request2 = CreateRequest();
                request2.Behavior.Stamps = 6;
                Request request3 = CreateRequest();
                request3.Behavior.Stamps = 1;
                Request request4 = CreateRequest();
                request4.Behavior.Stamps = 5;

                queue.Enqueue(request1);
                queue.Enqueue(request2);
                queue.Enqueue(request3);
                queue.Enqueue(request4);

                Assert.AreEqual(4, queue.GetCount());

                List <Request> list = new List <Request>();

                foreach (Request req in queue.GetRequests(5))
                {
                    list.Add(req);
                    queue.Remove(req);
                }

                Assert.AreEqual(3, list.Count);
                Assert.IsTrue(AreEqual(request1, list[0]));
                Assert.IsTrue(AreEqual(request2, list[1]));
                Assert.IsTrue(AreEqual(request4, list[2]));
                Assert.AreEqual(1, queue.GetCount());
            }
        }
Exemplo n.º 18
0
        public void CanGetRequestsIteratorByTag()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");

                Assert.AreEqual(0, queue.GetCount());

                Request request1 = CreateRequest();
                request1.Behavior.Tag = "A";

                Request request2 = CreateRequest();
                request2.Behavior.Tag = "B";

                Request request3 = CreateRequest();
                request3.Behavior.Tag = "A";

                queue.Enqueue(request1);
                queue.Enqueue(request2);
                queue.Enqueue(request3);

                Assert.AreEqual(3, queue.GetCount());

                List <Request> list = new List <Request>();

                foreach (Request req in queue.GetRequests("A"))
                {
                    list.Add(req);
                    queue.Remove(req);
                }

                Assert.AreEqual(2, list.Count);
                Assert.IsTrue(AreEqual(request1, list[0]));
                Assert.IsTrue(AreEqual(request3, list[1]));
                Assert.AreEqual(1, queue.GetCount());
            }
        }
Exemplo n.º 19
0
        public void RequestsIteratorIsFifo()
        {
            using (SmartClientDatabase database = GetDatabase())
            {
                IRequestQueue queue = new DatabaseRequestQueue(database, "Requests");

                Assert.AreEqual(0, queue.GetCount());

                Request request1 = CreateRequest();
                Request request2 = CreateRequest();
                Request request3 = CreateRequest();
                Request request4 = CreateRequest();

                queue.Enqueue(request1);
                queue.Enqueue(request2);
                queue.Enqueue(request3);
                queue.Enqueue(request4);

                Assert.AreEqual(4, queue.GetCount());

                List <Request> list = new List <Request>();

                foreach (Request req in queue.GetRequests())
                {
                    list.Add(req);
                    queue.Remove(req);
                }

                Assert.AreEqual(4, list.Count);
                Assert.IsTrue(AreEqual(request1, list[0]));
                Assert.IsTrue(AreEqual(request2, list[1]));
                Assert.IsTrue(AreEqual(request3, list[2]));
                Assert.IsTrue(AreEqual(request4, list[3]));
                Assert.AreEqual(0, queue.GetCount());
            }
        }