У меня есть около 130 тестов салата, которые отлично работают локально, но когда Трэвис запускает их, он зависает после нескольких тестов.
Здесь тесты не проходят в 8-м сценарии: https://travis-ci.org/ h3 / django-editlive / jobs / 3945466
И когда я удаляю последний сценарий, он проходит: https://travis-ci.org / h3 / django-editlive / builds / 3945648
Я попытался разделить свои тесты на отдельные файлы функций, та же проблема.
Похоже, это вызвано не конкретным сценарием, а количеством выполненных сценариев.
Согласно документам Трэвиса:
- Ожидание ввода с клавиатуры или другого взаимодействия с человеком
- Проблемы параллелизма (взаимоблокировки, живые блокировки и т. Д.)
- Установка собственных расширений, компиляция которых занимает очень много времени
Единственная возможность, которую я мог видеть, - это проблема параллелизма ... но как я могу отладить ее?
Мой проект с открытым исходным кодом, поэтому весь исходный код доступен здесь:
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 минут, у меня есть дела поважнее.
Похожие вопросы
Новые вопросы
django
Django - это серверная платформа веб-приложений с открытым исходным кодом, написанная на Python. Он разработан для сокращения усилий, необходимых для создания сложных веб-сайтов и веб-приложений, управляемых данными, с особым упором на меньшее количество кода, отсутствие избыточности и более явное, чем неявное.