Как я пишу интеграционные тесты на задания крона?

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

Однако необходимо удостовериться, что отключили вход в систему как корневую опцию в конфигурации sshd после того, как Вы создали своего пользователя и дали ему sudo полномочия.

Я также рекомендую изменить порт SSH на что-то другое, чем 22. В то время как это не делает Вашу машину более безопасной - это действительно останавливает все те расточительные/раздражающие запросы.

6
задан 15 September 2011 в 17:51
2 ответа

Лучше всего проводить все тестирование в среде разработки (что вы, кажется, уже знаете).

Что касается тестирования заданий cron, я обычно не люблю возиться с системой часы (вы не можете просто переключать время туда, куда хотите - вам нужно дать часам пройти через все точки, чтобы увидеть, как задания выполняются и взаимодействуют друг с другом.
Вы также не можете просто ускорить часы (x100), чтобы сделать его быстрее: задания cron, которые выполняют много вычислений, не будут быстрее, и вы можете заставить их наступать на себя (или друг друга) в зависимости от того, что расписание выглядит так.

Мой стандарт тестирования заданий cron следующий:

  1. Протестируйте задание, запустив его вручную.
    Отлаживайте, к черту, здесь, чтобы позже вас не забросали электронной почтой cron.
  2. Установите задание, запланируйте его запуск через 2-3 минуты.
    • Наблюдайте за результатами, запущенными из cron (без tty).
  3. Прервите то, на что полагается задание, и запланируйте его повторный запуск через несколько минут.
    • Наблюдайте за реакцией на поломку (убедитесь, что она делает то, что вы хотите).
  4. Если задание выполняется нормально в (2) и (3), запланируйте его выполнение в обычное время.
    • Наблюдайте за результатами выполнения задания в обычное время.
    • Если задание выполняется нормально, продвигайте изменение в производство.

На практике вы можете иногда пропустить шаг 4 (если вы ЗНАЕТЕ что задание не влияет на другие задания, и вы не беспокоитесь о проблемах загрузки ЦП / ОЗУ / диска).


Чтобы действительно выполнить интеграционный тест заданий cron, вы должны позволить год (переход на летнее время), и можно даже привести аргумент в пользу необходимости более 4 лет (високосные годы, високосные секунды и т. д.), но никто из моих знакомых не делает этого. Просто имейте в виду, что иногда 2:30 бывает более одного раза (или не бывает вообще), и что не всегда бывает 29 февраля, и обычно у вас все в порядке.

10
ответ дан 3 December 2019 в 00:10
  1. Запустить его из командной строки как пользователь, чей привилегия, с которой вы хотите работать.
  2. Всегда помните, что вы должны использовать полный путь в crontab: -
     * * * * * / путь / к / вашему / заданию >> /tmp/job.log 2> & 1 
  3. Проверьте журнал job.log .
2
ответ дан 3 December 2019 в 00:10

Теги

Похожие вопросы