docker-selenium icon indicating copy to clipboard operation
docker-selenium copied to clipboard

[🐛 Bug]: Using Relay Feature in Grid 4 with Selenium Node Docker

Open burakkaygusuz opened this issue 3 years ago • 2 comments

What happened?

The problem

I would like to configure 2 different relay using SE Node Docker via docker compose. Grid setup is successful but when I execute the test, I get the error as below:

Maven Surefire Plugin Log

org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: Could not start a new session. New session request timed out

Environment

  • Appium version : 2.0.0-beta.43
  • Appium drivers : UIAutomator2 v2.4.9
  • Node.js version: 16.17.0
  • Mobile platform/version under test: Android API 32 & Android API 33
  • Real device or emulator/simulator: emulator

Server Configurations

appium1.yaml

server:
  port: 4723
  keep-alive-timeout: 80
  session-override: true
  use-drivers:
    - uiautomator2

appium2.yaml

server:
  port: 4724
  keep-alive-timeout: 80
  session-override: true
  use-drivers:
    - uiautomator2

Nodes

[server]
port = 5555

[node]
detect-drivers = false

[relay]
url = "http://host.docker.internal:4723"
status-endpoint = "/status"

[[relay.configs]]
max-sessions = 1
stereotype = '{"platformName":"android","appium:automationName":"UIAutomator2","appium:udid":"emulator-5554","appium:platformVersion":"12","appium:systemPort":"8101"}'

[server]
port = 5556

[node]
detect-drivers = false

[relay]
url = "http://host.docker.internal:4724"
status-endpoint = "/status"

[[relay.configs]]
max-sessions = 1
stereotype = '{"platformName":"android","appium:automationName":"UIAutomator2","appium:udid":"emulator-5556","appium:platformVersion":"13","appium:systemPort":"8102"}'

Configuration Steps to Reproduce

1 - Create and start the two virtual devices.

2- Start Appium servers

appium server --config /path/to/appium1.yml

appium server --config /path/to/appium2.yml

3- Execute the yml file

docker-compose -f docker-compose.yml up

When sending a request to get grid status info:

curl http://localhost:4444/status

{
  "value": {
    "ready": true,
    "message": "Selenium Grid ready.",
    "nodes": [

Link to Appium logs

https://gist.github.com/burakkaygusuz/328df48de302dd5d1f8e2280f64a9d47

Command used to start Selenium Grid with Docker

version: "3"
services:
  node-1:
    container_name: node-1
    image: selenium/node-docker:4.4.0-20220831
    volumes:
      - ./src/test/resources/nodes/node_1.toml:/opt/bin/config.toml
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - SE_NODE_OVERRIDE_MAX_SESSIONS=true
      - SE_NODE_MAX_SESSIONS=1
    extra_hosts:
      - "host.docker.internal:host-gateway"

  node-2:
    container_name: node-2
    image: selenium/node-docker:4.4.0-20220831
    volumes:
      - ./src/test/resources/nodes/node_2.toml:/opt/bin/config.toml
    depends_on:
      - selenium-hub
    environment:
      - SE_EVENT_BUS_HOST=selenium-hub
      - SE_EVENT_BUS_PUBLISH_PORT=4442
      - SE_EVENT_BUS_SUBSCRIBE_PORT=4443
      - SE_NODE_OVERRIDE_MAX_SESSIONS=true
      - SE_NODE_MAX_SESSIONS=1
    extra_hosts:
      - "host.docker.internal:host-gateway"

  selenium-hub:
    image: selenium/hub:4.4.0-20220831
    container_name: selenium-hub
    environment:
      - SE_NODE_SESSION_TIMEOUT=300
      - SE_SESSION_REQUEST_TIMEOUT=30
      - SE_SESSION_RETRY_INTERVAL=5
    ports:
      - "4442:4442"
      - "4443:4443"
      - "4444:4444"

Relevant log output

selenium-hub | 10:19:41.653 WARN [SeleniumSpanExporter$1.lambda$export$3] - {"traceId": "ff4bc9ad2c6ceef61831353a9bdc5d83","eventTime": 1662113981653161269,"eventName": "HTTP request execution complete","attributes": {"http.flavor": 1,"http.handler_class": "org.openqa.selenium.grid.sessionqueue.local.LocalNewSessionQueue","http.host": "localhost:4444","http.method": "POST","http.request_content_length": "1147","http.scheme": "HTTP","http.status_code": 500,"http.target": "\u002fsession","http.user_agent": "selenium\u002f4.4.0 (java windows)"}}

Operating System

macOS 12.4 & Windows 11

Docker Selenium version (tag)

4.4.0-20220831

burakkaygusuz avatar Sep 02 '22 19:09 burakkaygusuz

Can you share the complete logs? I mean, I cannot know what the issue is with just a single line. Right?

diemol avatar Sep 03 '22 23:09 diemol

@diemol Selenium Docker log: https://gist.github.com/burakkaygusuz/d22ccf0df4d44725d93d2d848fbc3f0e Appium log: https://gist.github.com/burakkaygusuz/328df48de302dd5d1f8e2280f64a9d47

burakkaygusuz avatar Sep 05 '22 10:09 burakkaygusuz

Fixed in version 4.5.0-20221004

burakkaygusuz avatar Oct 30 '22 05:10 burakkaygusuz