Подтвердить что ты не робот

Запуск тестового пакета с более чем миллионом тестовых примеров

У нас есть распределенная тестовая среда с сервером robotremoteserver, который запускает множество других приложений и работает с ними как часть теста. Тест, который я пытаюсь запустить, требует от меня запустить более миллиона тестовых примеров в одном пакете. Проблема здесь в том, что при запуске pybo t он блокирует 8 гигабайтов RAM и приводит к низкой производительности. Через некоторое время он замерзает.

Чтобы преодолеть эту проблему, я планировал создавать отдельные пакеты с менее чем 100 случаями в каждом. Но в этом случае я не могу использовать ключевые слова из других серверов remotes, инициированных из других наборов. Единственный способ, которым я могу это использовать, - отключить его от сервера remotes и снова подключить его в каждом пакете - что бы победить цель теста.

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

Дополнительная информация Еще одна вещь, которая поможет решить эту проблему, - это если можно вызвать ключевое слово из библиотеки (с состоянием), инициированной другим пакетом?

Можно ли использовать получить экземпляр библиотеки при использовании RIDE? Я импортирую библиотеку в один пакет, а затем попытаюсь получить экземпляр библиотеки в другом пакете. Это возможно?

Я продолжаю получать следующую ошибку:

AttributeError: удаленный экземпляр не имеет атрибута 'replace'

В Suite 1 это то, что я делаю:

Import Library  Remote  ${verifix_xmlrpc_url}   WITH NAME   Verifix
${lib}= BuiltIn.Get Library Instance    Verifix 
Set Global Variable ${lib}

В Suite 2:

${lib}.remove messages  ${VenueNSDQ}
4b9b3361

Ответ 1

Я не знаю каких-либо специфических особенностей python, но то, что вы можете попробовать, - это развернуть каждый тестовый пример как отдельный процесс. Это позволит вам восстановить память из каждого процесса по мере его завершения и может позволить вам безопасно запускать миллион тестовых случаев на одной машине.

Как правило, когда программе требуется больше памяти из ОС, она берет ее, но она не может вернуть ее, пока она не выйдет. Вероятно, поэтому ваш процесс падает.

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

Я надеюсь, что это поможет немного.

Ответ 2

Ok. Во-первых, я не программирую на python, и я также не знаю, какие компьютеры вы используете или сколько памяти у компьютера или что-то еще о вашей ситуации с вашим компьютером (ами). Таким образом, это просто общая информация, полученная от написания системных программ и работы на нескольких компьютерах.

Сказав это: если вы собираетесь запускать огромные массивы данных или огромное количество программ, вам придется разделить то, что вы хотите сделать, чтобы оно вписывалось в используемые вами системы (ы). Это первая часть. Вторая часть заключается в том, что если вы хотите поговорить о программах с другими программами или системами, вам необходимо настроить некоторый тип общего использования памяти. Я знаю, что у PHP есть такая вещь, встроенная в него, поэтому я должен предположить, что у Python тоже есть такая вещь. Вы настраиваете общую область памяти, а затем отправляете информацию между различными программами. Обычно используют те или иные формы токенов для идентификации каждой программы и/или системы. Таким образом, вы можете настроить все так, как только один набор тестов будет завершен, он может сказать, что следующий набор начнется и, таким образом, не возьмет на себя или не испортит вашу систему.

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

Если вы используете окно windows/os, я бы предложил посмотреть AutoIt. AutoIt может легко справиться с просмотром запуска программы и запуском новой задачи после завершения старой задачи. Он также позволяет вам полностью контролировать как вашу систему, так и удаленную систему и был разработан, чтобы помочь автоматизировать такие задачи, как то, что вы пытаетесь сделать. Я обнаружил (экспериментируя), что AutoIt также может использоваться с ящиками Unix/Linux, такими как Mac и другие. Хотя вы только тогда имеете команды, которые вы отправляете, а не доступ к функциям Windows.

Если вы более опытны с Python, вы можете сделать это, используя его, - тогда вам больше силы. Хотя прошло уже два года с тех пор, как вы спросили об этом, я надеюсь, что это поможет вам в ваших начинаниях.: -)