硒网格中间歇性ECONNREFUSED 2

时间:2014-03-26 02:58:37

标签: ruby selenium-webdriver watir selenium-grid

我一直在尝试在大型Selenium网格上运行我们的黄瓜测试,我们遇到了消息No connection could be made because the target machine actively refused it. - connect(2) (Errno::ECONNREFUSED)的间歇性错误。大约5%的测试随机出现错误,并不总是失败的测试。

我正在使用Amazon EC2实例运行我的网格,我有57个节点设置连接到也在亚马逊环境中运行的Selenium HUB。测试正在firefox 27.0.1上运行,每个节点配置为一次运行多达5个firefox实例。 Node和HUB实例正在运行Windows Server 2008 R2。节点实例在服务中运行Selenium网格jar,以便它可以在没有会话的情况下与桌面交互。 Windows服务可以访问会话0,这允许它在没有任何人登录的情况下显示浏览器。

此外,为了并行运行黄瓜测试,我使用了parallel_tests gem(https://github.com/grosser/parallel_tests)。

为了简化我们基础架构的设置和拆除过程,我使用Bamboo来自动化该过程。

我正在使用selenium服务器jar版本2.39.0。我使用的Selenium web驱动程序gem是版本2.38.0。我也使用gem watir-webdriver 0.6.4来驱动我们的测试,以及页面对象0.9.4。

我考虑过的一些解决方案涉及重新运行失败的测试,但我还没有找到一种简单的方法来并行重新运行失败的测试,我已经确定最好的解决方案是解决连接错误。

这是错误的完整堆栈跟踪:

  

无法建立连接,因为目标计算机主动拒绝它。 - 连接(2)(Errno :: ECONNREFUSED)   C:/Ruby193/lib/ruby/1.9.1/net/http.rb:763:在open' C:/Ruby193/lib/ruby/1.9.1/net/http.rb:763:in块中连接'   C:/Ruby193/lib/ruby/1.9.1/timeout.rb:69:in timeout' C:/Ruby193/lib/ruby/1.9.1/timeout.rb:100:in timeout'   C:/Ruby193/lib/ruby/1.9.1/net/http.rb:763:在connect' C:/Ruby193/lib/ruby/1.9.1/net/http.rb:756:in do_start'中   C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:在start' C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1285:in请求中   (eval):1:在process_watir_call' ./features/step_definitions/wizard_steps.rb:149:in / ^我选择时区“([^”] *)/'   功能\ SendSMS1147.feature:34:在`我选择时区“(UTC + 11:00)符拉迪沃斯托克”'

请注意,错误不仅发生在此步骤中,而是在不同时间在各种不同的步骤中发生,当此测试单独运行时,它会通过。

解决此错误的最佳方法是什么?

0 个答案:

没有答案