2017-02-11 10 views
2

Транспортир вешает бесконечно при запуске сотни тестов, для выполнения которых требуется более 6 часов. Иногда (очень редко) мы наблюдаем это поведение с заданиями, которые также занимают 30 минут.Транспортир вешает бесконечно при запуске сотни тестов, для выполнения которых требуется более 6 часов.

У нас задано задание jenkins для запуска около 1000 тестов с включенными параметрами shardTestFiles и max, установленными в 10. Работа всегда застревает, говоря, что 1 или 2 экземпляра webdriver все еще запущены.

Если мы подключаемся к тестовым машинам с удаленным Windows, мы увидим 2 или 3 процесса nodejs, работающие с 0% CPU. Об убийстве этих рабочих процессов завершается без создания Junit xml.

Висячая проблема постоянно рассматривается для всех заданий, которые работают более 6 часов. Пожалуйста, предложите решение для этого.

Использование серверных машин Windows 2012R2 и windows 2016 с транспортиром 4.0.14, nodejs 6.9.5 и firefox 41.0.2. Наблюдение за тем же самым поведением с последним транспортиром 5.0.0.

Мы установили ниже параметров в конф файле:

  1. jasmineNodeOpts:

    { showColors: правда, defaultTimeoutInterval: 600000 }

  2. allScriptsTimeout: 600000

  3. ignoreUncaughtExceptions: true
  4. возможности:

    { 'browserName': 'светлячок', 'версия': 'ЛЮБОЙ', shardTestFiles: правда, MaxInstances: 10, }

  5. browser.ignoreSynchronization: истинные

  6. restartBrowserBetweenTests: истинные

ответ

2

Поскольку мой ответ указывает на то, горшок связанные с устранением неполадок с тем, что вы описали выше, я включил его в часть ответа.

  1. У меня есть забота о ваших 1000 тестах. Это много тестов e2e. Ваши тесты не предназначены для замены модульных тестов, а для того, чтобы дать положительный сигнал, что, как пользователь, интеграция сервисов и угловых работ. Кроме того, тесты e2e могут быть шелушатся, потому что вы используете драйверы, файловую систему, браузеры и вашу страницу с угловым выражением. Есть много вещей, которые могут пойти не так. Я думаю, вы должны отключить некоторые из этих тестов, чтобы найти те тесты, которые вызывают хлопья.
  2. Вы запускаете 10 экземпляров параллельно. Вы должны спросить себя, разумно ли это на машине, на которой вы работаете. При запуске экземпляра Firefox вы запускаете не просто новое окно, а совершенно новый экземпляр Firefox. Я бы предложил 3 или 4 максимум.
  3. Если вы устанавливаете ignoreSynchronization в значение true, вы должны обрабатывать логику ожидания. Если вы тестируете страницу «Угловая», я бы предложил оставить это как ложное, чтобы позволить встроенному waitForAngular выполнить свою задачу.
  4. Если в ваших тестах действительно используется встроенная логика waitForAngular (что для вас делает Протранслятор), это может быть хлопья. Увеличение allScriptTimeouts потенциально маскирует некоторую ошибку в вашей тестовой логике.
  5. Перезапуск браузера между тестами может привести к значительным задержкам. Если вам не нужно перезапускать браузер, я бы избегал этого.
1

Я не согласен ни с чем в ответе @ cnishina. Такое поведение обычно происходит из-за отсутствия процессора/бара на машине. Я бы отрезал путь назад на maxInstances и посмотреть, действительно ли это проблема.