1

我不能完全解释这个问题,因为我自己也不明白。我很感激在定义/定位/处理问题方面获得帮助。

设置

我有一个运行测试的 Win10 VM,还有一个运行这些测试的 Jenkins VM (Windows Server 2008)。我正在使用一个名为 JSystem 的测试应用程序。遗憾的是,它不正式支持 Windows 10,因为它使用 Telnet 与目标 SUT 通信(已从 Windows 10 中删除),因此我必须创建一种使用 WinRM 与该类型 VM 通信的方法。

问题

它的要点是,在某个时间点,对 Jenkins 的测试只是“冻结”了。连接仍处于“已建立”状态,VM(主机和客户端)仍在工作。它不会每次都发生,它可能会在测试开始后几分钟或几个小时后发生。导致的测试几乎永远不会相同,但是当 SUT 和测试 VM 之间存在某种形式的通信时,它自然会发生。它可以是文件传输,也可以是像“dir”这样的简单命令。它可以在请求命令发生期间发生,或者在发送回结果时发生。

更多信息

我确实收集了更多可能有帮助的信息。

  1. 当我尝试从自己的开发环境(即不使用 Jenkins 作为媒介)运行测试时,我没有看到它发生 - 但是,这可能是因为我不走运并且没有足够的尝试。我自己的环境也是 Windows 10,而不是 VM。
  2. 查看 SUT 上的事件查看器,出现警告“时间服务”事件 ID 50,在冻结发生一分钟后出现 NTPClient 时间同步问题。但是,Jenkins VM 根本没有任何事件。也就是说,该事件在 SUT 上重复很多次,它并不总是冻结测试,但如果它发生在 VM 之间的通信尝试期间,它可能会导致干扰。
  3. 我仍然可以使用 WinRM 连接到 SUT,与其他来源一样好,并且它也响应。
  4. 与其冻结,更像是 SUT 正在等待 Jenkins 的请求,而 Jenkins 正在等待 SUT 的响应。然而,奇怪的是,通常这些测试的超时时间为 30-60 秒,在测试步骤失败之前,它不应该等待比这更长的时间(当然,除非在测试中另外配置)。
  5. 我不能确定这是否与它有关,但我确实有虚拟机之间的时间同步问题。我在另一个问题中询问了如何解决它,所以如果这是您认为的问题,请告诉我,特别是如果您有解决方案。

解决这个问题的好方法是什么?

4

0 回答 0