【问题标题】:Tests throwing Socket hang up and Session timeout exceptions randomly during test run在测试运行期间随机抛出 Socket hang up 和 Session timeout 异常的测试
【发布时间】:2019-12-10 12:19:44
【问题描述】:

我正在使用 NightwatchJS v 1.1.11 和 Selenoid 运行 UI 测试

selenoid 托管在 t2.micro EC2 实例上(评估阶段因此使用 t2.micro)。

测试在测试过程中随机失败,主要原因有两个:

1) 套接字挂起异常

13:10:05 测试/readOnlyProduction/palette.js POST http://xx.xx.xx.xx:4444 /wd/hub/session/87f6eb1b0b3369ba93bb9ce8c548fa89/element/0.46204216593315195-1/点击 - ECONNRESET

13:10:05 测试/readOnlyProduction/palette.js 错误:套接字挂断

13:10:05 测试/readOnlyProduction/palette.js at createHangUpError (_http_client.js:342:15)

13:10:05 测试/readOnlyProduction/palette.js 在 Socket.socketCloseListener (_http_client.js:377:23)

13:10:05 tests/readOnlyProduction/palette.js 运行 .clickElement() 协议操作时出错:发生未知错误。

2) 会话超时或找不到

13:11:06 tests/readOnlyProduction/palette.js 运行 .locateMultipleElements() 协议操作时出错:会话超时或找不到

在 EC2 中针对 selenoid 运行的 Jenkins 会触发测试,但是当 selenoid 托管在本地并且在本地触发测试时会观察到类似的异常。

最重要的是,当测试并行运行时会发生这种情况,而相同的测试在一次运行一个时运行良好。

到目前为止尝试了以下操作,但到目前为止没有运气。

1) 在 nightwatch.json 中添加这个

“request_timeout_options”:{ “超时”:100000, “重试尝试”:3 }

2) 我在单个测试套件中有很多测试用例,所以分成更小的测试。

【问题讨论】:

    标签: nightwatch.js session-timeout selenoid


    【解决方案1】:

    需要检查的几件事:

    1) 检查您的虚拟机是否有足够的计算资源(CPU、内存、磁盘)。这通常可以使用 AWS CloudWatch (more on this) 进行验证。我们的建议是从每个 CPU 内核约 1.5-2 个浏览器开始,为每个并行运行的浏览器配置 1 Gb RAM。

    2) 尝试增加 Selenoid 会话超时(默认为 1 分钟)。这可能是例如使用功能轻松完成:

    sessionTimeout: "2m"
    

    3) 检查您是否有任何网络连接问题,例如JS 和 CSS 等静态页面资源被防火墙规则阻止。

    【讨论】:

    • 谢谢。这个设置对我有用。 “-retry-count 3 -session-attempt-timeout 2m”。 我使用的确切命令: ./selenoid -conf /home/ec2-user/browsers.json -limit 10 -retry-count 3 -session-attempt-timeout 2m -log-output-dir /home /ec2-user/selenoid-logs -timeout 2m -video-recorder-image "selenoid/video-recorder:latest-release"
    • 只是一个附加说明。当我在 docker 中使用会话超时选项运行 selenoid 时,它对我不起作用。我能够启动容器,但由于某种原因,没有考虑会话超时,并且由于同样的原因测试仍然失败。后来,我用会话选项开始了 selenoid 二进制文件,到目前为止,它看起来不错。
    • 不幸的是,我仍然看到套接字挂起异常,并且在通过 Jenkins 运行测试时发生的情况更多。我的想法已经不多了。
      说,有一个网络问题,那么这些记录在哪里?我还没有任何信息可以自信地说,存在网络问题。
    猜你喜欢
    • 2022-01-20
    • 2011-01-16
    • 1970-01-01
    • 2014-05-10
    • 2020-04-27
    • 2020-08-18
    • 2012-08-07
    • 2015-07-15
    • 2013-09-08
    相关资源
    最近更新 更多