protected TestSuiteDefinition GetTestSuiteDefinition(ConsoleMethod test)
        {
            TestSuiteDefinition suite = TestSuiteDefinition.FromMethod(test);

            if (!_testSuiteDefinitionLookupByTitle.TryGetValue(suite.Title, out TestSuiteDefinition fromCache))
            {
                GetSuiteDefinitionResponse response = TestReportService.GetSuiteDefinition(suite.Title);
                if (response.Success)
                {
                    _testSuiteDefinitionLookupByTitle.TryAdd(suite.Title, response.SuiteDefinition);
                }
                else
                {
                    Logger.Warning("Failed to define test suite: {0}", response.Message);
                }
            }
            if (fromCache != null)
            {
                suite = fromCache;
            }
            return(suite);
        }
 /// <summary>
 /// Set a TestSuiteExecutionSummary for the specified test creating it if necessary
 /// and populating the internal cache
 /// </summary>
 /// <param name="suite"></param>
 /// <returns></returns>
 protected TestSuiteExecutionSummary SetTestSuiteExecutionSummary(TestSuiteDefinition suite)
 {
     lock (_testSuiteExecutionSummaryLock)
     {
         if (!_testSuiteExecutionLookupByTitle.TryGetValue(suite.Title, out TestSuiteExecutionSummary summary))
         {
             TestSuiteExecutionSummary executionSummary = new TestSuiteExecutionSummary {
                 TestSuiteDefinitionId = suite.Id, StartedTime = DateTime.UtcNow
             };
             SaveTestSuiteExecutionSummaryResponse response = TestReportService.SaveTestSuiteExecutionSummary(executionSummary);
             if (response.Success)
             {
                 summary = response.TestSuiteExecutionSummary;
                 _testSuiteExecutionLookupByTitle.TryAdd(suite.Title, summary);
             }
             else
             {
                 Logger.Warning("Failed to create TestSuiteExecutionSummary: {0}", response.Message);
             }
         }
         return(summary);
     }
 }
        /// <summary>
        /// Get a TestSuiteDefinition for the specified test creating it if necessary
        /// and populating the internal cache
        /// </summary>
        /// <param name="args"></param>
        /// <returns></returns>
        protected TestSuiteDefinition GetTestSuiteDefinition <TTestMethod>(TestEventArgs <TTestMethod> args) where TTestMethod : TestMethod
        {
            ConsoleMethod       test  = args.Test;
            TestSuiteDefinition suite = TestSuiteDefinition.FromTestEventArgs(args);

            if (!_testSuiteDefinitionLookupByTitle.TryGetValue(suite.Title, out TestSuiteDefinition fromCache))
            {
                GetSuiteDefinitionResponse response = TestReportService.GetSuiteDefinition(suite.Title);
                if (response.Success)
                {
                    _testSuiteDefinitionLookupByTitle.TryAdd(suite.Title, response.SuiteDefinition);
                }
                else
                {
                    Logger.Warning("Failed to define test suite: {0}", response.Message);
                }
            }
            if (fromCache != null)
            {
                suite = fromCache;
            }
            return(suite);
        }