/// <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); }
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; }); }