public void TearDown()
 {
     _taskScheduler.Dispose();
     PendingTask.GetActivePeriodicTimersCount().Should().Be(0);
     PendingTask.GetActivePeriodicSlTimersCount().Should().Be(0);
     PendingTask.GetExecutingActionsCount().Should().Be(0);
     PendingTask.GetActiveTimersCount().Should().Be(0);
 }
        public async Task ActiveTimerEndsTest()
        {
            PendingTask.GetActiveTimersCount().Should().Be(0);
            _taskScheduler.Schedule(() => { Thread.Sleep(100); }, 10);
            PendingTask.GetActiveTimersCount().Should().Be(1);
            await Task.Delay(200);

            PendingTask.GetActiveTimersCount().Should().Be(0);
        }
        private void CollectMemoryAndThreadsUsage()
        {
            Metrics.Measure.Histogram.Update(Gen0Collections, GC.CollectionCount(0));
            Metrics.Measure.Histogram.Update(Gen1Collections, GC.CollectionCount(1));
            Metrics.Measure.Histogram.Update(Gen2Collections, GC.CollectionCount(2));
            Metrics.Measure.Histogram.Update(GcTotalMemory, GC.GetTotalMemory(false));

            Metrics.Measure.Histogram.Update(PendingTasks, TaskScheduler.GetGlobalScheduledOnceTasksCount());
            Metrics.Measure.Histogram.Update(ExecutingTask, PendingTask.GetExecutingActionsCount());
            Metrics.Measure.Histogram.Update(ActiveTimers, PendingTask.GetActiveTimersCount());
            Metrics.Measure.Histogram.Update(ActivePeriodicTimers, PendingTask.GetActivePeriodicTimersCount());
            Metrics.Measure.Histogram.Update(ActivePeriodicSlTimers, PendingTask.GetActivePeriodicSlTimersCount());
        }
        public void TaskCountingDelayedTasksTest()
        {
            using (var taskScheduler2 = new TaskScheduler(Mock.Of <IShamanLogger>()))
            {
                _taskScheduler.Schedule(() => { Thread.Sleep(100); }, 10);
                _taskScheduler.Schedule(() => { Thread.Sleep(100); }, 10);
                _taskScheduler.Schedule(() => { Thread.Sleep(100); }, 10);
                _taskScheduler.Schedule(() => { Thread.Sleep(100); }, 10);

                PendingTask.GetActiveTimersCount().Should().Be(4);

                taskScheduler2.Schedule(() => { Thread.Sleep(100); }, 10);

                PendingTask.GetActiveTimersCount().Should().Be(5);
            }
        }