Диагностика Test Agent и Test Controller в VSTS2010
Недавно ко мне обратились с проблемой, к которой не возможно было «подступиться». При развертывании в Lab Center виртуальной машины со средой тестирования скрипты pre и post конфигурации, а так же развертывание файлов (Deployment) не отрабатывали ожидаемым образом (Test Settings/Steps/Advanced/Scripts, Setup script to run before the test run is started).
Собственно сценарий был простой –
1) создается билд
2) поднимается чистая виртуальная машина из заготовленного образа
3) Происходит установка билда
4) Копируются дополнительные файлы
5) Запускаются дополнительные скрипты
6) Начинается тестирование
Собственно 4 и 5 пункты не отрабатывали должным образом, и результаты были 0/1 test(s) passed, 0 failed, 1 inconclusive
В Build Log особых деталей не выводилось и собственно, чтобы копать дальше, нужно было каким то образом включить расширенную диагностику (verbose tracing) на тест контроллере и тест-агенте. Ниже пойдет речь о том как это сделать.
И Агент и Контроллер можно сконфигурировать в режиме вывода диагностической информации с разными уровнями (только ошибки, …, детальный уровень). Выводиться эта информация может как в стандартный Apllication Event Log так и в обыкновенные файлы.
Включить эти возможности можно через .config файлы или через реестр. Для каждого из исполняемых файлов в подсистеме тестирования есть соответствующие .config файлы (qtcontroller.exe.config, qtagentservice.exe.config, qtagent.exe.config, qtagent32.exe.config, которые находятся по умолчанию в каталоге C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE).
<appSettings> <!-внутри секции appSettigs!->ачинается тестированиеолчанию в каталоге ие о име вывода диагностической информации на ом включить расширенную диагностику (
<add key="CreateTraceListener" value="yes"/>
<configuration> <!-внутри секции configuration ->
<system.diagnostics>
<switches>
<add name="EqtTraceLevel" value="Verbose" />
</switches>
</system.diagnostics>
Файлы трейсов по умолчанию создаются в том же каталоге где находятся исполняемые файлы агентов и контроллера:
· Контроллер: vsttcontroller.log
· Сервис Агента: vsttagent.log
· Процесс Агента: VSTTAgentProcess.log
Обязательно следует убедиться что каталог в котором будут создаваться файлы логов доступны на запись учетке от лица которой будут запускаться эти сервисы.
Для клиентов так же можно настроить вывод дополнительной диагностической информации (devenv.exe.config, mstest.exe.config, mlm.exe.config):
<configuration> <!-внутри секции appSettigs!->
<system.diagnostics>
<trace autoflush="true" indentsize="4">
<listeners>
<add name="EqtListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\EqtTrace.log" />
</listeners>
</trace>
<switches>
<add name="EqtTraceLevel" value="Verbose" />
</switches>
</system.diagnostics>
Так же, вывод диагностической информации можно настроить через реестр. Выгода при использовании такого подхода заключается в том что достаточно поправить один ключ реестра чтобы включить диагностику сразу нескольких компонент.
[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\EnterpriseTools\QualityTools\Diagnostics]
"EnableTracing"=dword:00000001
"TraceLevel"=dword:00000004
"LogsDirectory"="C:\"
Следует иметь в виду что HKEY_CURRENT_USER должен быть тем пользователем от лица которого запускаются сервисы и клиенты. Уровни трассировки – 0/1/2/3/4 (отключено, ошибки, предупреждения, информация, полный). Путь к каталогу файла лога можно не указывать, тогда файлы логов будут создаваться в каталоге %TEMP%. Имена файлов логов будут иметь вид <ИмяПроцесса>.EqtTrace.Log, например devenv.EqtTrace.log.
Собственно вот таким нехитрым способом можно разобраться в настройках агентов и контроллера если что, то идет не так.