(обратите внимание, я сомневаюсь, что это относится только к PyQt, поэтому я с тегами Qt тоже)PyQt набор тестов не может загадочно Дженкинс, работает безотказно из командной оболочки Windows,
У нас есть 2 тестовых наборов (назовем их А и B), что мы бежим с pytest на наших Девы рабочих станциях:
python -m pytest -c configfile -s -v A
python -m pytest -c configfile -s -v B
Suite B (и только один на один) проверяет наши компоненты PyQt; В нем нет PyQt. Мы определили проект A в Jenkins (версия 1.658 битвы) для запуска Suite A: он работает без проблем в Jenkins. Мы сделали то же самое, определили проект B в Jenkins, чтобы запустить Suite B: после многих тестов он прерывается с сообщением журнала SYSTEM и сообщением WARNING из Qt (поймано путем установки обработчика через QtCore.qInstallMessageHandler()
). Журнал Дженкинс, который захватывает стандартный вывод тестового набора B является:
SYSTEM log message from Qt: WindowCreationData::create: CreateWindowEx failed (Not enough storage is available to process this command.)
WARNING log message from Qt: Failed to create platform window for QWidgetWindow(0x705d260, name="FramedPartWidgetWindow") with flags QFlags<Qt::WindowType>(Window|WindowTitleHint|WindowSystemMenuHint|WindowMinMaxButtonsHint|WindowCloseButtonHint|WindowFullscreenButtonHint) (context: category=default)
Build step 'Execute Windows batch command' marked build as failure
Последняя строка выводится Дженкинс сценарий запуска набора тестов B.
На машине Дженкинс (Про 64-битную платформу Windows 7, btw), который запускает тестовые наборы, я могу открыть командную оболочку Windows, и, если я буду запускать тестовые пакеты, оба тестовых набора запускаются без проблем. Затем я открываю веб-браузер, перехожу на страницу проекта Jenkins для пакета B и нажимаю «Build now»: это выполняется так же, как я запускал из командной оболочки, но получаю вышеуказанную ошибку. Если я сделаю 10 сборок, то это будет происходить для разных тестов каждый раз, хотя всегда в одной и той же «области». Если я отфильтровываю тесты в непосредственной близости от места происшествия, тест проходит дальше, но после удаления 4 классов тестов этот способ больше не помогает.
Проблема не в рабочем столе, поскольку я вошел в систему. Одна разница между запуском командной оболочки и запуском Jenkins заключается в том, что из оболочки тестовый набор B открывает многие окна (PyQt) и закрывает их. От Дженкинса я не вижу открытых окон, поэтому они, кажется, открываются на каком-то «виртуальном» рабочем столе. Так что, может быть, проблема на рабочем столе. Нужно ли мне каким-то образом настроить этот виртуальный рабочий стол для увеличения емкости графики?
Ошибка, похоже, указывает на то, что процесс, запущенный Jenkins, заканчивается из некоторого ресурса, но неясно, что: в нем много места на диске и памяти.
У кого-нибудь есть идея, куда идти дальше? Я сделал поиск Google и все, что я мог бы найти в них, они не выглядят слишком многообещающими, хотя я попробую предложения:
- Developer Central
- Not enough storage is available to process this command
- Win32Exception Not enough storage is available to process this command
Я m не знакомы с тонкостями того, как работает Jenkins-служба на Windows, поэтому я в недоумении.
Обновление 20161219: По-видимому, это известные проблемы с тестированием графического интерфейса пользователя из служб Windows, см. my post on Bitnami Jenkins forum.
Вы рассматривали документы перед тем, как спросить об этом? – alphanumeric
@alphanumeric очень смешно, тем более, если вы сравните поиск [scrollToItem] (http://doc.qt.io/qt-5/qlistwidget.html#scrollToItem) из [QListWidget] (http://doc.qt.io /qt-5/qlistwidget.html), чтобы найти [Проверка GUI в Windows] (https://wiki.jenkins-ci.org/display/JENKINS/Tomcat) из [Установка Windows] (https: //wiki.jenkins -ci.org/display/JENKINS/Installing+Jenkins) (не говоря уже о https://bitnami.com/stack/jenkins, что и было дано нам). – Schollii