Esempio n. 1
0
        public void TestSchedluler()
        {
            List <int> taskTimings = new List <int>();


            for (int i = 0; i < 1000; i++)
            {
                taskTimings.Add(i + 5);
                taskTimings.Add(i / 2 + 100);
            }

            TaskScheduler ts = new TaskScheduler();

            List <TimingTestTask> testTasks = new List <TimingTestTask>();

            // create tasks
            for (int i = 0; i < taskTimings.Count; i++)
            {
                TimingTestTask task = new TimingTestTask()
                {
                    ExpectedDelay = taskTimings[i], Id = i
                };
                testTasks.Add(task);
            }
            int executedTasks = 0;

            foreach (var task in testTasks)
            {
                task.StartCounting();
                ts.SchedluleTask(() => { task.Executed(); Interlocked.Increment(ref executedTasks); }, TimeSpan.FromMilliseconds(task.ExpectedDelay));
            }


            Thread.Sleep(11000);
            Thread.MemoryBarrier();
            decimal meanAbsoluteError = 0;

            foreach (var task in testTasks)
            {
                if (task.WasExecuted != 1)
                {
                    Console.WriteLine("Task {0} was not executed !", task.Id);
                }

                meanAbsoluteError += Math.Abs(task.ActualDelay - task.ExpectedDelay);

                Console.WriteLine("Exptected: {0}\tActual: {1}", task.ExpectedDelay, task.ActualDelay);
            }
            meanAbsoluteError /= testTasks.Count;
            Console.WriteLine("Total: {0}\tExecuted: {1}", testTasks.Count, executedTasks);
            Console.WriteLine("MAE: {0}", meanAbsoluteError);
        }
Esempio n. 2
0
        public void TestSchedluler()
        {
            List <int> taskTimings = new List <int>();

            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);
            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);
            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);
            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);
            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);
            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);
            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);
            taskTimings.Add(400);
            taskTimings.Add(54);
            taskTimings.Add(774);

            TaskScheduler ts = new TaskScheduler();

            List <TimingTestTask> testTasks = new List <TimingTestTask>();

            // create tasks
            for (int i = 0; i < taskTimings.Count; i++)
            {
                TimingTestTask task = new TimingTestTask()
                {
                    ExpectedDelay = taskTimings[i], Id = i
                };
                testTasks.Add(task);
                if (i % 11 == 0)
                {
                    Thread.Sleep(1000);
                }
            }

            foreach (var task in testTasks)
            {
                task.StartCounting();
                ts.SchedluleTask(task.Executed, TimeSpan.FromMilliseconds(task.ExpectedDelay));
            }


            Thread.Sleep(5000);

            decimal meanAbsoluteError = 0;

            foreach (var task in testTasks)
            {
                Check.That(task.WasExecuted);
                meanAbsoluteError += Math.Abs(task.ActualDelay - task.ExpectedDelay);
            }
            meanAbsoluteError /= testTasks.Count;
            Check.That(meanAbsoluteError).IsLessThan(10);
        }