public async Task It_notifies_about_removing_an_entry() { var fakeSchedule = new FakeSchedule(); var entries = new List <Entry>(); var fakeBackplane = new FakeBackplane("A", entries); var otherBackplane = new FakeBackplane("B", entries); var client = new DataBackplaneClient(fakeBackplane, fakeSchedule); await client.Start(); var readValues = new List <string>(); var subscription = await client.GetAllAndSubscribeToChanges("T1", entry => { readValues.Add(entry.Data); return(Task.FromResult(0)); }, entry => { readValues.Remove(entry.Data); return(Task.FromResult(0)); }); await otherBackplane.Publish("T1", "B"); await fakeSchedule.TriggerQuery(); CollectionAssert.Contains(readValues, "B"); await otherBackplane.Revoke("T1"); await fakeSchedule.TriggerQuery(); CollectionAssert.DoesNotContain(readValues, "B"); subscription.Unsubscribe(); }
public async Task It_notifies_about_removing_an_entry() { var fakeSchedule = new FakeSchedule(); var entries = new List<Entry>(); var fakeBackplane = new FakeBackplane("A", entries); var otherBackplane = new FakeBackplane("B", entries); var client = new DataBackplaneClient(fakeBackplane, fakeSchedule); await client.Start(); var readValues = new List<string>(); var subscription = await client.GetAllAndSubscribeToChanges("T1", entry => { readValues.Add(entry.Data); return Task.FromResult(0); }, entry => { readValues.Remove(entry.Data); return Task.FromResult(0); }); await otherBackplane.Publish("T1", "B"); await fakeSchedule.TriggerQuery(); CollectionAssert.Contains(readValues, "B"); await otherBackplane.Revoke("T1"); await fakeSchedule.TriggerQuery(); CollectionAssert.DoesNotContain(readValues, "B"); subscription.Unsubscribe(); }
public async Task SwallowsExceptionsInInnerJob() { var clock = Clock.DefaultClock; using (var cts = new CancellationTokenSource()) { var job = new FakeFailingJob(); var fakeSchedule = new FakeSchedule(1); var scheduledJob = new ScheduledJob <FakeFailingJob>(() => job, fakeSchedule, NullLoggerFactory.Instance, clock); await JobHost.RunAsync(scheduledJob, TimeSpan.FromSeconds(3), cts.Token); Assert.True(job.RunCallCount > 1); } }
public async Task WaitsForScheduleBeforeRunningWrappedJob() { var clock = Clock.DefaultClock; using (var cts = new CancellationTokenSource()) { var job = new FakeJob(cts, clock); var fakeSchedule = new FakeSchedule(2); var scheduledJob = new ScheduledJob <FakeJob>(() => job, fakeSchedule, NullLoggerFactory.Instance, clock); var timeBefore = clock.UtcNow; await Assert.ThrowsAsync <OperationCanceledException>(() => scheduledJob.RunAsync(cts.Token)); Assert.True(job.RunTime.Subtract(timeBefore) >= TimeSpan.FromSeconds(2)); } }
public async Task It_notifies_about_all_relevant_entries_right_after_subscribing() { var fakeSchedule = new FakeSchedule(); var entries = new List<Entry>(); entries.Add(new Entry("B", "T1", "B")); entries.Add(new Entry("C", "T1", "C")); var fakeBackplane = new FakeBackplane("A", entries); var client = new DataBackplaneClient(fakeBackplane, fakeSchedule); await client.Start(); await fakeSchedule.TriggerQuery(); var readValues = new List<string>(); var subscription = await client.GetAllAndSubscribeToChanges("T1", entry => { readValues.Add(entry.Data); return Task.FromResult(0); }, entry => Task.FromResult(0)); CollectionAssert.AreEqual(new [] {"B", "C"}, readValues); subscription.Unsubscribe(); }
public async Task It_notifies_about_all_relevant_entries_right_after_subscribing() { var fakeSchedule = new FakeSchedule(); var entries = new List <Entry>(); entries.Add(new Entry("B", "T1", "B")); entries.Add(new Entry("C", "T1", "C")); var fakeBackplane = new FakeBackplane("A", entries); var client = new DataBackplaneClient(fakeBackplane, fakeSchedule); await client.Start(); await fakeSchedule.TriggerQuery(); var readValues = new List <string>(); var subscription = await client.GetAllAndSubscribeToChanges("T1", entry => { readValues.Add(entry.Data); return(Task.FromResult(0)); }, entry => Task.FromResult(0)); CollectionAssert.AreEqual(new [] { "B", "C" }, readValues); subscription.Unsubscribe(); }