Esempio n. 1
0
        public void TestTask()
        {
            var tasks = new EquipartitionTaskContainer();
            var task1 = tasks.Create("a", "o", 5, "task1");
            var task2 = tasks.Create("a", "p", 1, "task2");
            var task3 = tasks.Create("b", "q", 2, "task3");

            Assert.AreEqual(5, task1.Count);
            Assert.AreEqual(1, task2.Count);
            Assert.AreEqual(2, task3.Count);
            Assert.AreEqual(5, task1.GetWaitingOrProcessingFragments().Count());
            Assert.AreEqual(1, task2.GetWaitingOrProcessingFragments().Count());
            Assert.AreEqual(2, task3.GetWaitingOrProcessingFragments().Count());
            Assert.AreEqual(0, task1.GetProcessingFragments().Count());
            Assert.AreEqual(0, task2.GetProcessingFragments().Count());
            Assert.AreEqual(0, task3.GetProcessingFragments().Count());
            Assert.AreEqual(0, task1.GetDoneFragments().Count());
            Assert.AreEqual(0, task2.GetDoneFragments().Count());
            Assert.AreEqual(0, task3.GetDoneFragments().Count());

            var f = task1.Pick();

            Assert.AreEqual(EquipartitionTask.FragmentStates.Working, f.State);
            Assert.AreEqual(1, task1.GetProcessingFragments().Count());
            task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Success);
            Assert.AreEqual(EquipartitionTask.FragmentStates.Success, f.State);
            Assert.AreEqual(0, task1.GetProcessingFragments().Count());
            f = task1.Pick();
            Assert.AreEqual(EquipartitionTask.FragmentStates.Working, f.State);
            task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Failure);
            Assert.AreEqual(EquipartitionTask.FragmentStates.Failure, f.State);
            Assert.AreEqual(0, task1.GetProcessingFragments().Count());
            f = task1.Pick();
            Assert.AreEqual(EquipartitionTask.FragmentStates.Retrying, f.State);
            Assert.AreEqual(1, task1.GetProcessingFragments().Count());
            Assert.AreEqual(0, task2.GetProcessingFragments().Count());
            task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Fatal);
            Assert.AreEqual(EquipartitionTask.FragmentStates.Fatal, f.State);

            Assert.AreEqual(0, task1.GetProcessingFragments().Count());
            Assert.AreEqual(0, task2.GetProcessingFragments().Count());
            Assert.AreEqual(0, task3.GetProcessingFragments().Count());
            Assert.AreEqual(2, task1.GetDoneFragments().Count());
            Assert.AreEqual(0, task2.GetDoneFragments().Count());
            Assert.AreEqual(0, task3.GetDoneFragments().Count());
            Assert.AreEqual(3, task1.GetWaitingOrProcessingFragments().Count());

            task3.Pick();
            f = task3.Pick();
            Assert.AreEqual(2, task3.GetProcessingFragments().Count());
            var fStr = f.ToJsonString();

            f    = EquipartitionTask.Fragment.Parse(fStr);
            fStr = f.ToQueryData().ToString();
            f    = EquipartitionTask.Fragment.Parse(fStr);
            var status = task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Success);

            Assert.AreEqual(0, task1.GetProcessingFragments().Count());
            Assert.AreEqual(2, task3.GetProcessingFragments().Count());
            Assert.AreEqual(false, status);
            task3.UpdateFragment(f, EquipartitionTask.FragmentStates.Success);
            Assert.AreEqual(0, task1.GetProcessingFragments().Count());
            Assert.AreEqual(1, task3.GetProcessingFragments().Count());
            Assert.AreEqual(EquipartitionTask.FragmentStates.Success, f.State);
            f = task3.Pick();
            Assert.IsNull(f);

            task3.UpdateFragment(task3[0], EquipartitionTask.FragmentStates.Success);
            Assert.AreEqual(0, task1.GetProcessingFragments().Count());
        }
Esempio n. 2
0
        private void TestEquipartitionTaskAsync()
        {
            Console.WriteLine("Equipartition task testing.");
            var tasks = new EquipartitionTaskContainer();

            tasks.Created += (sender, ev) =>
            {
                if (ev.NewValue == null)
                {
                    Console.WriteLine("N/A");
                    return;
                }

                Console.WriteLine($"{ev.NewValue.Description ?? ev.NewValue.Id}\t{ev.Key}\tCreated");
            };
            var task1 = tasks.Create("a", "o", 5, "task1");

            WriteLine(task1);
            var task2 = tasks.Create("a", "p", 1, "task2");

            WriteLine(task2);
            var task3 = tasks.Create("b", "q", 2, "task3");

            WriteLine(task3);

            Console.WriteLine("Pick from " + (task1.Description ?? task1.Id));
            var f = task1.Pick();

            f = task1.Pick();
            WriteLine(task1);
            task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Success);
            WriteLine(task1);
            f = task1.Pick();
            WriteLine(task1);
            task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Failure);
            WriteLine(task1);
            Console.WriteLine(f.State);
            f = task1.Pick();
            Console.WriteLine(f.State);
            task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Fatal);
            Console.WriteLine(f.State);
            WriteLine(task1);
            WriteLine(task2);
            WriteLine(task3);

            Console.WriteLine("Pick from " + (task3.Description ?? task3.Id));
            f = task3.Pick();
            f = task3.Pick();
            WriteLine(task1);
            WriteLine(task2);
            WriteLine(task3);
            var fStr = f.ToJsonString();

            Console.WriteLine(fStr);
            f    = EquipartitionTask.Fragment.Parse(fStr);
            fStr = f.ToQueryData().ToString();
            Console.WriteLine(fStr);
            f = EquipartitionTask.Fragment.Parse(fStr);
            task1.UpdateFragment(f, EquipartitionTask.FragmentStates.Success);
            WriteLine(task1);
            WriteLine(task2);
            WriteLine(task3);
            task3.UpdateFragment(f, EquipartitionTask.FragmentStates.Success);
            WriteLine(task1);
            WriteLine(task2);
            WriteLine(task3);
            f = task3.Pick();
            Console.WriteLine("No more fragment in task3.");
            if (f != null)
            {
                Console.WriteLine("Error!");
                return;
            }

            task3.UpdateFragment(task3[0], EquipartitionTask.FragmentStates.Success);
            WriteLine(task1);
            WriteLine(task2);
            WriteLine(task3);

            Console.WriteLine("Done!");
        }