У меня есть около 130 тестов салата, которые отлично работают локально, но когда Трэвис запускает их, он зависает после нескольких тестов.

Здесь тесты не проходят в 8-м сценарии: https://travis-ci.org/ h3 / django-editlive / jobs / 3945466

И когда я удаляю последний сценарий, он проходит: https://travis-ci.org / h3 / django-editlive / builds / 3945648

Я попытался разделить свои тесты на отдельные файлы функций, та же проблема.

Похоже, это вызвано не конкретным сценарием, а количеством выполненных сценариев.

Согласно документам Трэвиса:

  • Ожидание ввода с клавиатуры или другого взаимодействия с человеком
  • Проблемы параллелизма (взаимоблокировки, живые блокировки и т. Д.)
  • Установка собственных расширений, компиляция которых занимает очень много времени

Единственная возможность, которую я мог видеть, - это проблема параллелизма ... но как я могу отладить ее?

Мой проект с открытым исходным кодом, поэтому весь исходный код доступен здесь:

2
h3. 4 Янв 2013 в 10:54

1 ответ

Лучший ответ

У меня нет однозначного ответа о проблеме, но мне удалось ее обойти.

Поскольку у меня вообще не было вывода, я попытался связать свои тесты, чтобы я мог точно видеть, где он висит.

Но вывод strace был слишком сильно обрезан Трэвисом .. Так что мне пришлось использовать grep -v несколько строк.

Вот как это выглядит в моем файле .travis.yml:

script:
  - "strace -q python project/manage.py harvest 2>&1 | grep -v ENOENT"

ENOENT означает «Нет такого файла или каталога», мне это действительно не нужно, чтобы понять вывод strace, и он вырезает достаточно строк, чтобы я мог видеть, где он завис.

Оказывается, зависал на запросе к селену:

socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(35146), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
send(4, "POST /hub/session/e7cba641-2842-"..., 359, 0) = 359

На самом деле я не мог заменить селен, поэтому я сделал безумную догадку и заменил firefox на google chrome, чтобы запустить свой тест ... и вуаля. Тесты прошли отлично.

Отстойно, что я действительно не решил проблему, но удаленная отладка на travis ci - это в лучшем случае PITA. А так как время ожидания между итерациями составляет 35 минут, у меня есть дела поважнее.

4
h3. 5 Янв 2013 в 07:50