测试容器中 StartupCheckStrategy 和 WaitStrategy 的区别
Difference between StartupCheckStrategy and WaitStrategy in test containers
最近我们遇到了一些测试容器的启动时间问题:
慢速计算机无法在硬编码的 30 秒内启动容器。
问题已通过将所有检查移至具有可配置超时的 WaitStrategy 得到解决。
是否有任何理由保留这两张支票?
在 StartupCheckStrategy 和 WaitStrategy 中应该检查什么?
抱歉有点混乱!
StartupCheckStrategy
用于检查 Docker 是否成功启动了容器。有几个不同的变体,但基本上只是 'did the container reach the RUNNING state?'.
虽然容器是 运行,但这并不意味着它实际上已经准备好做任何有用的事情(例如接受连接或工作)——这就是 WaitStrategy
的意思为了。默认的等待检查只是简单地探测以确保 TCP 端口正在侦听,但您可以使用更复杂的检查来覆盖这些,例如尝试通过驱动程序建立连接或查找日志字符串。
听起来您将检查转移到 WaitStrategy
实施是正确的。再次抱歉,这令人困惑;我们显然需要对文档做一些工作,使其更易于理解和更一致。
最近我们遇到了一些测试容器的启动时间问题: 慢速计算机无法在硬编码的 30 秒内启动容器。
问题已通过将所有检查移至具有可配置超时的 WaitStrategy 得到解决。
是否有任何理由保留这两张支票? 在 StartupCheckStrategy 和 WaitStrategy 中应该检查什么?
抱歉有点混乱!
StartupCheckStrategy
用于检查 Docker 是否成功启动了容器。有几个不同的变体,但基本上只是 'did the container reach the RUNNING state?'.
虽然容器是 运行,但这并不意味着它实际上已经准备好做任何有用的事情(例如接受连接或工作)——这就是 WaitStrategy
的意思为了。默认的等待检查只是简单地探测以确保 TCP 端口正在侦听,但您可以使用更复杂的检查来覆盖这些,例如尝试通过驱动程序建立连接或查找日志字符串。
听起来您将检查转移到 WaitStrategy
实施是正确的。再次抱歉,这令人困惑;我们显然需要对文档做一些工作,使其更易于理解和更一致。