Перейти к содержимому

Фотография

Какой максимум тестов можно кинуть в Selenium GRID в параллели?

Selenium Selenium Grid Jenkins

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 DennisM

DennisM

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 29 января 2016 - 16:01

Есть Datadriven тесты и их много. Один сет на 200 второй на 500 тестов. При запуске 200 и более в параллели Grid медленно умирает. На нодах появляются браузеры и никакого движения внутри.  При запуске ~150 в параллели вроде всё работает но много тестов валятся не начавшись. Лимит на 2 нодах по 10 браузеров, т.е. 130 в ожидании сразу висят.

 

Error Message

Error forwarding the new session Error forwarding the request Read timed out
Command duration or timeout: 1110.85 seconds
Build info: version: '2.49.0', revision: '365eeb44deba2067b1761c8862ef21d55250e063', time: '2016-01-13 11:57:39'
System info: host: 'Jenkins', ip: '192.168.3.220', os.name: 'Windows 8.1', os.arch: 'x86', os.version: '6.3', java.version: '1.8.0_65'
Driver info: org.openqa.selenium.remote.RemoteWebDriver

 

Stacktrace

org.openqa.selenium.WebDriverException:
Error forwarding the new session Error forwarding the request Read timed out
Command duration or timeout: 1110.85 seconds
Build info: version: '2.49.0', revision: '365eeb44deba2067b1761c8862ef21d55250e063', time: '2016-01-13 11:57:39'
System info: host: 'Jenkins', ip: '192.168.3.220', os.name: 'Windows 8.1', os.arch: 'x86', os.version: '6.3', java.version: '1.8.0_65'
Driver info: org.openqa.selenium.remote.RemoteWebDriver
    at com.expion.test.Test.AllServers.Test1(AllServers.java:297)
Caused by: org.openqa.grid.common.exception.GridException: Error forwarding the new session Error forwarding the request Read timed out

 

 

Конфигурация:

 

Java + Selenium 2.50.0 (WebDriver) + JUnit(Parameterized) + Maven(POM Parallel) -> Jenkins :)

 

Grid Hub:

java -jar c:\Jenkins\SeleniumGrid\selenium-server-standalone-2.50.0.jar -port 4444 -role hub -nodeTimeout 1000 -browserTimeout 10000

 

Grid Node:

java -Dwebdriver.chrome.driver=c:\Jenkins\SeleniumGrid\chromedriver.exe -Dwebdriver.ie.driver=c:\Jenkins\SeleniumGrid\IEDriverServer.exe -jar c:\Jenkins\SeleniumGrid\selenium-server-standalone-2.50.0.jar -role node -hub http://192.168.3.220...4/grid/register -port 5555 -maxSession 10 -browser "browserName=firefox, version=exp_auto_1, maxInstances=10" -browser "browserName=iexplore, maxInstances=10" -browser "browserName=chrome, maxInstances=10"


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 01 февраля 2016 - 08:46

Машины мощщщные? где тесты запускаете?

Максимум 5-6 потоков надо ставить.


  • 0

#3 jurteg

jurteg

    Новый участник

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 01 февраля 2016 - 13:48

Есть Datadriven тесты и их много. Один сет на 200 второй на 500 тестов. При запуске 200 и более в параллели Grid медленно умирает. На нодах появляются браузеры и никакого движения внутри.  При запуске ~150 в параллели вроде всё работает но много тестов валятся не начавшись. Лимит на 2 нодах по 10 браузеров, т.е. 130 в ожидании сразу висят.

 

Добрый день,

во сколько потоков запускаете?


  • 0

#4 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 01 февраля 2016 - 14:06

maxInstances=10 написано же


  • 0

#5 jurteg

jurteg

    Новый участник

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 01 февраля 2016 - 14:14

maxInstances=10 написано же

Насколько я могу судить из строки конфига, то maxInstances=10 это максимаольное количество браузеров конкретного типа для нод(ы)

а я спрашивал, во сколько потоков тесты запускаются с CI или с локальной машины?

 

 Лимит на 2 нодах по 10 браузеров, т.е. 130 в ожидании сразу висят.

исходя из этого, можно сказать, что каждый тест запускается в отдельном потоке, а это сильно много


  • 0

#6 jurteg

jurteg

    Новый участник

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 01 февраля 2016 - 16:47

Запуск UI тестов в многопоточности несколько отличается от запуска бэкенд тестов, т.к. по-дефолту, скорее всего, WebDriverFactory сделает вам по одному браузеру на каждый поток. На ноде нет столько браузеров, лишние ставятся в очередь, но, похоже, что нода не выдерживает такой нагрузки.


  • 0

#7 DennisM

DennisM

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 01 февраля 2016 - 18:06

Интерестно  то, что если запустить всё на одну Ноду, то тесты проходят нормально. Похоже Грид не может аккуратно раскидать тесты на 2 ноды.
Для ограничения нагрузки на Грид, делал так же ограничение в   POM.XML. Не помогло...
Вижу решение только в уменьшении нагрузки (делать больше Джабс на Jenkins с меньшим количеством тестов в каждом) или раннить только на одной ноде. Но тогда теряется смысл Грида - раскидать тесты в параллели для уменьшения времени.
 
<build>
<plugins>
 
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
 
<includes>
<include>**/StackChecking.java</include>
</includes>
 
<parallel>all</parallel>
<threadCount>15</threadCount>
<argLine>-Xmx512m -XX:MaxPermSize=256m</argLine>
</configuration>
</plugin>
 
</plugins>
</build>

  • 0

#8 DennisM

DennisM

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 01 февраля 2016 - 18:11

Машины мощщщные? где тесты запускаете?

Максимум 5-6 потоков надо ставить.

Все виртуалки. По 8 CPU дано каждой. С 10 браузерами в параллели нагрузка 70-80%


  • 0

#9 jurteg

jurteg

    Новый участник

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 02 февраля 2016 - 13:54

<threadCount>15</threadCount>

Судя по конфигурации, у вас по 10 браузеров разного типа, т.е. 15 потоков это на 5 больше, чем может выделить хаб, при условии, если вы используете стандартный паттерн WebDriverFactory.

Т.е. вам нужно делать количество потоков не больше, чем указано здесь:

-browser "browserName=chrome, maxInstances=10


  • 0

#10 jurteg

jurteg

    Новый участник

  • Members
  • Pip
  • 61 сообщений
  • ФИО:Serhii Zharskyi

Отправлено 02 февраля 2016 - 13:56

хотя фэктори тут ни при чём, всё зависит таки от количества потоков, плагин всё сделает сам


  • 0

#11 DennisM

DennisM

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 02 февраля 2016 - 14:03

 

<threadCount>15</threadCount>

Судя по конфигурации, у вас по 10 браузеров разного типа, т.е. 15 потоков это на 5 больше, чем может выделить хаб, при условии, если вы используете стандартный паттерн WebDriverFactory.

Т.е. вам нужно делать количество потоков не больше, чем указано здесь:

-browser "browserName=chrome, maxInstances=10

 

Даже если там вот так: 
 
<parallel>all</parallel>
<useUnlimitedThreads>true</useUnlimitedThreads>
<parallelOptimized>true</parallelOptimized>
 
Результат тот же. На одной ноде всё ОК, на одновременно 2 начинает падать в случайном порядке.
 
Иногда в логе просто это:
Stacktrace java.lang.NullPointerException

 

С одной нодой этот тест проходит.


  • 0

#12 DennisM

DennisM

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 02 февраля 2016 - 17:06

Заметил в отчете что фейлятся тесты которые уже прошли. Грид выполнил тест на одной ноде и бросил на второй? О_о
 
Test Name                   Duration         Age
........ 
.......
Test6_StackMenu[3]     2 min 2 sec    1
Test6_StackMenu[3]     0 ms               1
Test6_StackMenu[0]     7 min 19 sec   1

 

Test6_StackMenu[0]     0 ms                1

......

.....


  • 0

#13 DennisM

DennisM

    Новый участник

  • Members
  • Pip
  • 55 сообщений
  • ФИО:Dennis M
  • Город:Ralegh NC, USA

Отправлено 02 февраля 2016 - 21:47

Да.... Похоже JUnit (Parameterized) не работает коректно с Selenium Grid...


  • 0



Темы с аналогичным тегами Selenium, Selenium Grid, Jenkins

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных