【问题标题】:TFS2015 Test Agent Aborted - PowerShell script completed with errorsTFS2015 测试代理中止 - PowerShell 脚本完成但出现错误
【发布时间】:2017-09-07 02:44:14
【问题描述】:

我正在运行一个 TFS 夜间构建,在过去的几天里无法完成所有测试。它在几个小时后失败,并显示“测试运行已中止”消息。在此之前,测试总是成功运行,并且没有对运行这些测试的系统进行重大更改(甚至是微小的更改)。

信息:

  • 在构建中运行两个 MStest(单元测试)
  • 超时设置为 20 小时
  • 运行大约。故障前 15 小时
  • 测试设置为在失败时继续

当我在 TFS 日志中查看最新运行时,它列出了以下内容 (2017-04-11T06:42:47.5500707Z):

[警告]DistributedTests:测试运行已中止。记录运行日志的详细信息。 [警告]DistributedTests:已创建新的测试运行。
[警告]测试运行排队等待项目集合构建服务
[警告]DistributedTests:测试发现已开始。
[警告]DistributedTests:测试运行发现已完成。测试运行 ID:533
[警告]DistributedTests:发现 290 个测试用例。
[警告]DistributedTests:测试执行已开始。测试运行 ID:533
[警告]DistributedTests:测试运行超时。测试运行 ID:533
[警告]DistributedTests:测试运行中止。测试运行 ID: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 取消令牌)在 Microsoft.TeamFoundation.DistributedTask.Worker.JobRunner.RunTask(ITaskContext 上下文,TaskWrapper 任务,CancellationTokenSource tokenSource)

test log 中,我在 VS 中没有看到任何错误,只是一个关于无法连接的警告(我经常看到这些):

W, 2060, 5, 2017/04/10, 16:26:03.595, XXXTESTING\QTController.exe, LoadTestResultConnectString 测试失败:网络相关或 建立连接时发生特定于实例的错误 SQL 服务器。服务器未找到或无法访问。核实 实例名称正确且 SQL Server 配置为 允许远程连接。 (提供者:SQL 网络接口,错误:26 - 定位服务器/指定实例时出错)

我同时在应用程序事件日志中也看到了一个错误:

来自源应用程序的事件 ID 0 的描述不能是 成立。引发此事件的组件未安装在 您的本地计算机或安装已损坏。你可以安装 或修复本地计算机上的组件。

如果事件源自另一台计算机,则显示信息 必须与事件一起保存。

活动中包含以下信息:

错误处理程序异常:System.ServiceModel.CommunicationException: 从管道读取错误:管道已结束。 (109, 0x6d)。 ---> System.IO.IOException:读取操作失败, 见内部异常。 ---> System.ServiceModel.CommunicationException: 从管道读取错误:管道已结束。 (109, 0x6d)。 ---> System.IO.PipeException:读取错误 从管道:管道已结束。 (109, 0x6d).....

消息资源存在,但在 字符串/消息表

问题是我真的不知道如何解释这些消息,每个日志都只是说“测试运行被中止,任务失败”,我什至不确定是 powershell 问题导致它的原因。我也不确定应用程序日志中抛出的错误是否相关,尽管它是在运行失败的同时抛出的。

当您真的不知道是什么导致测试代理失败时,研究这个问题也很困难。有与VSTFS Test Agent 相关的帖子,但我认为这些不是相关问题,当然还有关于Powershell message 的一些无益的帖子。

以前有人见过这种问题吗?我认为过去几天我的构建服务器上没有任何变化(可能是更新...),您认为会导致此类问题发生的原因是什么?

【问题讨论】:

  • 在您的 vnext 构建定义中,请将“system.debug”变量设置为 true(默认为 false),然后重试?然后检查是否有一些关于您的错误的详细日志消息。
  • 你的测试是否需要连接sql server实例,好像连接sql server时出错。请检查您的构建代理服务器和您的 sql server 机器之间的网络并确保连接正常。
  • @Tingting0929-MSFT 是的,我将其设置为 true,但我在日志中看不到更多信息。关于powershell也是如此。它确实尝试连接到 SQL 服务器(VIA 集成测试 - MSTest) 我可以设置一个过程来监控整个测试运行的网络连接。一旦我有更多结果,我会更新我的问题。
  • 您运行的测试是什么?单元测试或负载测试或其他?您是否在测试中设置了超时时间?测试失败时构建运行多长时间?这是一个不变的时代吗?
  • @Eddie-MSFT 好问题,我已经用与此相关的更多信息更新了我的问题。

标签: visual-studio tfs azure-devops tfs-2015 alm


【解决方案1】:

如果您在 TFS 的“构建”部分中止后查看失败的构建(包含测试),它会说它已“中止”,就是这样......如果您查看构建的结果(包含测试)在 TFS 的“测试”部分,它指定测试运行“超出超时”。

显然 MSTest 运行时违反了 little gem 的默认值。我认为未指定时默认为 8 小时,但我对此不太确定。无论如何,我在“Default.testsettings”文件中设置了以下设置:

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

似乎可以解决问题。测试成功运行,不再超时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-26
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 2021-05-31
    • 1970-01-01
    相关资源
    最近更新 更多