Esempio n. 1
0
        public async Task SimpleRequestQueueTest()
        {
            MockLayoutManager layoutManager = new MockLayoutManager();

            layoutManager.FindOneAction = true;
            IResolver resolver = new Resolver(false);

            ServiceManager.ReadOnlyForTests = false;
            ServiceManager.LayoutManager    = layoutManager;
            ServiceManager.ReadOnlyForTests = true;

            TaskCompletionSource <ResolvedActionsEventArgs> requestReady = new TaskCompletionSource <ResolvedActionsEventArgs>();

            resolver.ActionsResolved += (sender, args) =>
            {
                requestReady.TrySetResult(args);
            };
            await resolver.CreateRequest(new BeaconEventArgs()
            {
                Beacon = new Beacon()
                {
                    Id1 = "7367672374000000ffff0000ffff0004", Id2 = 39178, Id3 = 30929
                },
                EventType = BeaconEventType.Unknown
            });

            ResolvedActionsEventArgs state = await requestReady.Task;

            Assert.AreEqual(1, state.ResolvedActions.Count, "Request not successfull");
        }
Esempio n. 2
0
        public async Task MultipleRequestQueueTest()
        {
            MockLayoutManager layoutManager = new MockLayoutManager();

            layoutManager.FindOneAction = true;
            IResolver resolver = new Resolver(false);

            ServiceManager.ReadOnlyForTests = false;
            ServiceManager.LayoutManager    = layoutManager;
            ServiceManager.ReadOnlyForTests = true;

            TaskCompletionSource <List <ResolvedActionsEventArgs> > requestReady = new TaskCompletionSource <List <ResolvedActionsEventArgs> >();
            List <ResolvedActionsEventArgs> requestsList = new List <ResolvedActionsEventArgs>();

            resolver.ActionsResolved += (sender, args) =>
            {
                requestsList.Add(args);
                if (requestsList.Count == 10)
                {
                    requestReady.TrySetResult(requestsList);
                }
            };
            for (int i = 0; i < 10; i++)
            {
                await resolver.CreateRequest(new BeaconEventArgs()
                {
                    Beacon = new Beacon()
                    {
                        Id1 = "7367672374000000ffff0000ffff0004", Id2 = 39178, Id3 = 30929
                    },
                    EventType = BeaconEventType.Unknown
                });
            }
            if (await Task.WhenAny(requestReady.Task, Task.Delay(500000)) == requestReady.Task)
            {
                Assert.AreEqual(10, requestReady.Task.Result.Count, "Request not successfull");

                Assert.AreEqual(10, requestsList.Count, "Not 10 request results");
            }
            else
            {
                Assert.Fail("Timout");
            }
        }
Esempio n. 3
0
        public async Task MultipleRequestWithFailuresQueueTest()
        {
            MockLayoutManager layoutManager = new MockLayoutManager();

            layoutManager.FindOneAction = true;
            IResolver resolver = new Resolver(false);

            ServiceManager.ReadOnlyForTests = false;
            ServiceManager.LayoutManager    = layoutManager;
            ServiceManager.ReadOnlyForTests = true;

            layoutManager.ShouldFail += (r, fail) =>
            {
                if (r.RequestId == 5 && r.TryCount == 1)
                {
                    fail.Fail = true;
                    return;
                }

                if (r.RequestId == 6)
                {
                    fail.Fail = true;
                    return;
                }
            };

            TaskCompletionSource <List <ResolvedActionsEventArgs> > requestReady = new TaskCompletionSource <List <ResolvedActionsEventArgs> >();
            List <ResolvedActionsEventArgs> requestsList = new List <ResolvedActionsEventArgs>();

            resolver.ActionsResolved += (sender, args) =>
            {
                requestsList.Add(args);
            };
            int i = 0;

            ((Resolver)resolver).Finished += () =>
            {
                if (i == 10)
                {
                    requestReady.TrySetResult(requestsList);
                }
            };

            for (; i < 10; i++)
            {
                await resolver.CreateRequest(new BeaconEventArgs()
                {
                    Beacon = new Beacon()
                    {
                        Id1 = "7367672374000000ffff0000ffff0004", Id2 = 39178, Id3 = 30929
                    },
                    EventType = BeaconEventType.Unknown
                });
            }

            if (await Task.WhenAny(requestReady.Task, Task.Delay(5000)) == requestReady.Task)
            {
                Assert.AreEqual(9, requestReady.Task.Result.Count, "Request successfull (last should fail)");

                Assert.AreEqual(9, requestsList.Count, "Not 9 request results");
            }
            else
            {
                Assert.Fail("Timout");
            }
        }