mstest - TFS 构建服务器无法与控制器通信以进行负载测试
问题描述
我可以采取哪些步骤来测试控制器的连接性?如何确保我的 tfs 构建服务器能够与控制器通信以执行负载测试?
我的公司正在尝试自动化负载测试,为此我们正在使用 tfs 构建。我有一个命令行任务来实际启动负载测试。为了形象化,它看起来像这样:
Command Line Task
Tool: MSTest.exe
Arguments: /testcontainer:"some load test.loadtest" /testsettings:"some test settings.testsettings"
当我运行构建时,它会在大约 3-4.5 分钟后超时并给我这个错误:
Failed to queue test run 'some load test': A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond
我已经尝试了一些方法来测试控制器的连接性,但我不确定我是否已经找到了我正在寻找的答案。我尝试的第一件事是重新启动控制器,但这并没有改变任何东西。然后我进入vs2017并打开负载测试编辑器。从那里我进入Manage test controllers
。控制器对话框设置为正确的控制器,它所控制的代理位于Ready
. 然后我查看了测试设置,并验证了<RemoteController/>
也设置正确。我这样做只是为了确认错误不在于文件本身。因此,超时应该是由于服务器或控制器之间的某些连接问题而发生的。
我知道控制器对传入流量使用特定端口,即端口 6901,因此我在 PS 中使用 .NET TcpClient 检查了端口连接:
$server = 'mycontroller'
$port = 6901
$client = New-Object Net.Sockets.TcpClient
try{
$client.Connect($server, $port)
$msg = "Connected to $server on Port $port"
} catch {
$msg = "Could not connect to $server on Port $port"
} finally {
$client.Dispose()
}
write-host $msg
如果控制器已打开,$client
则始终返回它能够连接到$server
. Connected
除了对象之外,是否还有任何属性TcpClient
可以为我提供有关其连接的更多信息?因为尽管$client
看起来能够连接,但构建服务器仍然超时。我是否需要为构建服务器提供要连接的特定端口?它不应该自动执行吗?
我尝试tracert
通过另一个命令行任务来查看是否可以查明服务器超时的位置:
2019-07-10T20:28:32.9051572Z C:\Windows\system32\cmd.exe /c "TRACERT.exe atsvstctstvm400"
2019-07-10T20:28:32.9271264Z Tracing route to mycontroller.local [10.208.3.56]
2019-07-10T20:28:32.9281250Z over a maximum of 30 hops:
2019-07-10T20:28:37.7253994Z 1 1 ms <1 ms <1 ms 10.200.0.5
2019-07-10T20:28:38.7269952Z 2 <1 ms <1 ms <1 ms 10.50.0.2
2019-07-10T20:28:39.8534160Z 3 38 ms 39 ms 38 ms 172.20.0.2
2019-07-10T20:28:52.3918376Z 4 * * * Request timed out.
2019-07-10T20:28:52.5396304Z 5 48 ms 48 ms 48 ms 10.208.3.56
2019-07-10T20:28:52.5396304Z Trace complete.
第四跳可能是构建服务器挂断的地方吗?似乎尽管第 4 跳超时,代理仍然能够 ping 通到控制器。如果它是我需要关注的第四跳,我该如何修复它?它没有给我任何关于第四跳想去哪里的信息。
因此,总而言之,我正在尝试使用 MSTest.exe 通过 tfs 中的命令行任务运行负载测试。当我运行构建时,我收到一个超时错误,我认为这意味着构建服务器无法与控制器通信。我已经尝试了一些解决问题的想法,但我无法解决问题或阐明如何继续。如何查明通信错误的位置?还有哪些其他故障排除解决方案可以解决此问题?对于未来的负载测试运行,我如何测试以确保构建服务器能够与控制器通信?
解决方案
推荐阅读
- ruby-on-rails - 如果最新的迁移相同,Rails 如何知道有待处理的迁移?
- javascript - 需要一个 JSON 对象、数组或文字
- c++ - 在编译时为运行时设置环境变量
- python - 即使安装了 conda 也无法执行 conda 命令
- bash - 作为参数传递给heredoc块内的docker-compose命令时变量不会扩展
- objective-c - 如何获取超类的对象实例
- django - Django cron 作业无法连接到 Elastic Beanstalk 上的数据库
- javascript - webpack splitChunks:如何将依赖项合并到命名块中?
- java - Java 库 Graphics2D 不将文本显示为正确的字体
- python - 最后一行带有 :_^5 的 print 函数是什么意思?