Browses all of the nodes in the hierarchies.
Inheritance: TestBase
示例#1
0
        /// <summary>
        /// Runs a test for a single endpoint.
        /// </summary>
        private void DoTest(string endpoint, ref uint totalCount, ref uint failedCount)
        {
            uint thisTestTotalCount = 0;
            uint thisTestFailedCount = 0;

            bool success = true;
            Dictionary<string,TestBase> testers = new Dictionary<string,TestBase>();
               
            DateTime globalStart = DateTime.UtcNow;
            TestBase lastTester = null;
         
            foreach (ServerTestCase testcase in m_testConfiguration.TestCases)
            {
                // ignore parent tests.
                if (String.IsNullOrEmpty(testcase.Parent))
                {
                    continue;
                }

                // get the test object for the group of tests.
                TestBase tester = null;
                
                if (!testers.TryGetValue(testcase.Parent, out tester))
                {
                    switch (testcase.Parent)
                    {
                        case "Session":
                        {
                            tester = new SessionTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }

                        case "Browse":
                        {
                            tester = new BrowseTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }

                        case "Read":
                        {
                            tester = new ReadTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }

                        case "Write":
                        {
                            tester = new WriteTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }

                        case "Call":
                        {
                            tester = new CallTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }

                        case "TranslatePath":
                        {
                            tester = new TranslatePathTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }

                        case "Subscribe":
                        {
                            tester = new SubscribeTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }

                        case "MonitoredItem":
                        {
                            tester = new MonitoredItemTest(
                                GetDefaultSession(), 
                                m_testConfiguration, 
                                Report,
                                Report,
                                lastTester);

                            lastTester = tester;
                            break;
                        }
                    }

                    // ignore unknown tests.
                    if (tester == null)
                    {
                        continue;
                    }

                    testers.Add(testcase.Parent, tester);
                }

                try
                {
                    m_testcase = testcase;
                
                    if (!testcase.Enabled)
                    {
                        continue;
                    }

                    if (testcase.Breakpoint)
                    {
                        ReportBreakpoint();
                    }

                    for (int ii = 1; ii <= m_testConfiguration.Iterations; ii++)
                    {
                        m_iterationCount = ii;
                        m_totalIterationCount = (int)m_testConfiguration.Iterations;

                        // check if test stopped.
                        if (m_stopped)
                        {
                            break;
                        }

                        DateTime start = DateTime.UtcNow;
                        thisTestTotalCount++;
                        totalCount++;
                        m_testCount++;
                        
                        Report("", null);

                        ReportWithHeader(
                            "{1}.{2} Test Started Run #{0} at {3:HH:mm:ss} for {4}",
                            ii, 
                            testcase.Parent, 
                            testcase.Name, 
                            DateTime.Now, 
                            endpoint);
                        
                        if (!tester.Run(testcase, ii))
                        {
                            success = false;
                            thisTestFailedCount++;
                            failedCount++;
                            m_failedTestCount++;

                            ReportWithHeader(
                                "{1}.{2} Test Failed Run #{0} ({3}ms) at {4:HH:mm:ss} for {5}",
                                ii, 
                                testcase.Parent, 
                                testcase.Name, 
                                GetElapsedTime(start), 
                                DateTime.Now, 
                                endpoint);
                            
                            continue;
                        }

                        ReportWithHeader(
                            "{1}.{2} Test Success Run #{0} ({3}ms) at {4:HH:mm:ss} for {5}", 
                            ii, 
                            testcase.Parent, 
                            testcase.Name, 
                            GetElapsedTime(start), 
                            DateTime.Now, 
                            endpoint);
                    }
                }
                finally
                {
                    m_testcase = null;
                }
            }
            
            Report("", null);

            if (success)
            {
                if (m_stopped)
                {
                    Report("WARNING: Test halted by User. Total Time = {0}ms.", GetElapsedTime(globalStart));
                }
                else
                {
                    Report("{0} tests completed successfully. Total Time = {1}ms.", thisTestTotalCount, GetElapsedTime(globalStart));
                    SavePerfData(m_defaultEndpoint, GetElapsedTime(globalStart));
                }
            }
            else
            {
                Report("WARNING: {0} tests failed. {1} tests run. Total Time = {2}ms.", thisTestFailedCount, thisTestTotalCount, GetElapsedTime(globalStart));
            }
        }