2

Because ACI doesn't support scaling, we deploy multiple container groups containing an Azure DevOps agent, a selenium grid hub and a selenium grid node. To try and speed things up I've tried to deploy the container groups with an additional node, identical to the first only being started on port 6666 instead of port 5555. I can see the two nodes register with the grid without issue but when I execute the same batch of tests with the additional node and without they take the exact same amount of time. How do I go about finding out what's going on here?

My ACI yaml:

apiVersion: 2018-10-01
location: australiaeast
properties:
  containers:
  - name: devops-agent
    properties:
      image: __AZUREDEVOPSAGENTIMAGE__
      resources:
        requests:
          cpu: 0.5
          memoryInGb: 1
      environmentVariables:
        - name: AZP_URL
          value: __AZUREDEVOPSPROJECTURL__
        - name: AZP_POOL
          value: __AGENTPOOLNAME__
        - name: AZP_TOKEN
          secureValue: __AZUREDEVOPSAGENTTOKEN__
        - name: SCREEN_WIDTH
          value: "1920"
        - name: SCREEN_HEIGHT
          value: "1080"
      volumeMounts:
        - name: downloads
          mountPath: /tmp/
  - name: selenium-hub
    properties:
      image: selenium/hub:3.141.59-xenon
      resources:
        requests:
          cpu: 1
          memoryInGb: 1
      ports:
      - port: 4444
  - name: chrome-node
    properties:
      image: selenium/node-chrome:3.141.59-xenon
      resources:
        requests:
          cpu: 1
          memoryInGb: 2
      environmentVariables:
      - name: HUB_HOST
        value: localhost
      - name: HUB_PORT
        value: 4444
      - name: SCREEN_WIDTH
        value: "1920"
      - name: SCREEN_HEIGHT
        value: "1080"
      volumeMounts:
      - name: devshm
        mountPath: /dev/shm
      - name: downloads
        mountPath: /home/seluser/downloads
  - name: chrome-node-2
    properties:
      image: selenium/node-chrome:3.141.59-xenon
      resources:
        requests:
          cpu: 1
          memoryInGb: 2
      environmentVariables:
      - name: HUB_HOST
        value: localhost
      - name: HUB_PORT
        value: 4444
      - name: SCREEN_WIDTH
        value: "1920"
      - name: SCREEN_HEIGHT
        value: "1080"
      - name: SE_OPTS
        value: "-port 6666"
      volumeMounts:
      - name: devshm
        mountPath: /dev/shm
      - name: downloads
        mountPath: /home/seluser/downloads
  osType: Linux
  diagnostics:
    logAnalytics:
      workspaceId: __LOGANALYTICSWORKSPACEID__
      workspaceKey: __LOGANALYTICSPRIMARYKEY__
  volumes:
  - name: devshm
    emptyDir: {}
  - name: downloads
    emptyDir: {}
  ipAddress:
    type: Public
    ports:
    - protocol: tcp
      port: '4444'
#==================== remove this section if not pulling images from private image registries ===============
  imageRegistryCredentials:
    - server: __IMAGEREGISTRYLOGINSERVER__
      username: __IMAGEREGISTRYUSERNAME__
      password: __IMAGEREGISTRYPASSWORD__
#========================================================================================================================
tags: null
type: Microsoft.ContainerInstance/containerGroups

When I run my tests locally against a docker selenium grid either from Visual Studio or via dotnet vstest, my tests run in parallel across all available nodes and complete in half the time.

  • Your value for SE_PORTS IS "-port 6666"; but "-port" isn't a valid flag. It needs to be either "--port" or "-p" I believe. If that's truly what you're running, that would make the second node registration with the hub fail because it tries to reuse the already-in-use port 5555. – Vince Bowdren Oct 25 '21 at 14:38

0 Answers0