Cosmos 模拟器在 Linux 上随机失败的测试

Cosmos Emulator randomly failing tests on Linux

我正在尝试 运行 Linux 上的 Cosmos 模拟器,运行 使用 SpecFlow 进行测试。

按照 these instructions 安装它并成功 运行 安装它之后,在我尝试 运行 它们的所有时间里,可变数量的测试随机失败。

失败的测试抛出 CosmosException503 (Service Unavailable) 状态码。

所有这些测试在 Windows 上工作得很好,并且根据我 运行 它们的方式,通过终端或 VSCode,失败的次数不同。

问题出在文档中提供的 docker 命令上:

docker run -p 8081:8081 -p 10251:10251 -p 10252:10252 -p 10253:10253 -p 10254:10254  -m 3g --cpus=2.0 --name=test-linux-emulator -e AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10 -e AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true -e AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=$ipaddr -it mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator

更具体地说,使用此环境变量:

AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10

此分区计数太低,导致它放弃请求。按照 this Github thread 中的建议,将其增加到 20,解决了问题。

为了安全起见,我还把--cpus增加到3.0,内存-m增加到4g

编辑: 最终不得不增加到 40。之后就再也没有坏过。