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