我运行了一些自动化测试,以测试与MongoDB相关的库。为了做到这一点,我启动一个带有临时数据目录的Mongo服务器,并在一个短暂的端口上连接到它,并运行一些测试。
显然,这会导致竞争状况。因此,在我的第一个测试版本中,我暂停了一段时间并等待确保mongod
在测试开始之前有时间开始。
这令人沮丧(并且效率低下),所以我决定监视标准输出并等待mongod
标准输出流上与正则表达式匹配的行:
/\[initandlisten\] waiting for connections/
这让它运转了。那么好,然后我准备回过头来试图找到一种更强大的方法来做到这一点。我记得一个名为" embedmongo"的Java库。运行基于MongoDB的测试,并认为它必须解决问题。这样做(GitHub):
protected String successMessage() {
return "waiting for connections on port";
}
...并使用它来确定进程是否已正确启动。
那么,我们是对的吗?正在检查mongod
进程输出日志(它是否已经国际化?消息的措辞是否会发生变化?)这是最好的方法吗?或者是否有更强大的东西我们都缺失了?
答案 0 :(得分:1)
我们在类似情况下所做的是:
答案 1 :(得分:0)
我刚刚编写了一个小untilMongod
命令,可以在bash脚本中使用它:https://github.com/FGM/untilMongod
包含bash + Node.JS示例用例。