Агент тестирования TFS2015 прерван — сценарий PowerShell завершен с ошибками

Я запускаю ночную сборку TFS, которая за последние несколько дней не смогла завершить все свои тесты. Через несколько часов происходит сбой с сообщением «Тестовый запуск прерван». До этого тесты всегда выполнялись успешно, и в систему, которая запускает эти тесты, не вносилось никаких серьезных (или даже незначительных) изменений.

Информация:

  • Два запуска MStest в сборке (модульные тесты)
  • Тайм-аут установлен на 20 часов
  • Работает ок. 15 часов до отказа
  • Тесты настроены на продолжение в случае сбоя

Когда я смотрю в журнале TFS последний запуск, он показывает следующее (2017-04-11T06:42:47.5500707Z):

[предупреждение]DistributedTests: тестовый запуск прерван. Подробная информация о журналах выполнения. [предупреждение]DistributedTests: создан новый тестовый запуск.
[предупреждение]Тестовый запуск поставлен в очередь для службы сборки коллекции проектов
[предупреждение]DistributedTests: начато обнаружение тестов.
[предупреждение]DistributedTests: обнаружение тестовых прогонов завершено . Идентификатор запуска теста: 533
[предупреждение]DistributedTests: обнаружено 290 тестовых наборов.
[предупреждение]DistributedTests: выполнение теста запущено. Идентификатор тестового запуска: 533
[предупреждение]DistributedTests: время ожидания тестового запуска истекло. Идентификатор тестового запуска: 533
[предупреждение]DistributedTests: тестовый запуск прерван. Идентификатор тестового запуска: 533
[ошибка]Тестовый запуск был прерван из-за сбоя задачи.

Когда я смотрю журнал выполнения (worker_20170410-234426-utc_864.log), я вижу:

06:42:47.659516 BaseLogger.LogConsoleMessage(scope.JobId = 7ced7f31-e360-47f3-b334-ef20faeaf000, message = ##[error]Тестовый запуск был прерван, задача не выполнена.) 06:42:47.659516 Microsoft.TeamFoundation. DistributedTask.Agent.Common.AgentExecutionTerminationException: сценарий PowerShell завершен с ошибками. в Microsoft.TeamFoundation.DistributedTask.Handlers.PowerShellHandler.Execute(контекст ITaskContext, CancellationToken CancellationToken) в Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.RunTask(контекст ITaskContext, задача TaskWrapper, CancellationTokenSource tokenSource)

В журнале тестирования, я не вижу никаких ошибок в VS, просто предупреждение о невозможности подключения (часто такое вижу):

W, 2060, 5, 10/04/2017, 16:26:03.595, XXXTESTING\QTController.exe, Не удалось выполнить проверку LoadTestResultConnectString: при установлении соединения с SQL Server произошла ошибка, связанная с сетью или экземпляром. Сервер не найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен на разрешение удаленных подключений. (поставщик: Сетевые интерфейсы SQL, ошибка: 26 — Ошибка при обнаружении указанного сервера/экземпляра)

Я также вижу ошибку в журнале событий приложений одновременно:

Не удается найти описание события с идентификатором 0 из исходного приложения. Либо компонент, вызывающий это событие, не установлен на вашем локальном компьютере, либо установка повреждена. Вы можете установить или восстановить компонент на локальном компьютере.

Если событие возникло на другом компьютере, отображаемая информация должна была быть сохранена вместе с событием.

К мероприятию была приложена следующая информация:

Исключение обработчика ошибок: System.ServiceModel.CommunicationException: Произошла ошибка чтения из канала: канал был завершен. (109, 0x6d). ---> System.IO.IOException: операция чтения не удалась, см. внутреннее исключение. ---> System.ServiceModel.CommunicationException: Произошла ошибка чтения из канала: канал был завершен. (109, 0x6d). ---> System.IO.PipeException: Произошла ошибка чтения из канала: канал был завершен. (109, 0x6d).....

ресурс сообщения присутствует, но сообщение не найдено в таблице строк/сообщений

Проблема в том, что я действительно не знаю, как интерпретировать эти сообщения, в каждом журнале просто говорится, что «тестовый запуск был прерван, задача не удалась», я даже не уверен, что проблема с powershell была причиной этого. Я также не уверен, что ошибка, выданная в журнале приложений, связана с этим, хотя она возникла точно в то же время, когда произошел сбой запуска.

Также трудно исследовать эту проблему, когда вы действительно не знаете, что вызывает сбой агента тестирования. Есть сообщения, связанные с VS и к тестовому агенту TFS, но они не вызывают меня как связанные вопросы, и, конечно же, есть несколько бесполезный пост о /visual-studio-team-services-build-error-?forum=TFService" rel="nofollow noreferrer">сообщение Powershell.

Кто-нибудь видел такого рода проблемы раньше? Я не думаю, что за последние несколько дней на моем сервере сборки что-то изменилось (возможно, обновления...), что, по вашему мнению, может вызвать такую ​​​​проблему?


person David Rogers    schedule 11.04.2017    source источник
comment
В определении сборки vnext установите для переменной system.debug значение true (по умолчанию — false) и повторите попытку? Затем проверьте, есть ли какое-то подробное сообщение журнала о вашей ошибке.   -  person Tingting0929    schedule 12.04.2017
comment
Нужно ли вашим тестам подключаться к экземпляру сервера sql, кажется, что при подключении к серверу sql возникает ошибка. Пожалуйста, проверьте сеть между сервером вашего агента сборки и вашим сервером sql и убедитесь, что соединение работает.   -  person Tingting0929    schedule 12.04.2017
comment
@ Tingting0929-MSFT Да, я установил значение true, но больше не вижу информации в журналах. То же самое и с powershell. Он пытается подключиться к серверу SQL (тесты интеграции VIA - MSTest). Я могу настроить процесс для мониторинга сетевого подключения в течение всего тестового прогона. Как только у меня будет больше результатов, я обновлю свой вопрос.   -  person David Rogers    schedule 13.04.2017
comment
Какой тест вы проводите? Модульный тест или нагрузочный тест или что-то другое? Вы установили период тайм-аута в своем тесте? И как долго выполняется сборка при неудачном тесте? Это неизменное время?   -  person Eddie Chen - MSFT    schedule 14.04.2017
comment
@Eddie-MSFT Хорошие вопросы, я обновил свой вопрос, добавив дополнительную информацию, связанную с этим.   -  person David Rogers    schedule 14.04.2017
comment
У меня было такое же исключение, когда я запускал модульный тест в режиме отладки, оказалось, что исключение в моем собственном коде привело к IOException в среде MS Test.   -  person Herman    schedule 23.05.2017


Ответы (1)


Если вы посмотрите на неудачную сборку (содержащую тесты) после того, как она была прервана в разделе «Сборка» TFS, там написано, что она была «Прервана», вот и все... Если вы посмотрите на результаты сборки (содержащей тесты) в в разделе «Тест» TFS указано, что тестовый запуск «превышен тайм-аут».

Очевидно, MSTest работал со значением по умолчанию этого маленькой жемчужины< /а>. Я думаю, что по умолчанию это 8 часов, если не указано, но я не слишком уверен в этом. В любом случае я установил следующий параметр в файле «Default.testsettings»:

<?xml version="1.0" encoding="utf-8"?>  
<TestSettings name="TestSettings1">
  <Execution>
    <Timeouts runTimeout="200000000" />
  </Execution>
</TestSettings>

Кажется, решить проблему. Тесты выполняются успешно и больше не истекают по времени.

person David Rogers    schedule 23.05.2017