Диагностика 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.

Собственно вот таким нехитрым способом можно разобраться в настройках агентов и контроллера если что, то идет не так.