Files
clickstream-ch-kafka-supers…/scripts/run_generator.sh
T
ddadmin 9b0b063fed fix(generator): усилены проверки startup-history
- Зачем:
  - коммит-гейт не запускал корневые контрактные тесты, а часть подтверждённых обходов могла снова смешать разные миры генератора.
- Что:
  - добавлены цели make test, make lint и contract-test с тихим pytest-выводом через Docker.
  - закрыты обходы через generator-reset, неизвестную версию state и fail-open проверку DM-витрин.
  - усилены поведенческие контракты CHECK_LIVE_SEAM, профиля manifest и pause-check etl_pipeline; обновлены документы и issue 19.
- Проверка:
  - make test; make lint; git diff --check.
2026-07-05 22:46:53 +03:00

99 lines
3.1 KiB
Bash

#!/usr/bin/env bash
#
# Запускает генератор через понятные глаголы поверх старых env-переменных.
set -euo pipefail
if [[ $# -ne 1 ]]; then
echo "Использование: $0 backfill|continue|reset" >&2
exit 2
fi
VERB="$1"
case "${VERB}" in
backfill|continue|reset) ;;
*)
echo "Ошибка: неизвестный глагол запуска: ${VERB}" >&2
exit 2
;;
esac
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)"
COMPOSE_BIN="${COMPOSE_BIN:-docker compose}"
PROFILE="${PROFILE:-${GEN_LAUNCH_PROFILE:-ci}}"
duration_args=()
if [[ -n "${GEN_HISTORY_DURATION:-}" ]]; then
duration_args=(--duration "${GEN_HISTORY_DURATION}")
fi
cd "${REPO_ROOT}"
launch_env="$(
PYTHONPATH="${REPO_ROOT}/generator/src" \
uv run python -m clickstream_generator.launch \
"${VERB}" \
--profile "${PROFILE}" \
"${duration_args[@]}"
)"
eval "${launch_env}"
echo "=== Запуск генератора: ${GEN_LAUNCH_VERB} ==="
echo "GEN_LAUNCH_PROFILE=${GEN_LAUNCH_PROFILE}"
if [[ -n "${GEN_HISTORY_DURATION:-}" ]]; then
echo "GEN_HISTORY_DURATION=${GEN_HISTORY_DURATION}"
fi
echo "GEN_RUN_MODE=${GEN_RUN_MODE}"
echo "GEN_STATE_RESET=${GEN_STATE_RESET}"
if [[ -n "${GEN_MODEL_T_END:-}" ]]; then
echo "GEN_MODEL_T_END=${GEN_MODEL_T_END}"
fi
echo ""
if [[ "${VERB}" == "backfill" ]]; then
echo "Шаг 1: запуск Kafka и ClickHouse"
${COMPOSE_BIN} up -d kafka clickhouse
echo "Шаг 2: предпроверка чистого стенда"
bash "${SCRIPT_DIR}/assert_stand_clean.sh" clean
echo "Шаг 3: сборка образа генератора"
${COMPOSE_BIN} build generator
echo "Шаг 4: backfill стартовой истории"
${COMPOSE_BIN} run --rm --no-deps \
-e GEN_RUN_MODE="${GEN_RUN_MODE}" \
-e GEN_STATE_RESET="${GEN_STATE_RESET}" \
-e GEN_LAUNCH_PROFILE="${GEN_LAUNCH_PROFILE}" \
-e GEN_SEED="${GEN_SEED}" \
-e GEN_MODEL_T0="${GEN_MODEL_T0}" \
-e GEN_MODEL_T_END="${GEN_MODEL_T_END}" \
-e GEN_MODEL_TIMEZONE="${GEN_MODEL_TIMEZONE}" \
-e GEN_MODEL_TIME_SPEED="${GEN_MODEL_TIME_SPEED}" \
-e GEN_TICK_SECONDS="${GEN_TICK_SECONDS}" \
-e GEN_LAMBDA_BASE_PER_MIN="${GEN_LAMBDA_BASE_PER_MIN}" \
-e GEN_JITTER_PCT="${GEN_JITTER_PCT}" \
-e GEN_MIN_EVENTS_PER_TICK="${GEN_MIN_EVENTS_PER_TICK}" \
-e GEN_MAX_EVENTS_PER_TICK="${GEN_MAX_EVENTS_PER_TICK}" \
generator
elif [[ "${VERB}" == "continue" ]]; then
echo "Шаг 1: запуск Kafka и ClickHouse"
${COMPOSE_BIN} up -d kafka clickhouse
echo "Шаг 2: проверка state или чистого стенда"
bash "${SCRIPT_DIR}/assert_stand_clean.sh" continue
echo "Шаг 3: запуск live-генератора"
${COMPOSE_BIN} up -d --build generator
else
echo "Шаг 1: запуск Kafka и ClickHouse"
${COMPOSE_BIN} up -d kafka clickhouse
echo "Шаг 2: предпроверка чистого стенда"
bash "${SCRIPT_DIR}/assert_stand_clean.sh" clean
echo "Шаг 3: запуск live-генератора"
${COMPOSE_BIN} up -d --build generator
fi