Как правильно настроить параметры контекста нагрузки VSTS для собственных агентов Azure
Недавно перешел от использования AWS к Azure для размещения наших агентов нагрузочного тестирования, что позволило перейти к полному использованию VSTS.
Было описано, что на данный момент, чтобы получить файл нагрузочного теста, работающий с VSTS и использующий наши собственные виртуальные машины для тестирования, нам нужно предоставить два параметра контекста, UseStaticLoadAgents и StaticAgentsGroupName в каждом файле loadtest.
Наше решение для нагрузочного тестирования становится очень большим, и у нас есть несколько файлов loadtest, где мы должны каждый раз устанавливать эти два значения. Это приводит нас к ситуации, когда, например, если бы мы изменили имя группы агентов, нам пришлось бы обновлять каждый отдельный файл нагрузочного теста новой информацией.
Я ищу способ централизовать это, пока Microsoft не внедрит более хороший способ. The idea was to use a load test plugin, to add these context parameters with the plugin drawing the needed values from a centralised config file.
However, it seems that none of the hooks in the load test plugin or simply using the initialise method to manually set these values is working. Likely because they are set after full initialisation.
Has anyone got a nice, code focused solution to manage this and stop us depending on adding brittle values in the editor? Or even gotten the above approach to work?
1 ответ
Файл loadtest является файлом XML, поэтому вы можете обновлять его программно, например:
string filePath = @"XXX\LoadTest1.loadtest";
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("ns", "http://microsoft.com/schemas/VisualStudio/TeamTest/2010");
XmlNode root = doc.DocumentElement;
XmlNode nodeParameters = root.SelectSingleNode("//ns:RunConfigurations/ns:RunConfiguration[@Name='Run Settings1']/ns:ContextParameters", nsmgr);
if(nodeParameters!=null)
{
//nodeParameters.SelectSingleNode("//ns:ContextParameter[@Name='UseStaticLoadAgents']").Value = "agent1";
foreach (XmlNode n in nodeParameters.ChildNodes)
{
switch (n.Attributes["Name"].Value)
{
case "Parameter1":
n.Attributes["Value"].Value = "testUpdate";
break;
case "UseStaticLoadAgents":
n.Attributes["Value"].Value = "agent1";
break;
case "StaticAgentsGroupName":
n.Attributes["Value"].Value = "group1";
break;
}
}
}
doc.Save(filePath);