示例#1
0
        private static T GetNodeValue <T>(string settingsXml, string nodeName, Func <XmlReader, T> nodeParser)
        {
            // use XmlReader to avoid loading of the plugins in client code (mainly from VS).
            if (!string.IsNullOrWhiteSpace(settingsXml))
            {
                using (var stringReader = new StringReader(settingsXml))
                {
                    XmlReader reader = XmlReader.Create(stringReader, ReaderSettings);

                    // read to the fist child
                    XmlReaderUtilities.ReadToRootNode(reader);
                    reader.ReadToNextElement();

                    // Read till we reach nodeName element or reach EOF
                    while (!string.Equals(reader.Name, nodeName, StringComparison.OrdinalIgnoreCase)
                           &&
                           !reader.EOF)
                    {
                        reader.SkipToNextElement();
                    }

                    if (!reader.EOF)
                    {
                        // read nodeName element.
                        return(nodeParser(reader));
                    }
                }
            }

            return(default(T));
        }
        public static DataCollectionRunSettings GetInProcDataCollectionRunSettings(string runSettingsXml)
        {
            // use XmlReader to avoid loading of the plugins in client code (mainly from VS).
            if (!string.IsNullOrWhiteSpace(runSettingsXml))
            {
                runSettingsXml = runSettingsXml.Trim();
                using (StringReader stringReader1 = new StringReader(runSettingsXml))
                {
                    XmlReader reader = XmlReader.Create(stringReader1, ReaderSettings);

                    // read to the fist child
                    XmlReaderUtilities.ReadToRootNode(reader);
                    reader.ReadToNextElement();

                    // Read till we reach In Proc IDC element or reach EOF
                    while (!string.Equals(reader.Name, Constants.InProcDataCollectionRunSettingsName)
                           &&
                           !reader.EOF)
                    {
                        reader.SkipToNextElement();
                    }

                    // If reached EOF => IDC element not there
                    if (reader.EOF)
                    {
                        return(null);
                    }

                    // Reached here => In Proc IDC element present.
                    return(DataCollectionRunSettings.FromXml(reader, Constants.InProcDataCollectionRunSettingsName, Constants.InProcDataCollectorsSettingName, Constants.InProcDataCollectorSettingName));
                }
            }

            return(null);
        }
示例#3
0
        /// <summary>
        /// Gets the adapter specific settings from the xml.
        /// </summary>
        /// <param name="runSettingsXml"> The xml with the settings passed from the test platform. </param>
        /// <param name="settingName"> The name of the adapter settings to fetch - Its either MSTest or MSTestV2 </param>
        /// <returns> The settings if found. Null otherwise. </returns>
        internal static MSTestSettings GetSettings(string runSettingsXml, string settingName)
        {
            if (string.IsNullOrWhiteSpace(runSettingsXml))
            {
                return(null);
            }

            using (var stringReader = new StringReader(runSettingsXml))
            {
                XmlReader reader = XmlReader.Create(stringReader, XmlRunSettingsUtilities.ReaderSettings);

                // read to the fist child
                XmlReaderUtilities.ReadToRootNode(reader);
                reader.ReadToNextElement();

                // Read till we reach nodeName element or reach EOF
                while (!string.Equals(reader.Name, settingName, StringComparison.OrdinalIgnoreCase)
                       &&
                       !reader.EOF)
                {
                    reader.SkipToNextElement();
                }

                if (!reader.EOF)
                {
                    // read nodeName element.
                    return(ToSettings(reader.ReadSubtree()));
                }
            }

            return(null);
        }
示例#4
0
        public I3DModel ParseFile(Entity root, string file)
        {
            if (!File.Exists(file))
            {
                throw new FileNotFoundException("File not found.", file);
            }

            if (Path.GetExtension(file) != ".i3d")
            {
                throw new Exception("File not I3D format.");
            }

            I3DModel output = new I3DModel {
                Path = Path.GetDirectoryName(file)
            };

            string contents = File.ReadAllText(file);

            int start = Environment.TickCount;

            using (XmlReader xml = XmlReader.Create(new StringReader(contents)))
            {
                xml.ReadToFollowing("i3D"); //Skip all the initial shit

                output.Name = xml.GetAttribute("name");
                root.name   = xml.GetAttribute("name");
                root.Type   = Entity.ShapeType.i3D;

                while (xml.ReadToNextElement())
                {
                    switch (xml.LocalName)
                    {
                    case "Files":
                        ParseFile_Files(ref output, xml);
                        Debug.Log("Parsing Files: " + PrintTime(ref start));
                        break;

                    case "Materials":
                        ParseFile_Materials(ref output, xml);
                        Debug.Log("Parsing Materials: " + PrintTime(ref start));
                        break;

                    case "Shapes":
                        ParseFile_Shapes(ref output, xml);
                        Debug.Log("Parsing Shapes: " + PrintTime(ref start));
                        break;

                    case "Scene":
                        ParseFile_SceneShapes(ref output, root, xml);
                        Debug.Log("Parsing Scenes: " + PrintTime(ref start));
                        break;
                    }
                }
            }

            return(output);
        }
示例#5
0
        /// <summary>
        /// Skips the current element and moves to the next Element in the document.
        /// </summary>
        /// <param name="reader">Reader to move to the next element.</param>
        public static void SkipToNextElement(this XmlReader reader)
        {
            ValidateArg.NotNull <XmlReader>(reader, "reader");
            reader.Skip();

            if (reader.NodeType != XmlNodeType.Element)
            {
                reader.ReadToNextElement();
            }
        }
        /// <summary>
        /// Convert the parameter xml to TestSettings
        /// </summary>
        /// <param name="reader">Reader to load the settings from.</param>
        /// <returns>An instance of the <see cref="MSTestSettings"/> class</returns>
        private static RunConfigurationSettings ToSettings(XmlReader reader)
        {
            ValidateArg.NotNull <XmlReader>(reader, "reader");

            // Expected format of the xml is: -
            //
            // <Runsettings>
            // <RunConfiguration>
            // <CollectSourceInformation>true</CollectSourceInformation>
            // </RunConfiguration>
            // </Runsettings>
            RunConfigurationSettings settings = new RunConfigurationSettings();

            // Read the first element in the section
            reader.ReadToNextElement();

            if (!reader.IsEmptyElement)
            {
                reader.Read();

                while (reader.NodeType == XmlNodeType.Element)
                {
                    bool   result;
                    string elementName = reader.Name.ToUpperInvariant();
                    switch (elementName)
                    {
                    case "COLLECTSOURCEINFORMATION":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.CollectSourceInformation = result;
                            PlatformServiceProvider.Instance.AdapterTraceLogger.LogInfo(
                                "CollectSourceInformation value Found : {0} ",
                                result);
                        }

                        break;
                    }

                    default:
                    {
                        reader.SkipToNextElement();
                        break;
                    }
                    }
                }
            }

            return(settings);
        }
示例#7
0
        /// <summary>
        /// Reads to the root node of the run settings and verifies that it is a "RunSettings" node.
        /// </summary>
        /// <param name="path">Path to the file.</param>
        /// <param name="reader">XmlReader for the file.</param>
        public static void ReadToRootNode(XmlReader reader)
        {
            ValidateArg.NotNull <XmlReader>(reader, "reader");

            // Read to the root node.
            reader.ReadToNextElement();

            // Verify that it is a "RunSettings" node.
            if (reader.Name != RunSettingsRootNodeName)
            {
                throw new SettingsException(
                          string.Format(
                              CultureInfo.CurrentCulture,
                              Resources.Resources.InvalidRunSettingsRootNode));
            }
        }
        private static T GetNodeValue <T>(string settingsXml, string nodeName, Func <XmlReader, T> nodeParser)
        {
            // use XmlReader to avoid loading of the plugins in client code (mainly from VS).
            if (!string.IsNullOrWhiteSpace(settingsXml))
            {
                try
                {
                    using (var stringReader = new StringReader(settingsXml))
                    {
                        XmlReader reader = XmlReader.Create(stringReader, ReaderSettings);

                        // read to the fist child
                        XmlReaderUtilities.ReadToRootNode(reader);
                        reader.ReadToNextElement();

                        // Read till we reach nodeName element or reach EOF
                        while (!string.Equals(reader.Name, nodeName, StringComparison.OrdinalIgnoreCase)
                               &&
                               !reader.EOF)
                        {
                            reader.SkipToNextElement();
                        }

                        if (!reader.EOF)
                        {
                            // read nodeName element.
                            return(nodeParser(reader));
                        }
                    }
                }
                catch (XmlException ex)
                {
                    throw new SettingsException(
                              string.Format(CultureInfo.CurrentCulture, "{0} {1}", Resources.CommonResources.MalformedRunSettingsFile, ex.Message),
                              ex);
                }
            }

            return(default(T));
        }
示例#9
0
        /// <summary>
        /// Reads test run settings from XmlReader
        /// </summary>
        /// <param name="reader"></param>
        private void ReadRunSettings(XmlReader reader)
        {
            // If settings have already been loaded, throw.
            if (this.isSettingsLoaded)
            {
                throw new InvalidOperationException(CommonResources.RunSettingsAlreadyLoaded);
            }

            this.isSettingsLoaded = true;

            try
            {
                // Read to the root element.
                XmlReaderUtilities.ReadToRootNode(reader);

                // Read to the first section.
                reader.ReadToNextElement();

                // Lookup the settings provider for each of the elements.
                var settingsExtensionManager = SettingsProviderExtensionManager.Create();
                while (!reader.EOF)
                {
                    this.LoadSection(reader, settingsExtensionManager);
                    reader.SkipToNextElement();
                }
            }
            catch (SettingsException)
            {
                throw;
            }
            catch (Exception e)
            {
                throw new SettingsException(
                          string.Format(
                              CultureInfo.CurrentCulture,
                              CommonResources.RunSettingsParseError,
                              e.Message),
                          e);
            }
        }
示例#10
0
        private static ApiErrorException ParseError(XmlReader xmlReader)
        {
            var error = new ApiErrorException();

            xmlReader.ReadToNextElement();

            while (!xmlReader.EOF)
            {
                if (xmlReader.NodeType == XmlNodeType.Element)
                {
                    switch (xmlReader.Name)
                    {
                    case "message":
                        error.ErrorMessage = xmlReader.ReadElementContentAsString();
                        break;

                    case "stack":
                        error.ErrorStackTrace = xmlReader.ReadElementContentAsString();
                        break;

                    case "type":
                        error.ErrorType = xmlReader.ReadElementContentAsString();
                        break;

                    default:
                        xmlReader.Skip();
                        break;
                    }
                }
                else
                {
                    xmlReader.Read();
                }
            }

            return(error);
        }
示例#11
0
        private static ApiErrorException ParseError(XmlReader xmlReader)
        {
            var error = new ApiErrorException();

            xmlReader.ReadToNextElement();

            while (!xmlReader.EOF)
            {
                if (xmlReader.NodeType == XmlNodeType.Element)
                {
                    switch (xmlReader.Name)
                    {
                        case "message":
                            error.ErrorMessage = xmlReader.ReadElementContentAsString();
                            break;

                        case "stack":
                            error.ErrorStackTrace = xmlReader.ReadElementContentAsString();
                            break;

                        case "type":
                            error.ErrorType = xmlReader.ReadElementContentAsString();
                            break;

                        default:
                            xmlReader.Skip();
                            break;
                    }
                }
                else
                {
                    xmlReader.Read();
                }
            }

            return error;
        }
示例#12
0
        private void ProcessDisplayFolder(XmlReader rdr, ADOTabularTable table, IADOTabularFolderReference parent)
        {
            var    folderReference = "";
            string folderCaption   = null;
            string objRef          = "";

            while (!(rdr.NodeType == XmlNodeType.EndElement &&
                     rdr.LocalName == "DisplayFolder"))
            {
                if (rdr.NodeType == XmlNodeType.Element &&
                    rdr.LocalName == "DisplayFolder")
                {
                    while (rdr.MoveToNextAttribute())
                    {
                        switch (rdr.LocalName)
                        {
                        case "Name":
                            folderReference = rdr.Value;
                            break;

                        case "Caption":
                            folderCaption = rdr.Value;
                            break;
                        }
                    }
                    // create folder and add to parent's folders
                    IADOTabularFolderReference folder = new ADOTabularDisplayFolder(folderCaption, folderReference);
                    parent.FolderItems.Add(folder);

                    rdr.ReadToNextElement();

                    // recurse down to child items
                    ProcessDisplayFolder(rdr, table, folder);
                    rdr.Read();
                    //rdr.ReadToNextElement(); // read the end element
                }

                // Reset DisplayFolder local variables
                folderCaption   = null;
                folderReference = String.Empty;

                if ((rdr.NodeType == XmlNodeType.Element) &&
                    (rdr.LocalName == "PropertyRef" ||
                     rdr.LocalName == "HierarchyRef"
                    ))
                {
                    while (rdr.MoveToNextAttribute())
                    {
                        switch (rdr.LocalName)
                        {
                        case "Name":
                            objRef = rdr.Value;
                            break;
                        }
                    }

                    // create reference object
                    IADOTabularObjectReference reference = new ADOTabularObjectReference("", objRef);
                    parent.FolderItems.Add(reference);
                    var column = table.Columns.GetByPropertyRef(objRef);
                    if (column != null)
                    {
                        column.IsInDisplayFolder = true;
                    }
                    objRef = "";

                    rdr.Read();
                }

                if ((rdr.LocalName != "DisplayFolder" && rdr.LocalName != "PropertyRef" && rdr.LocalName != "DisplaFolders"))

                {
                    if (rdr.NodeType != XmlNodeType.Element && rdr.NodeType != XmlNodeType.EndElement)
                    {
                        rdr.ReadToNextElement();
                    }
                    //else
                    //    rdr.Read();
                }

                if (rdr.NodeType == XmlNodeType.EndElement && rdr.LocalName == "DisplayFolders")
                {
                    rdr.Read();
                    break;
                }

                //rdr.Read();
            }
        }
示例#13
0
        /// <summary>
        /// Convert the parameter xml to TestSettings
        /// </summary>
        /// <param name="reader">Reader to load the settings from.</param>
        /// <returns>An instance of the <see cref="MSTestSettings"/> class</returns>
        private static MSTestSettings ToSettings(XmlReader reader)
        {
            ValidateArg.NotNull <XmlReader>(reader, "reader");

            // Expected format of the xml is: -
            //
            // <MSTestV2>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            //     <MapInconclusiveToFailed>false</MapInconclusiveToFailed>
            //     <MapNotRunnableToFailed>false</MapNotRunnableToFailed>
            //     <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies>
            //     <TestTimeout>5000</TestTimeout>
            //     <TreatClassAndAssemblyCleanupWarningsAsErrors>false</TreatClassAndAssemblyCleanupWarningsAsErrors>
            //     <Parallelize>
            //        <Workers>4</Workers>
            //        <Scope>TestClass</Scope>
            //     </Parallelize>
            // </MSTestV2>
            //
            // (or)
            //
            // <MSTest>
            //     <ForcedLegacyMode>true</ForcedLegacyMode>
            //     <SettingsFile>..\..\Local.testsettings</SettingsFile>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            // </MSTest>
            MSTestSettings settings = new MSTestSettings();

            // Read the first element in the section which is either "MSTest"/"MSTestV2"
            reader.ReadToNextElement();

            if (!reader.IsEmptyElement)
            {
                reader.Read();

                while (reader.NodeType == XmlNodeType.Element)
                {
                    bool   result;
                    string elementName = reader.Name.ToUpperInvariant();
                    switch (elementName)
                    {
                    case "CAPTURETRACEOUTPUT":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.CaptureDebugTraces = result;
                        }

                        break;
                    }

                    case "ENABLEBASECLASSTESTMETHODSFROMOTHERASSEMBLIES":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.EnableBaseClassTestMethodsFromOtherAssemblies = result;
                        }

                        break;
                    }

                    case "CLASSCLEANUPLIFECYCLE":
                    {
                        var value = reader.ReadInnerXml();
                        if (TryParseEnum(value, out ClassCleanupBehavior lifecycle))
                        {
                            settings.ClassCleanupLifecycle = lifecycle;
                        }
                        else
                        {
                            throw new AdapterSettingsException(
                                      string.Format(
                                          CultureInfo.CurrentCulture,
                                          Resource.InvalidClassCleanupLifecycleValue,
                                          value,
                                          string.Join(", ", Enum.GetNames(typeof(ClassCleanupBehavior)))));
                        }

                        break;
                    }

                    case "FORCEDLEGACYMODE":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.ForcedLegacyMode = result;
                        }

                        break;
                    }

                    case "MAPINCONCLUSIVETOFAILED":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.MapInconclusiveToFailed = result;
                        }

                        break;
                    }

                    case "MAPNOTRUNNABLETOFAILED":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.MapNotRunnableToFailed = result;
                        }

                        break;
                    }

                    case "SETTINGSFILE":
                    {
                        string fileName = reader.ReadInnerXml();

                        if (!string.IsNullOrEmpty(fileName))
                        {
                            settings.TestSettingsFile = fileName;
                        }

                        break;
                    }

                    case "PARALLELIZE":
                    {
                        SetParallelSettings(reader.ReadSubtree(), settings);
                        reader.SkipToNextElement();

                        break;
                    }

                    case "TESTTIMEOUT":
                    {
                        if (int.TryParse(reader.ReadInnerXml(), out int testTimeout) && testTimeout > 0)
                        {
                            settings.TestTimeout = testTimeout;
                        }

                        break;
                    }

                    case "TREATCLASSANDASSEMBLYCLEANUPWARNINGSASERRORS":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.TreatClassAndAssemblyCleanupWarningsAsErrors = result;
                        }

                        break;
                    }

                    default:
                    {
                        PlatformServiceProvider.Instance.SettingsProvider.Load(reader.ReadSubtree());
                        reader.SkipToNextElement();

                        break;
                    }
                    }
                }
            }

            return(settings);
        }
示例#14
0
        /// <summary>
        /// Convert the parameter xml to TestSettings
        /// </summary>
        /// <param name="reader">Reader to load the settings from.</param>
        /// <returns>An instance of the <see cref="MSTestSettings"/> class</returns>
        private static MSTestSettings ToSettings(XmlReader reader)
        {
            ValidateArg.NotNull <XmlReader>(reader, "reader");

            // Expected format of the xml is: -
            //
            // <MSTestV2>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            //     <MapInconclusiveToFailed>false</MapInconclusiveToFailed>
            //     <EnableBaseClassTestMethodsFromOtherAssemblies>false</EnableBaseClassTestMethodsFromOtherAssemblies>
            //     <Parallelize>
            //        <Workers>4</Workers>
            //        <Scope>TestClass</Scope>
            //     </Parallelize>
            // </MSTestV2>
            //
            // (or)
            //
            // <MSTest>
            //     <ForcedLegacyMode>true</ForcedLegacyMode>
            //     <SettingsFile>..\..\Local.testsettings</SettingsFile>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            // </MSTest>
            MSTestSettings settings = new MSTestSettings();

            // Read the first element in the section which is either "MSTest"/"MSTestV2"
            reader.ReadToNextElement();

            if (!reader.IsEmptyElement)
            {
                reader.Read();

                while (reader.NodeType == XmlNodeType.Element)
                {
                    bool   result;
                    string elementName = reader.Name.ToUpperInvariant();
                    switch (elementName)
                    {
                    case "CAPTURETRACEOUTPUT":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.CaptureDebugTraces = result;
                        }

                        break;
                    }

                    case "ENABLEBASECLASSTESTMETHODSFROMOTHERASSEMBLIES":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.EnableBaseClassTestMethodsFromOtherAssemblies = result;
                        }

                        break;
                    }

                    case "FORCEDLEGACYMODE":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.ForcedLegacyMode = result;
                        }

                        break;
                    }

                    case "MAPINCONCLUSIVETOFAILED":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.MapInconclusiveToFailed = result;
                        }

                        break;
                    }

                    case "SETTINGSFILE":
                    {
                        string fileName = reader.ReadInnerXml();

                        if (!string.IsNullOrEmpty(fileName))
                        {
                            settings.TestSettingsFile = fileName;
                        }

                        break;
                    }

                    case "PARALLELIZE":
                    {
                        SetParallelSettings(reader.ReadSubtree(), settings);
                        reader.SkipToNextElement();

                        break;
                    }

                    default:
                    {
                        PlatformServiceProvider.Instance.SettingsProvider.Load(reader.ReadSubtree());
                        reader.SkipToNextElement();

                        break;
                    }
                    }
                }
            }

            return(settings);
        }
示例#15
0
        /// <summary>
        /// Convert the parameter xml to TestSettings
        /// </summary>
        /// <param name="reader">Reader to load the settings from.</param>
        /// <returns>An instance of the <see cref="MSTestSettings"/> class</returns>
        private static MSTestSettings ToSettings(XmlReader reader)
        {
            ValidateArg.NotNull <XmlReader>(reader, "reader");

            // Expected format of the xml is: -
            //
            // <MSTestV2>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            //     <MapInconclusiveToFailed>false</MapInconclusiveToFailed>
            // </MSTestV2>
            //
            // (or)
            //
            // <MSTest>
            //     <ForcedLegacyMode>true</ForcedLegacyMode>
            //     <SettingsFile>..\..\Local.testsettings</SettingsFile>
            //     <CaptureTraceOutput>true</CaptureTraceOutput>
            // </MSTest>
            MSTestSettings settings = new MSTestSettings();

            // Read the first element in the section which is either "MSTest"/"MSTestV2"
            reader.ReadToNextElement();

            if (!reader.IsEmptyElement)
            {
                reader.Read();

                while (reader.NodeType == XmlNodeType.Element)
                {
                    bool   result;
                    string elementName = reader.Name.ToUpperInvariant();
                    switch (elementName)
                    {
                    case "MAPINCONCLUSIVETOFAILED":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.MapInconclusiveToFailed = result;
                        }

                        break;
                    }

                    case "FORCEDLEGACYMODE":
                    {
                        if (bool.TryParse(reader.ReadInnerXml(), out result))
                        {
                            settings.ForcedLegacyMode = result;
                        }

                        break;
                    }

                    case "SETTINGSFILE":
                    {
                        string fileName = reader.ReadInnerXml();

                        if (!string.IsNullOrEmpty(fileName))
                        {
                            settings.TestSettingsFile = fileName;
                        }

                        break;
                    }

                    default:
                    {
                        PlatformServiceProvider.Instance.SettingsProvider.Load(reader.ReadSubtree());
                        reader.SkipToNextElement();

                        break;
                    }
                    }
                }
            }

            return(settings);
        }