Esempio n. 1
0
        //[Test]
        public void Test()
        {
            Thread threadA = new Thread(() =>
            {
                string baselineEnvName = "";
                TestThreadMethod_("VG-MultiThreadBatchC11", threadALock,
                                  new DesktopBrowserInfo(800, 600, BrowserType.CHROME, baselineEnvName),
                                  new DesktopBrowserInfo(700, 500, BrowserType.CHROME, baselineEnvName),
                                  new DesktopBrowserInfo(400, 300, BrowserType.CHROME, baselineEnvName));
            });

            threadA.Name = "ThreadA";

            Thread threadB = new Thread(() =>
            {
                string baselineEnvName = "";
                TestThreadMethod_("VG-MultiThreadBatchC22", threadBLock,
                                  new DesktopBrowserInfo(840, 680, BrowserType.CHROME, baselineEnvName),
                                  new DesktopBrowserInfo(750, 530, BrowserType.CHROME, baselineEnvName));
            });

            threadB.Name = "ThreadB";

            //Start the thread and wait for all tasks to be created
            threadA.Start();
            threadALock.WaitOne();

            //Start the thread and wait for all tasks to be created
            threadB.Start();
            threadBLock.WaitOne();

            //Get all tasks
            IEnumerable <ICompletableTask> allOpenTasks      = renderingManager.GetAllTasksByType(TaskType.Open);
            IEnumerable <ICompletableTask> allCheckTasks     = renderingManager.GetAllTasksByType(TaskType.Check);
            IEnumerable <ICompletableTask> allCloseTasks     = renderingManager.GetAllTasksByType(TaskType.Close);
            IEnumerable <ICompletableTask> allRenderingTasks = renderingManager.GetAllRenderingTasks();

            //Test that all tests are not opened yet.
            CheckAllTaskAreNotComplete_(allOpenTasks, "OPEN");

            //Test that all tests are not checked yet.
            CheckAllTaskAreNotComplete_(allCheckTasks, "CHECK");

            //Test that all tests are not closed yet.
            CheckAllTaskAreNotComplete_(allCloseTasks, "CLOSE");

            //Test that all tests are not rendered yet.
            CheckAllTaskAreNotComplete_(allRenderingTasks, "RENDER");

            //Start Rendering
            renderThreadLock.Set();
            renderTestLock.WaitOne(); // Wait for first render.

            renderThreadLock.Set();
            renderTestLock.WaitOne();  // Wait for second render.

            int openedTaskCount = StartServiceAndCountCompletedTasks_(allOpenTasks, openerThreadLock, openerTestLock);

            Assert.AreEqual(concurrentOpenSessions, openedTaskCount, "Completed opened tasks are not equal to concurrency");

            int closeTasksCount = StartServiceAndCountCompletedTasks_(allCloseTasks, closerThreadLock, closerTestLock);

            Assert.AreEqual(0, closeTasksCount, "Close tasks are completed before check tasks");

            int checkedTasksCount = StartServiceAndCountCompletedTasks_(allCheckTasks, checkerThreadLock, checkerTestLock);

            Assert.AreEqual(concurrentOpenSessions, checkedTasksCount, "Completed checked tasks are not equal to concurrency");

            PauseAllServices_();

            closeTasksCount = StartServiceAndCountCompletedTasks_(allCloseTasks, closerThreadLock, closerTestLock);

            Assert.AreEqual(concurrentOpenSessions, closeTasksCount);

            openedTaskCount = StartServiceAndCountCompletedTasks_(allOpenTasks, openerThreadLock, openerTestLock);

            Assert.AreEqual(5, openedTaskCount, "Completed opened tasks are not equal to concurrency");

            checkedTasksCount = StartServiceAndCountCompletedTasks_(allCheckTasks, checkerThreadLock, checkerTestLock);

            Assert.AreEqual(5, checkedTasksCount, "Completed checked tasks are not equal to concurrency");

            closeTasksCount = StartServiceAndCountCompletedTasks_(allCloseTasks, closerThreadLock, closerTestLock);

            Assert.AreEqual(5, closeTasksCount, "Close tasks are completed before check tasks");
        }