vladignatyev / majorka

0 stars 0 forks source link

Доработать data.framework чтобы гарантировать целостность данных при выполнении интеграционных тестов #23

Open vladignatyev opened 5 years ago

vladignatyev commented 5 years ago

Все тесты фреймворка data.framework, которые делаются в проекте и «дергают» базу, предупреждают об опасности при запуске и не позволяют запустить их «как есть» с продакшен параметрами окружения. Вместо этого используются тестовые параметры окружения для соединения с Кликхаузом и Редисом.

Проблема в том, что человеческий фактор всё равно имеет место. Можно было бы устранить его, если бы код дата фреймворка мог изолировать INSERT, ALTER, CREATE SQL-запросы для базы, которая указана при создании соединения.

К сожалению, я не смог разобраться как этого достичь не парся сам SQL-запрос (который потенциально может содержать ошибку: например, соединение создано для базы test, а в тексте SQL-запроса написано INSERT INTO production.table ...;). Проблема в том, что через REST API Кликхауз не поддерживает сессии. Однако, позже я заметил что Tabix как-то понимает контекст запроса и если я пишу SELECT * FROM table, запрос выполняется на выбранной базе test, как и ожидается. Однако Tabix очень навороченный проект, и там вполне может быть синтаксический анализатор SQL. Не хотелось бы его тащить в проект/делать/создавать.

Требуется

  1. Детальнее изучить вопрос, описанный выше
  2. Спрототипировать солюшен и внедрить его в data.framework, а также покрыть тестами сценарий описанный выше.
  3. Убедиться что цель достигнута: любой код использующий data.framework должен иметь возможность записывать только в ту базу, которая указана при создании соединения.