gpt4 book ai didi

ruby-on-rails - 使用 parallel_tests 测试在运行中被杀死

转载 作者:行者123 更新时间:2023-11-28 21:31:27 28 4
gpt4 key购买 nike

为了让我们的测试运行得更快,我决定使用并行测试。 https://github.com/grosser/parallel_tests

然而,与往常一样,这并非没有问题。测试在完成之前被杀死。

...被杀死。

继续阅读以了解我是如何解决这个问题的。

最佳答案

经过大量故障排除后,我必须准确了解发生了什么,或者至少了解 parallel_tests 如何尝试运行我的测试。

Parallel_tests 为每个内核创建一个数据库。因此,如果我有 4 个可用内核,它将创建 4 个测试数据库。然后所有测试均匀分布在核心之间并使用其自己的数据库执行。

首先,我没有使用正确的命令来设置必要的数据库。以下是对我有用的顺序。

假设你的 database.yml 看起来像这样

development:  adapter: mysql2  encoding: utf8  database: homestars_dev  username: root  password:test: &test  adapter: mysql2  encoding: utf8  database: homestars_test  username: root  password:

create dbs in database.yml and load the schema/structure in the dev db

rake db:setup 

根据可用核心数创建测试数据库

rake parallel:create

将架构从开发数据库复制到每个新创建的测试数据库

rake parallel:prepare

为每个测试数据库设置种子

rake parallel:seed

运行测试

rake parallel:rspec

有了这个,parallel_test 开始正确地做它的事情!但是,仍然存在导致测试失败的问题。

我使用类似于 http://ariejan.net/2011/09/24/rspec-speed-up-by-tweaking-ruby-garbage-collection/ 的方法实现了 GC 延迟

我将其调整为每 10 秒运行一次。

出于某种原因,10 秒大约是每个内核终止测试所花费的时间!所以我去删除了启用 GC hack 的行。 (通过这样做,GC 仍应在每次测试后运行)

出于某种原因,它做到了!虽然我仍然不明白为什么会这样,但我很高兴找到解决方案并更好地理解问题/解决方案。

经验教训:确保您的数据库在运行测试之前已正确设置,不要使用 GC hack 来延迟它(至少在我们找到它终止进程的原因之前)

希望对某人有所帮助,如果您有任何进一步的信息,请插话!

关于ruby-on-rails - 使用 parallel_tests 测试在运行中被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20458883/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com