Exemplo n.º 1
0
        private Action TestToAction(IPerformanceTest test, Barrier barrier, IPerformanceTestRunnerListener listener)
        {
            return(() =>
            {
                if (!barrier.SignalAndWait(BarrierWaitTimeout))
                {
                    throw new TestFirstException("Timed out waiting for 'Invoke' barrier");
                }
                var testListener = new TestListenerAdapter(listener, new PerformanceSuite.PerfTestContext {
                    AgentId = "0", MachineId = Environment.MachineName
                });
                test.InvokeTest(testListener);

                if (!barrier.SignalAndWait(BarrierWaitTimeout))
                {
                    throw new TestFirstException("Timed out waiting for 'AfterInvokeInTestThread' barrier");
                }
            });
        }
Exemplo n.º 2
0
        public void Start(PerformanceSuite.PerfTestContext ctxt, IPerformanceTestRunnerListener runListener)
        {
            m_endAt = DateTime.Now.Add(m_runFor);
            m_threads.Clear();
            m_threads = new List <ActionCompleteThread>();
            for (var i = 01; i < m_numThreads; i++)
            {
                var threadListener = new TestListenerAdapter(runListener, ctxt);
                var threadAction   = NewInvokeTestAction(threadListener);
                m_threads.Add(new ActionCompleteThread(threadAction.Invoke).Where(t => t.Priority = m_threadPriority));
            }

            m_threads.ForEach(t => t.Start());
            //wait for runners to complete
            while (DateTime.Now < m_endAt && m_threads.Any(t => !t.Completed))
            {
                Thread.Sleep(1000);
            }
            m_threads.ForEach(t => t.Abort());
        }