Esempio n. 1
0
        public bool Schedule(RequestProcessType type, string identifier, ProcessSchedulerDelegate processAsync)
        {
            var queueItem = new QueueItem(type, identifier, processAsync);

            // Try and enqueue item, if this fails it means we're tearing down.
            var enqueued = _queue.TryEnqueue(queueItem);

            return(enqueued);
        }
 public void ShouldScheduleCompletedTask(RequestProcessType type)
 {
     using (IScheduler s = new ProcessScheduler(new TestLoggerFactory(_testOutputHelper)))
     {
         var done = new CountdownEvent(1);
         s.Start();
         s.Add(type, "bogus", () =>
         {
             done.Signal();
             return(Task.CompletedTask);
         });
         done.Wait(ALONGTIME_MS).Should().Be(true, because: "all tasks have to run");
     }
 }
        public void ShouldScheduleCompletedTask(RequestProcessType type)
        {
            var testScheduler  = new TestScheduler();
            var testObservable = testScheduler.CreateColdObservable(
                OnNext(100, Unit.Default),
                OnCompleted(100, Unit.Default)
                );
            var testObserver = testScheduler.CreateObserver <Unit>();

            using IScheduler s = new ProcessScheduler(new TestLoggerFactory(_testOutputHelper), null);

            s.Start();
            s.Add(type, "bogus", testObservable.Do(testObserver));

            testScheduler.AdvanceTo(50);

            testObservable.Subscriptions.Count.Should().Be(1);

            testScheduler.AdvanceTo(101);

            testObservable.Subscriptions.Count.Should().Be(1);
            testObserver.Messages.Should().Contain(z => z.Value.Kind == NotificationKind.OnNext);
            testObserver.Messages.Should().Contain(z => z.Value.Kind == NotificationKind.OnCompleted);
        }
        public void ShouldScheduleCompletedTask(RequestProcessType type)
        {
            var testScheduler  = new TestScheduler();
            var testObservable = testScheduler.CreateColdObservable(
                OnNext(Subscribed, Unit.Default),
                OnCompleted(Subscribed, Unit.Default)
                );
            var testObserver = testScheduler.CreateObserver <Unit>();

            using var s = new ProcessScheduler(new TestLoggerFactory(_testOutputHelper), false, null, TimeSpan.FromSeconds(30), testScheduler);


            s.Add(type, "bogus", DoStuff(testObservable, testObserver));

            testScheduler.AdvanceTo(Subscribed / 2);

            testObservable.Subscriptions.Count.Should().Be(1);

            testScheduler.AdvanceTo(Subscribed + 1);

            testObservable.Subscriptions.Count.Should().Be(1);
            testObserver.Messages.Should().Contain(z => z.Value.Kind == NotificationKind.OnNext);
            testObserver.Messages.Should().Contain(z => z.Value.Kind == NotificationKind.OnCompleted);
        }
Esempio n. 5
0
 private record QueueItem(RequestProcessType Type, string Identifier, ProcessSchedulerDelegate ProcessAsync);
Esempio n. 6
0
 public RequestProcessIdentifier(RequestProcessType defaultRequestProcessType = RequestProcessType.Serial) => _defaultRequestProcessType = defaultRequestProcessType;
 public ProcessAttribute(RequestProcessType type)
 {
     Type = type;
 }
Esempio n. 8
0
 public static void Add(this IScheduler scheduler, RequestProcessType type, string name, Func <Task> request)
 {
     scheduler.Add(type, name, Observable.FromAsync(request));
 }