Selenium Mocha测试AWS ECS Docker Timeout

时间:2017-09-22 15:56:38

标签: docker selenium-webdriver mocha amazon-ecs

问题:在NodeJS平台上通过Mocha执行并在AWS ECS上运行的Selenuim Webdriver驱动的UI测试很慢到常规超时(超时= 120000毫秒,即2分钟)。

设置:

  1. 我在AWS ECS上有一个群集。群集有3个m4.xlarge实例,因此CPU /内存不是问题。此外,EC2实例度量标准表明,即使运行测试,CPU /内存利用率也是如此。 1%。
  2. 每个容器都使用以下JSON定义:

    { "requiresAttributes": [ { "value": null, "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18", "targetId": null, "targetType": null }, { "value": null, "name": "com.amazonaws.ecs.capability.ecr-auth", "targetId": null, "targetType": null } ], "taskDefinitionArn": "someDefinition", "networkMode": "host", "status": "ACTIVE", "revision": 23, "taskRoleArn": null, "containerDefinitions": [ { "volumesFrom": [], "memory": 400, "extraHosts": null, "linuxParameters": null, "dnsServers": null, "disableNetworking": null, "dnsSearchDomains": null, "portMappings": [ { "hostPort": 80, "containerPort": 80, "protocol": "tcp" } ], "hostname": null, "essential": true, "entryPoint": [], "mountPoints": [ { "containerPath": "/dev/shm", "sourceVolume": "hostDevShm", "readOnly": null } ], "name": "foo-automation-container", "ulimits": null, "dockerSecurityOptions": null, "environment": [], "links": null, "workingDirectory": null, "readonlyRootFilesystem": null, "image": "foo-docker-container-image", "command": [], "user": null, "dockerLabels": null, "logConfiguration": null, "cpu": 0, "privileged": null, "memoryReservation": null } ], "placementConstraints": [], "volumes": [ { "host": { "sourcePath": "/dev/shm" }, "name": "hostDevShm" } ], "family": "foo-automation-tests" }

  3. 我尝试了什么?

    1. 除了销毁和重新创建群集和任务 定义很多次,我已经设置了网络模式=主机,而我 添加了基于this链接的卷装入。

    2. 我确保这些测试运行完美无缺(并且在他们的 在内部部署VM上托管的容器上的常规速度 - 问题 仅使用AWS ECS配置。

    3. 我已经在网上搜索了这个问题的解决方案,包括SO,Docker的帮助论坛和AWS文档。

    4. 此时,我撞墙了。非常感激任何的帮助。

      如果需要任何其他信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

好的,我已经让它运行了 - 所有测试现在都在内部硬件的性能水平上执行。这是我做的:

  1. 首先,在“任务定义”中,设置“网络模式=主机
  2. 在与任务关联的容器定义中:

    1. 确认删除所有端口映射 - 留在端口映射中会干扰网络模式=主机设置。
    2. 基于this link的卷装载。
    3. 将CPU单位设置为> 2048(基于假设0意味着无限制的CPU单位,我把它设为0。)
    4. 将您的记忆设置为> = 4192。
    5. 最重要的是,在安全性下,检查"特权"。
    6. 一旦我做了这些事情,UI测试就会以通常的(<1秒)速度完美无缺地运行。