Перейти к содержимому

Фотография

Запуcк сценария по крону ubuntu


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 20

#1 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 26 ноября 2018 - 15:38

Здравствуйте!
Столкнулся с проблемой. Есть задача запускать сценарий по крону (создание заказа).
Научился запускать из консоли в режиме nonGUI. Все работает, заказ создается.
Но по крону не хочет создавать заказ. Весь инет перерыл, но только зарылся, как мне кажется.
Запуск по крону произвожу на локальной машине. Никаких удаленных серверов и тому подобное. Простой крон.

 

* * * * * cd /home/TESTNAME/apache-jmeter-5.0/bin && jmeter -n -t /home/TESTNAME/Order_to_shop1004_authorization_preprod1_new.jmx -l /home/file_test.log

В логе вижу следующее:
 

Creating summariser <summary>
Created the tree successfully using /home/TESTNAME/Order_to_shop1004_authorization_preprod1_new.jmx
Starting the test @ Mon Nov 26 18:04:02 MSK 2018 (1543244642178)
Waiting for possible shutdown message on port 4455
summary +      1 in     1s =    1,7/s Avg:   578 Min:   578 Max:   578 Err:     0 (0,00%) Active: 1 Started: 1 Finished: 0
summary +      6 in     2s =    4,0/s Avg:   241 Min:    62 Max:   567 Err:     0 (0,00%) Active: 0 Started: 1 Finished: 1
summary =      7 in   2,1s =    3,3/s Avg:   289 Min:    62 Max:   578 Err:     0 (0,00%)
Tidying up ...    @ Mon Nov 26 18:04:04 MSK 2018 (1543244644889)
... end of run

Заказ по сценарию не создается... 
Jmeter GUI закрыт. Никаких графиков в сценарии нет.
Ubuntu 16.04
Jmeter 5.0 GUI
jmeter в консоли имеет версию 2.11.20151206 (что-то мне подсказывает, что здесь что-то не так)
Подскажите кто чем может!


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 28 ноября 2018 - 08:49

А с чего вы взяли что ваш тест стабилен в плане корректности создания заказа?

По логу видно что тест прошел 7 раз - ошибок нет. Все вопросы к тесту.


  • 0

#3 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 28 ноября 2018 - 08:51

Как вы проверяете что заказ создался?

Надо добавлять какой-нить ассерт в ответе от сервера при отправке запроса на создание, у вас это есть в самом тесте? Что возвращает сервер если заказ не создался?

Вы проверили вариант если что-то некорректно в запросе на создание?


  • 0

#4 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 28 ноября 2018 - 08:57

Как вы проверяете что заказ создался?

Надо добавлять какой-нить ассерт в ответе от сервера при отправке запроса на создание, у вас это есть в самом тесте? Что возвращает сервер если заказ не создался?

Вы проверили вариант если что-то некорректно в запросе на создание?

Я могу убедиться в корректности сценария путем проверки сформировавшегося заказа в административной панели.
Когда я запускаю сценарий в GUI или вручную в консоли в режиме noGUI, то вижу что заказы создались в админке.
Когда запускаю по крону, заказы не формируются (в админке нет записи о заказе).


  • 0

#5 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 28 ноября 2018 - 09:39

я не хочу быть "тем самым" парнем, но крон вам не нужен

 

вам нужен ЦИ сервер типа Дженкинса, и на нём уже запускайте свой тест

 

ну и конечно Джейметер вам не нужен тоже, так как тест не нагрузочный а функциональный. просто напишите его на любой библиотечке типа REST Assured


  • 0

#6 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 28 ноября 2018 - 10:05

Ну хорошо, а от какого юзера вы запускаете руками jmeter? А когда крон запускается?

Возможно, надо явно указать крону этого юзера?

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


  • 0

#7 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 28 ноября 2018 - 10:15

я не хочу быть "тем самым" парнем, но крон вам не нужен

 

вам нужен ЦИ сервер типа Дженкинса, и на нём уже запускайте свой тест

 

ну и конечно Джейметер вам не нужен тоже, так как тест не нагрузочный а функциональный. просто напишите его на любой библиотечке типа REST Assured

Не хотите быть - не будьте!

Вы не знаете какую задачу решает топикстартер, но знаете что ему надо.


  • 0

#8 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 28 ноября 2018 - 10:20

Начнем с простого: командный процессор никогда не ищет исполняемый файл в текущей папке, он его ищет в path. Так что укажите путь явно, перед jmeter в команде крона поставьте ./

Это должно решить проблему странной версии jmeter (где-то в путях лежит старый jmeter)

Ну и упреждающий вопрос. Это крон пользователя или системный?


  • 0

#9 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 28 ноября 2018 - 10:29

 

Не хотите быть - не будьте!

Вы не знаете какую задачу решает топикстартер, но знаете что ему надо.

вообще я догадываюсь с достаточно высокой степенью уверенности

 

и так же знаю что крон это крайне ненадёжное и неудобное решение по сравнению с ЦИ сервером

 

в 99% случаев крон надо менять на ЦИ сервер, и в 1% крон это "нужное и важное решение". так что тут угадать достаточно легко


  • 0

#10 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 28 ноября 2018 - 11:06

Ну хорошо, а от какого юзера вы запускаете руками jmeter? А когда крон запускается?

Возможно, надо явно указать крону этого юзера?

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

Юзер один и тот же.
Других юзеров нет.
Нет необходимости тестировать само формирование заказа. Задача - создавать заказы каждый час. Мне просто нужны заказы в ночное время. 


  • 0

#11 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 28 ноября 2018 - 11:07

я не хочу быть "тем самым" парнем, но крон вам не нужен

 

вам нужен ЦИ сервер типа Дженкинса, и на нём уже запускайте свой тест

 

ну и конечно Джейметер вам не нужен тоже, так как тест не нагрузочный а функциональный. просто напишите его на любой библиотечке типа REST Assured

Дело в том, что у меня уже были наработки по части создания заказа и я решил использовать то, что есть. А с Дженкинсом никогда не сталкивался.


  • 0

#12 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 28 ноября 2018 - 11:19

Начнем с простого: командный процессор никогда не ищет исполняемый файл в текущей папке, он его ищет в path. Так что укажите путь явно, перед jmeter в команде крона поставьте ./

Это должно решить проблему странной версии jmeter (где-то в путях лежит старый jmeter)

Ну и упреждающий вопрос. Это крон пользователя или системный?

Попробовал ./jmeter - нет результатов.
Крон пользовательский.


  • 0

#13 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 28 ноября 2018 - 11:24

Возможно это поможет локализовать причину:
Дело в том, что скрипт selenium на python у меня тоже не запускается на локальной машине по крону. А вот тот же крон, но с настройками в коде скрипта, чтобы скрипт запускался на виртуальной машине (использую selenium server) - это работает, скрипт запускается. 
Может какие-то права?..


  • 0

#14 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 28 ноября 2018 - 13:22

 

 

Не хотите быть - не будьте!

Вы не знаете какую задачу решает топикстартер, но знаете что ему надо.

вообще я догадываюсь с достаточно высокой степенью уверенности

 

и так же знаю что крон это крайне ненадёжное и неудобное решение по сравнению с ЦИ сервером

 

в 99% случаев крон надо менять на ЦИ сервер, и в 1% крон это "нужное и важное решение". так что тут угадать достаточно легко

 

На минуточку, крон - это нативный шедуллер *nix, ему уже без малого 50 лет и все эти годы он исправно работает на каждой *nix машине, от суровых мэйнфреймов 70-х до распоследнего макбука. Даже если пользователь о нем не знает.
и запускать для задачи периодического запуска чего-либо CI, который жрет ресурсы и регулярно падает. это слегка оверкил.

 

В 100% случаев надо помнить, что ваш личный опыт вряд-ли покрывает 10% возможных вариантов задач и решений в IT. Поэтому свою уверенность хорошо бы сначала поделить на 10, а потом из этой позы уточнять какую задачу и в каком окружении решает автор.


  • 1

#15 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 28 ноября 2018 - 13:31

Возможно это поможет локализовать причину:
Дело в том, что скрипт selenium на python у меня тоже не запускается на локальной машине по крону. А вот тот же крон, но с настройками в коде скрипта, чтобы скрипт запускался на виртуальной машине (использую selenium server) - это работает, скрипт запускается. 
Может какие-то права?..

если пользователь тот-же то врят-ли права, скорее может сказываться отсутствие интерактиваного шелла:

1) проверить переменные окружения критичные для jmeter, как они видны из крона, типа JAVA_HOME, они часто устанавливаются при запуске интерактивного шелла в .bashrc

https://unix.stackex...hell-sh-to-bash .   почитай комменты под ответом

2) как вариант попробовать вариант с явным перенаправлением stdout в файл

3) или с nohup.


  • 0

#16 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 28 ноября 2018 - 14:10

 

 

На минуточку, крон - это нативный шедуллер *nix, ему уже без малого 50 лет и все эти годы он исправно работает на каждой *nix машине, от суровых мэйнфреймов 70-х до распоследнего макбука. Даже если пользователь о нем не знает.
и запускать для задачи периодического запуска чего-либо CI, который жрет ресурсы и регулярно падает. это слегка оверкил.

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

 

тут действительно ЦИ лишний


  • 0

#17 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 29 ноября 2018 - 16:06

надо бы посмотреть jmx =) хотябы древо визуально, может вы там ссылаетесь на файл которого в консоле не видно


  • 0

#18 BadMF

BadMF

    Специалист

  • Members
  • PipPipPipPipPip
  • 809 сообщений
  • ФИО:Dmitry Petrov

Отправлено 29 ноября 2018 - 16:07

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


  • 0

#19 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 03 декабря 2018 - 16:32

Я весьма слабо в этом разбираюсь и подсказать мне в этом некому на работе (ну точнее некогда, наверно). Прошу вашей помощи.
Вот что я взял из системного лога.
 

Dec  3 19:18:46 sergey-MS-7758 kernel: [17484.648846] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:18:50 sergey-MS-7758 kernel: [17488.653030] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:18:54 sergey-MS-7758 kernel: [17492.653666] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:18:58 sergey-MS-7758 kernel: [17496.657560] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:01 sergey-MS-7758 cron[835]: (sergey) RELOAD (crontabs/sergey)
Dec  3 19:19:01 sergey-MS-7758 CRON[27650]: (sergey) CMD (./jmeter -n -t /home/sergey/arom/AROM_cases/Order_to_shop1004_authorization_preprod1_new.jmx  > /home/sergey/file_test.log >/dev/null 2>&1)
Dec  3 19:19:02 sergey-MS-7758 kernel: [17500.661939] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:06 sergey-MS-7758 kernel: [17504.665111] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:10 sergey-MS-7758 kernel: [17508.665926] intel_pstate: Turbo disabled by BIOS or unavailable on processor
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: supervisor.service: Service hold-off time over, scheduling restart.
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: Stopped Supervisor process control system for UNIX.
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: Started Supervisor process control system for UNIX.
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]: Traceback (most recent call last):
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/bin/supervisord", line 5, in <module>
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     from pkg_resources import load_entry_point
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     @_call_aside
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     f(*args, **kwargs)
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     working_set = WorkingSet._build_master()
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 635, in _build_master
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     ws.require(__requires__)
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 943, in require
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     needed = self.resolve(parse_requirements(requirements))
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 829, in resolve
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]:     raise DistributionNotFound(req, requirers)
Dec  3 19:19:10 sergey-MS-7758 supervisord[27655]: pkg_resources.DistributionNotFound: The 'supervisor==3.2.0' distribution was not found and is required by the application
Dec  3 19:19:10 sergey-MS-7758 systemd[1]: supervisor.service: Main process exited, code=exited, status=1/FAILURE
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]: Traceback (most recent call last):
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/bin/supervisorctl", line 5, in <module>
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     from pkg_resources import load_entry_point
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2927, in <module>
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     @_call_aside
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2913, in _call_aside
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     f(*args, **kwargs)
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2940, in _initialize_master_working_set
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     working_set = WorkingSet._build_master()
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 635, in _build_master
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     ws.require(__requires__)
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 943, in require
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     needed = self.resolve(parse_requirements(requirements))
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:   File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 829, in resolve
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]:     raise DistributionNotFound(req, requirers)
Dec  3 19:19:11 sergey-MS-7758 supervisorctl[27658]: pkg_resources.DistributionNotFound: The 'supervisor==3.2.0' distribution was not found and is required by the application
Dec  3 19:19:11 sergey-MS-7758 systemd[1]: supervisor.service: Control process exited, code=exited status=1
Dec  3 19:19:11 sergey-MS-7758 systemd[1]: supervisor.service: Unit entered failed state.
Dec  3 19:19:11 sergey-MS-7758 systemd[1]: supervisor.service: Failed with result 'exit-code'.
Dec  3 19:19:14 sergey-MS-7758 kernel: [17512.670071] intel_pstate: Turbo disabled by BIOS or unavailable on processor

Могу приложить скриншот дерева, если это поможет. Файл сбросить не могу, боюсь попасть под "разглашение". 
http://joxi.ru/L21GZEoF8MGvqr
Никаких графиков внутри нет. Есть только авторизация на сервере ну и дальше пользовательская авторизация на сайте, добавление товара в корзину, выбор магазина на чекауте и оформление заказа.
Напомню, что вручную в клиентском приложении все ок, в консоли вручную тоже все ок, а по крону увы..


  • 0

#20 SergeyQA

SergeyQA

    Новый участник

  • Members
  • Pip
  • 23 сообщений
  • ФИО:Пронякин Сергей
  • Город:Москва

Отправлено 03 декабря 2018 - 16:54

Коллеги, проблема решена!
В кроне правильно писать так:
*/1 * * * * cd /home/sergey/Рабочий\ стол/apache-jmeter-5.0/bin && ./jmeter -n -t /home/sergey/arom/AROM_cases/Order_to_shop1004_authorization_preprod1_new.jmx > /home/sergey/file_test.log 2>&1

Первое - это надо было обязательно перейти в папку с Jmeter, а уже оттуда его запускать.
Второе - в конце строки прописать перенаправление (если я правильно понял) 2>&1

Ура!
Всем большое спасибо за помощь! 


  • 2


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных