/// <summary>
        /// Reads the configuration setup.
        /// </summary>
        /// <param name="project">The project.</param>
        /// <param name="nUnitParameters">The n unit parameters.</param>
        /// <returns></returns>
        public DistributedConfigurationSetup ReadConfigurationSetup(TestProject project, NUnitParameters nUnitParameters)
        {
            var result = new DistributedConfigurationSetup();

            var distributedConfigurationFileNames = GetDistributedConfigurationFileNames(project, nUnitParameters);

            foreach (var distributedConfigurationFileName in distributedConfigurationFileNames)
            {
                if (string.IsNullOrEmpty(distributedConfigurationFileName))
                    continue;
                FillSetupInstance(distributedConfigurationFileName, result);
            }
            return result;
        }
        internal void FillSetupInstance(XDocument doc, DistributedConfigurationSetup result)
        {
            var nDistribUnitComments = doc.Nodes().OfType<XComment>();

            foreach (var comment in nDistribUnitComments)
            {
                var match = TypeIdentifier.Match(comment.Value);
                if (!match.Success)
                    continue;

                try
                {
                    var selector = match.Groups["selector"].Value;
                    var jsonObject = new JavaScriptSerializer().DeserializeObject(match.Groups["object"].Value) as Dictionary<string, object>;

                    if (jsonObject == null)
                        continue;

                    if ("Variable".Equals(selector))
                    {
                        var name = jsonObject["Name"] as string;
                        var properties = jsonObject["TypeArguments"] as Dictionary<string, object>;

                        DistributedConfigurationVariable variable = null;
                        if ("Sequence".Equals(jsonObject["Type"]))
                        {
                            variable = new SequenceDistributedConfigurationVariable(name);
                        }

                        if (variable != null)
                        {
                            InitializePropertiesFromJson(variable, properties);
                            result.Variables.Add(variable);
                        }
                    }
                }
                catch
                {
                    // Just ignore any errors while configuration reading
                    continue;
                }
            }
        }
 private void FillSetupInstance(string distributedConfigName, DistributedConfigurationSetup result)
 {
     var doc = XDocument.Load(distributedConfigName);
     FillSetupInstance(doc, result);
 }
Exemplo n.º 4
0
        private DistributedConfigurationSubstitutions GetConfigurationValues(DistributedConfigurationSetup configurationSetup,
                                                                      AgentMetadata agentToRun,
                                                                      TestUnitWithMetadata testToRun)
        {
            //BUG: add dependency on test run!
            return configurations.GetOrAdd(agentToRun.Name,
                                    key =>
                                        {
                                            var distributedConfigurationValues = new DistributedConfigurationSubstitutions();

                                            foreach (var variable in configurationSetup.Variables)
                                            {
                                                distributedConfigurationValues.Variables.Add(
                                                    new DistributedConfigurationVariablesValue(variable.Name, variable.GetNextValue()));
                                            }

                                            return distributedConfigurationValues;
                                        });
        }