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);
 }
        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 TaskCountingPeriodShortLivingTasksTest()
        {
            using (var taskScheduler2 = new TaskScheduler(Mock.Of <IShamanLogger>()))
            {
                _taskScheduler.ScheduleOnInterval(() => { Thread.Sleep(100); }, 10, 10, true);
                _taskScheduler.ScheduleOnInterval(() => { Thread.Sleep(100); }, 10, 10, true);
                _taskScheduler.ScheduleOnInterval(() => { Thread.Sleep(100); }, 10, 10, true);
                _taskScheduler.ScheduleOnInterval(() => { Thread.Sleep(100); }, 10, 10, true);

                PendingTask.GetActivePeriodicTimersCount().Should().Be(TaskSchedulerInternalPeriodicTimersCount);
                PendingTask.GetActivePeriodicSlTimersCount().Should().Be(4);

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

                PendingTask.GetActivePeriodicTimersCount().Should().Be(TaskSchedulerInternalPeriodicTimersCount);
                PendingTask.GetActivePeriodicSlTimersCount().Should().Be(5);
            }
        }