/// <summary>
        /// gather all the necessary information prior to
        /// reporting the results to testlink.
        /// </summary>
        /// <param name="result"></param>
        /// <param name="tlfa"></param>
        private void reportResult(TestResult result, Meyn.TestLink.TestLinkFixtureAttribute tlfa)
        {
            if (!adaptor.UpdateConnectionData(GetConnectionData(tlfa)))
            {
                log.Error("Connection error!");
                return;
            }
            if (!adaptor.UpdateProjectData(tlfa.ProjectName, tlfa.TestPlan, tlfa.PlatformName, tlfa.Buildname))
            {
                log.Error("Error setting project data");
            }
            try
            {
                string TestName   = result.Name;
                string MethodName = result.Test.MethodName;
                if (!TestName.Equals(MethodName))
                {
                    /* In case of parameterized tests, result.Name only contains the name of the parameter. So add the name of the actual test (=methodname) also */
                    TestName = MethodName + "." + TestName;
                }

                string TestDescription = result.Description;
                if (TestDescription == null)
                {
                    TestDescription = "";
                }

                if (adaptor.ConnectionValid == false)
                {
                    log.WarnFormat(string.Format("Failed to export tesult for testcase {0}", result.Name));
                    return;
                }

                try
                {
                    log.Error(string.Format("Exporting result for testcase {0}", result.Name));
                    sendResultToTestlink(result, tlfa, TestName);
                }
                catch (TestLinkException tlex)
                {
                    log.Error(string.Format("Failed to export testcase '{0}'. {1}", TestName, tlex.Message));
                }
            }
            catch (TestLinkException tlex)
            {
                log.Error(tlex.Message, tlex);
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
            }
        }
        /// <summary>
        /// gather all the necessary information prior to
        /// reporting the results to testlink.
        /// </summary>
        /// <param name="result"></param>
        /// <param name="tlfa"></param>
        private void reportResult(TestResult result, Meyn.TestLink.TestLinkFixtureAttribute tlfa)
        {
            adaptor.ConnectionData = tlfa; // update the connection and retrieve  key base data from testlink

            try
            {
                string TestName = result.Name;

                if (adaptor.ConnectionValid == false)
                {
                    log.Warning(string.Format("Failed to export tesult for testcase {0}", result.Name));
                    Console.WriteLine("Can't export results because invalid connection");
                    return;
                }

                try
                {
                    int TCaseId = adaptor.GetTestCaseId(TestName);

                    if (TCaseId > 0)
                    {
                        sendResultToTestlink(result, tlfa, TCaseId);
                        //Console.WriteLine("exported testcase '{0}'. ", TestName);
                    }
                }
                catch (TestLinkException tlex)
                {
                    Console.WriteLine("Failed to export testcase '{0}'. {1}", TestName, tlex.Message);
                    log.Error(string.Format("Failed to export testcase '{0}'. {1}", TestName, tlex.Message));
                }
            }
            catch (TestLinkException tlex)
            {
                log.Error(tlex.Message, tlex);
            }
            catch (Exception ex)
            {
                log.Error(ex.Message, ex);
            }
        }
        /// <summary>
        /// parse results and sub results. If it is a test case then try to record it in testlink
        /// </summary>
        /// <param name="result"></param>
        private void processResults(TestResult result)
        {
            log.DebugFormat("Process results for '{0}'", result.Name);
            if (IsDllPath(result.Name))
            {
                extractTestFixtureAttribute(result.Name);
            }

            if (result.HasResults)
            {
                foreach (TestResult subResult in result.Results)
                {
                    log.DebugFormat("Going recursive into '{0}'", subResult.Name);
                    processResults(subResult);
                }
            }
            else
            {
                string testFixtureName = extractTestFixture(result.FullName);
                log.Debug(string.Format("Processing results for test {0} in fixture: {1}", result.Name, testFixtureName));
                if (fixtures.ContainsKey(testFixtureName))
                {
                    Meyn.TestLink.TestLinkFixtureAttribute tlfa = fixtures[testFixtureName];

                    if (tlfa.TestSuite == null)
                    {
                        /* if testuite is not defined in default config file, take the Fullname as Testsuite name */
                        tlfa.TestSuite = extractTestFixture(result.FullName);
                    }
                    if (tlfa.ExportEnabled)
                    {
                        reportResult(result, tlfa);
                    }
                    else
                    {
                        log.Warn("Export skipped as enable parameter is set to false or missing");
                    }
                }
            }
        }
        /// <summary>
        /// parse results and sub results. If it is a test case then try to record it in testlink
        /// </summary>
        /// <param name="result"></param>
        private void processResults(TestResult result)
        {
            if (IsDllPath(result.Name))
            {
                extractTestFixtureAttribute(result.Name);
            }

            if (result.HasResults)
            {
                foreach (TestResult subResult in result.Results)
                {
                    processResults(subResult);
                }
            }
            else
            {
                string testFixtureName = extractTestFixture(result.FullName);
                log.Debug(string.Format("Processing results for test {0} in fixture: {1}", result.Name, testFixtureName));
                if (fixtures.ContainsKey(testFixtureName))
                {
                    Meyn.TestLink.TestLinkFixtureAttribute tlfa = fixtures[testFixtureName];
                    //tlfa.ConsiderConfigFile(); // ensure that a config file is read in
                    reportResult(result, tlfa);
                }
                else
                {
                    if (lastTestFixtureName != testFixtureName) // do this warning once per test fixture
                    {
                        log.Warning(string.Format("Test fixture '{0}' has no TestLinkFixture attribute",
                                                  testFixtureName));
                        lastTestFixtureName = testFixtureName;
                    }
                    log.Warning(string.Format("Failed to record test case '{0}'", result.Name));
                }
            }
        }