【问题标题】:VSTest unit-test's ping of a DNS server (8.8.8.8) fails when running within Azure Pipeline在 Azure Pipeline 中运行时,VSTest 单元测试对 DNS 服务器 (8.8.8.8) 的 ping 失败
【发布时间】:2019-09-25 10:50:30
【问题描述】:

在 Azure Pipeline 中运行时,VSTest 单元测试对 DNS 服务器 (8.8.8.8) 的 ping 失败。 ping 操作是一些单元测试的一部分。当这些单元测试在本地计算机上运行时 - 一切正常。但是,当在 Azure Pipeline CI 上执行相同的单元测试时,所有 ping 操作都会失败。 奇怪的是,所有其他基于 Internet 的调用(如 HTTP POST)在本地和 Azure Pipeline CI 上都运行良好。 有什么想法吗?

【问题讨论】:

  • ICMP 可能被屏蔽了?
  • 感谢您的快速回复。有没有办法在 Azure Pipeline vm 上打开 ICMP?
  • 您可以使用自己的机器来托管 CI 代理。您制作“单元测试用例”以依赖于可变因素(例如外部 DNS 服务)也很奇怪。它们通常是模拟出来的。
  • 是的,我们有一些单元测试本质上是集成测试,用于在真实条件下验证整个处理堆栈(尽可能接近生产环境)。这种方法对我们来说非常有效,直到最近我们才使用 HTTP 调用,当我们将一些 ping 调用添加到组合中时,这些调用似乎在 Azure Pipelines 中默认被阻止。

标签: azure-pipelines ping vstest


【解决方案1】:

在 Azure Pipeline 中运行时,VSTest 单元测试对 DNS 服务器 (8.8.8.8) 的 ping 失败

恐怕你必须在本地机器上设置你的私人代理。

作为测试,我还可以在本地计算机上成功 ping DNS 服务器 (8.8.8.8),但在 Azure 管道上的托管代理上失败。

那是因为:

不允许通过 Azure 负载均衡器使用 ICMP 协议, 您会注意到 您无法从 互联网,并且在 Azure VM 中,您无法 ping 互联网位置

查看博客 Use port pings instead of ICMP to test Azure VM connectivity 了解更多详情。

此外,我们也不能通过 Windows 防火墙允许 ping Azure VM。

所以,如果你想 ping DNS 服务器,你需要在你的本地机器上创建你的私有代理:

Set Up a Private Agent

希望这会有所帮助。

【讨论】:

  • 谢谢!这确实澄清了问题并提出了可能的替代方案。
猜你喜欢
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 2020-08-22
  • 1970-01-01
  • 2013-11-26
  • 2021-05-07
  • 1970-01-01
  • 2011-05-22
相关资源
最近更新 更多