zalando/zalenium
在 GitHub 查看Radom failure when run selenium tests in parallel with error info as 'cannot forward the request unexpected end of stream on Connection`
Open
#742 建立於 2018年10月11日
help wanted
描述
Please make sure that you provide enough information for us to help you with this issue. Thank you!
Zalenium Image Version(s):
3.14.0d
Docker Version:
18.06.1-ce
If using docker-compose, version:
1.22.0
OS: MacOS High Sierra 10.13.6 16GB RAM
Docker Command to start Zalenium:
I use docker compose to start the service
version: "3"
services:
zalenium:
image: "dosel/zalenium"
container_name: zalenium
hostname: zalenium
tty: true
volumes:
- '/tmp/videos:/home/seluser/videos'
- '/var/run/docker.sock:/var/run/docker.sock'
- '/usr/local/bin/docker:/usr/local/bin/docker'
ports:
- 4444:4444
command: >
start --chromeContainers 4
--firefoxContainers 0
--maxDockerSeleniumContainers 6
--maxTestSessions 200
--screenWidth 1200 --screenHeight 900
--timeZone "America/New_York"
--videoRecordingEnabled false
--sauceLabsEnabled false
--browserStackEnabled false
--testingBotEnabled false
--startTunnel false
environment:
- HOST_UID
- HOST_GID
- SAUCE_USERNAME
- SAUCE_ACCESS_KEY
- BROWSER_STACK_USER
- BROWSER_STACK_KEY
- TESTINGBOT_KEY
- TESTINGBOT_SECRET
Expected Behavior -
The test should run without random error
Actual Behavior -
Now I am getting random test failure. It looks like the request to Selenium does not get through and yield a 500 error, this triggers the failure. I have 4 tests in parallel, and 50 test cases in total. There are about 4-5 tests will fail randomly due to this error. Here is the stacktrace of the error,
2018-10-11 13:01:31,197 root INFO Take screenshot and save as 308fe567.png
2018-10-11 13:01:31,199 selenium.webdriver.remote.remote_connection DEBUG GET http://192.168.240.2:4444/wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot {"sessionId": "af67b690272dd60a3c34f90d2467dc1d"}
2018-10-11 13:01:31,202 urllib3.connectionpool DEBUG Starting new HTTP connection (1): 192.168.240.2:4444
2018-10-11 13:01:39,841 urllib3.connectionpool DEBUG http://192.168.240.2:4444 "GET /wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot HTTP/1.1" 500 11436
2018-10-11 13:01:39,842 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2018-10-11 13:01:39,844 root INFO Take screenshot error
2018-10-11 13:01:39,846 selenium.webdriver.remote.remote_connection DEBUG GET http://192.168.240.2:4444/wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot {"sessionId": "af67b690272dd60a3c34f90d2467dc1d"}
2018-10-11 13:01:39,846 urllib3.connectionpool DEBUG Starting new HTTP connection (1): 192.168.240.2:4444
2018-10-11 13:01:43,108 urllib3.connectionpool DEBUG http://192.168.240.2:4444 "GET /wd/hub/session/af67b690272dd60a3c34f90d2467dc1d/screenshot HTTP/1.1" 500 3261
2018-10-11 13:01:43,109 selenium.webdriver.remote.remote_connection DEBUG Finished Request
2018-10-11 13:01:43,109 root ERROR An error ocurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/golem_framework-0.5.0-py3.6.egg/golem/actions.py", line 351, in verify_element_exist_by_text
driver.get_screenshot_as_file(img_path)
File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 1032, in get_screenshot_as_file
png = self.get_screenshot_as_png()
File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 1064, in get_screenshot_as_png
return base64.b64decode(self.get_screenshot_as_base64().encode('ascii'))
File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 1074, in get_screenshot_as_base64
return self.execute(Command.SCREENSHOT)['value']
File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/usr/local/lib/python3.6/site-packages/selenium-3.14.1-py3.6.egg/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: cannot forward the request unexpected end of stream on Connection{192.168.240.6:40002, proxy=DIRECT hostAddress=/192.168.240.6:40002 cipherSuite=none protocol=http/1.1}
Stacktrace:
at org.openqa.grid.web.servlet.handler.RequestHandler.process (RequestHandler.java:143)
at org.openqa.grid.web.servlet.DriverServlet.process (DriverServlet.java:86)
at org.openqa.grid.web.servlet.DriverServlet.doGet (DriverServlet.java:64)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:790)
at org.seleniumhq.jetty9.servlet.ServletHolder.handle (ServletHolder.java:860)
at org.seleniumhq.jetty9.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1650)
at io.prometheus.client.filter.MetricsFilter.doFilter (MetricsFilter.java:170)
at org.seleniumhq.jetty9.servlet.ServletHandler$CachedChain.doFilter (ServletHandler.java:1637)
at org.seleniumhq.jetty9.servlet.ServletHandler.doHandle (ServletHandler.java:533)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.handle (ScopedHandler.java:143)
at org.seleniumhq.jetty9.security.SecurityHandler.handle (SecurityHandler.java:548)
at org.seleniumhq.jetty9.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:190)
at org.seleniumhq.jetty9.server.session.SessionHandler.doHandle (SessionHandler.java:1595)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:188)
at org.seleniumhq.jetty9.server.handler.ContextHandler.doHandle (ContextHandler.java:1253)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:168)
at org.seleniumhq.jetty9.servlet.ServletHandler.doScope (ServletHandler.java:473)
at org.seleniumhq.jetty9.server.session.SessionHandler.doScope (SessionHandler.java:1564)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:166)
at org.seleniumhq.jetty9.server.handler.ContextHandler.doScope (ContextHandler.java:1155)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.handle (ScopedHandler.java:141)
at org.seleniumhq.jetty9.server.handler.StatisticsHandler.handle (StatisticsHandler.java:169)
at org.seleniumhq.jetty9.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.seleniumhq.jetty9.server.Server.handle (Server.java:530)
at org.seleniumhq.jetty9.server.HttpChannel.handle (HttpChannel.java:347)
at org.seleniumhq.jetty9.server.HttpConnection.onFillable (HttpConnection.java:256)
at org.seleniumhq.jetty9.io.AbstractConnection$ReadCallback.succeeded (AbstractConnection.java:279)
at org.seleniumhq.jetty9.io.FillInterest.fillable (FillInterest.java:102)
at org.seleniumhq.jetty9.io.ChannelEndPoint$2.run (ChannelEndPoint.java:124)
at org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.doProduce (EatWhatYouKill.java:247)
at org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.produce (EatWhatYouKill.java:140)
at org.seleniumhq.jetty9.util.thread.strategy.EatWhatYouKill.run (EatWhatYouKill.java:131)
at org.seleniumhq.jetty9.util.thread.ReservedThreadExecutor$ReservedThread.run (ReservedThreadExecutor.java:382)
at org.seleniumhq.jetty9.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:708)
at org.seleniumhq.jetty9.util.thread.QueuedThreadPool$2.run (QueuedThreadPool.java:626)
at java.lang.Thread.run (Thread.java:748)