Skip to content

Добавить DJM контроллер для: получения состояния джоб и запуска их по требованию #98

@KuznetsovVlad

Description

@KuznetsovVlad

Контекст

Джобы DJM запускаются асинхронно согласно расписанию из настроек Zookkeeper. Вкл/выкл примерно выглядит так:

  1. Поменяли в Zk/БД
  2. В DJM сработал листенер, джоба отключается. При этом мы не можем быть уверены что предыдущий запуск завершился и после выключения джоба может еще работать какое-то время.
    Итого имеем примерно следующее: отключили джобу, но понять действительно ли джоба отключена джоба и больше нет активных запусков, мы не можем.

В рамках e2e, интеграционного, компонентного тестирования мы должны проверять функционал, в котором участвует джобы. Как правило тест выглядит следующим образом:

  1. Подготавливаем данные системы
  2. Запомнили текущее состояние системы
  3. Ожидаем выполнения сценария, в начем случае ДЖМ, т.е. должен пройти запуск джобы
  4. Проверяем изменение состояния системы после запуска джобы

В этом случае, в связи с асинхронной природой ДЖМ и тем что мы однозначно не можем программно получить состояние запуска джоб. Мы не можем быть уверенны что джоба сработает именно в п3. Это можем повлиять на то как будет выполнен сценарий.

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

На текущий момент, в тестах где требуется применение настроек и вкл/выкл джобы, реализуется следущюий подход:

  1. Отключаем джобу
  2. Выставляем настройки
  3. Включаем джобу
  4. Ставим примерную задержку, пока настройки не применяться и джоба не включиться

Такой подход не совсем надежный и может приводит что тесты буду хаотично валиться при прогонах.

Как хочется:

  1. Возможность распознать джоба полностью включена и последняя итерация выполнилась.
  2. Проводить запуск джобы по требованию. Т.е. вызываем какой-то метод, который запускат джобу по требованию
    Для этого предлагается следующее:
    Реализовать отдельный модуль в джм который предоставить данный функционал. Вывести данный метод через рест.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions