powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужны идеи- интеграционные тесты и read-only окружение
24 сообщений из 24, страница 1 из 1
Нужны идеи- интеграционные тесты и read-only окружение
    #39109084
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Есть некое приложение, интерфейс к которому отдельный, дёргает приложение через RMI.
Есть для него интеграционные тесты- запускается приложение, затем к нему через те же RMI посылаются команды. Приложение честно считает, что работает в production и потому тесты достоверные.

Хочется дописать тесты на БД клиентов (приложение- SaaS, так что проблем нет), но оно запускается на реплике-бэкапе основной базы, которая read only. На уровне прав доступа приложения.

Понятное дело, что тесты не все. Но проблема в том, что действия всё равно логируются, и иногда выставляются локи в БД. Т.е. для любой операции есть некоторые записи. На тестах они не нужны. Но как правильно и красиво внедрить это в код?

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

Сделать так, чтобы при ошибки записи в лог "нет прав" ошибка глоталась (любая запись ERROR в лог роняет интеграционный тест) - тоже бред. Мало ли что там. Кроме того, локи в БД идентифицируются по ID (пока сделал простой автоинкремент, но смотрится это плохо)- надо не просто игнорировать ошибку записи, но ещё и сделать фейковый ID.

Есть ли красивое решение этой проблемы? Надо минимизировать изменения кода для надёжности тестирования, но изменения нужны...

--
Алексей.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109088
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, БД - MySQL. Может у неё есть режим "вот БД, а всё, что пишем туда- сохранять в соседнюю БД, и читать из неё тоже при надобности"?

Или в hibernate (все проблемные операции через него) встроить настройку, что при таком-то параметре не писать в БД, а писать в кэш памяти и при поиске шерстить и его?
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109137
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only
не пойму, почему нельзя сделать зеркало и тестить на реальной копии (не для чтения?)
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109158
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only
не пойму, почему нельзя сделать зеркало и тестить на реальной копии (не для чтения?)

Дорого- объём большой.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109181
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominДорого- объём большой.
в смысле?
Реплика для чтения урезана? И что именно дорого? HDD?
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109219
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey TominДорого- объём большой.
в смысле?
Реплика для чтения урезана? И что именно дорого? HDD?

Данные в датацентре. И это не халявный Хецнер.
Поднимать ежедневно копию данных для теста- это лишняя нагрузка на сервер- т.е. лишние процессорные мощности, объём на диске.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109258
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only
123.12.1 - боевая БД
125.1.2 - БД тестировщиков.
реплика это какая? И почему реплика только чтение?
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109281
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за БД? Для Оракла клоны (snap clone) и откаты целой БД - достаточно быстрая операция.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109755
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only
123.12.1 - боевая БД
125.1.2 - БД тестировщиков.
реплика это какая? И почему реплика только чтение?

MySQL иначе обидится. Я в ней плохо разбираюсь.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109756
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЧто за БД? Для Оракла клоны (snap clone) и откаты целой БД - достаточно быстрая операция.

Увы, это MySQL
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39109817
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominPetro123пропущено...
не пойму, почему нельзя сделать зеркало и тестить на реальной копии (не для чтения?)
Дорого- объём большой.
не понимаю я ваш производственный процесс.
Ты вроде архитектор а не админ. Ставишь задачу, чтобы на тестовой площадке была всегда копия БД при смене мажорной\минорной версии.
Админы эту проблему решают.
Ну не код же программы менять для того чтобы "она думала" - только чтение под ней или продакшен.
IMHO
Alexey TominMySQL иначе обидится. Я в ней плохо разбираюсь.
что за обида? LOL
10 раз примерь, один раз прими решение. А то, админов нет, спеца по БД нет, площадки для тестов нет.
Alexey TominЕсть ли красивое решение этой проблемы? Надо минимизировать изменения кода для надёжности тестирования, но изменения нужны...
красивое - не менять код по такой ерунде.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39110596
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey Tominпропущено...

Дорого- объём большой.
не понимаю я ваш производственный процесс.
Ты вроде архитектор а не админ. Ставишь задачу, чтобы на тестовой площадке была всегда копия БД при смене мажорной\минорной версии.

При чём здесь версия? Ты вообще не понял.

Хочется запускать тесты на актуальных данных.
Для этого можно задействовать slave-реплику БД (подробнее можно прочитать, например, в этой статье ).
Каждые сутки. На актуальных данных. Это хорошо.

Делать копию этих данных на тестовый сервер- это как раз сутки и займёт.

Petro123Alexey TominMySQL иначе обидится. Я в ней плохо разбираюсь.
что за обида? LOL

Читай статью на хабре. Нельзя менять slave в репликации.

Petro123красивое - не менять код по такой ерунде.

Я тебя понял. Спасибо.

Кто-нибудь может подсказать что-то полезное?
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39110909
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominПри чём здесь версия? Ты вообще не понял.
как не понял?
- зачем интеграционные тесты ежедневно если версии не менялись?
Alexey TominКаждые сутки. На актуальных данных. Это хорошо.
я предлагаю:
- ежедневная реплика до 6ти утра
- в 6 утра делается физичесая копия файлов данных (MySQL может это?) с зекала которое готово в 6 утра.
- в данном методе сервер продакшен под нагрузкой только для зеркала. Но это ведь ты захотел?
- бд тестовая с зеркалом у вас и нагружается только она.
Alexey TominДелать копию этих данных на тестовый сервер- это как раз сутки и займёт.
ОК. Будем ждать других спецов.
У меня:
- реплика на оракле идёт 1 час и я беру только БД для приложения. А не всё сразу.
- данных не столько сколько у тебя.
..
Ксатати, размер БД у тебя _для одного приложения_?
?
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39110967
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey TominПри чём здесь версия? Ты вообще не понял.
как не понял?
- зачем интеграционные тесты ежедневно если версии не менялись?

Меняются данные. И порой не так, как ожидал разработчик.


Petro123Alexey TominДелать копию этих данных на тестовый сервер- это как раз сутки и займёт.
ОК. Будем ждать других спецов.
У меня:
- реплика на оракле идёт 1 час и я беру только БД для приложения. А не всё сразу.
- данных не столько сколько у тебя.
..
Ксатати, размер БД у тебя _для одного приложения_?
?

Я не знаю размера (и не хочу даже спрашивать админов- это пустой интерес), но создание каждодневной копии всех прод-баз это дорогое удовольствие- потому что надо будет нагружать прод-сервера (качать из датацетра в США в хецнер, в тестовый кластер, тоже не та задача, которую хочется делать).
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111025
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Tominно создание каждодневной копии всех прод-баз это дорогое удовольствие- потому что надо будет нагружать прод-сервера (качать из датацетра в США в хецнер, в тестовый кластер, тоже не та задача, которую хочется делать).
осталась одна непонятка:
- ты "только чтение реплика" всё равно делать планируешь, и будешь. Т.е. в хецнер у тебя ежедневно реплика чтение.
Задача только в том чтобы в хецнер, рядом или не совсем рядом, сделать копию без перекачивания по сети.
Либо откат БД после тестов.

Alexey TominМеняются данные. И порой не так, как ожидал разработчик.
это круто.
Тут я пас.
Удачи!
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111180
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey Tominно создание каждодневной копии всех прод-баз это дорогое удовольствие- потому что надо будет нагружать прод-сервера (качать из датацетра в США в хецнер, в тестовый кластер, тоже не та задача, которую хочется делать).
осталась одна непонятка:
- ты "только чтение реплика" всё равно делать планируешь, и будешь. Т.е. в хецнер у тебя ежедневно реплика чтение.


Нет, реплика в основном датацентре.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111194
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominНет, реплика в основном датацентре.
ну, тогда в зависимости от стоимости доп.места в центре 3 варианта
1.
mysql> SET GLOBAL read_only = OFF;
mysql> UNLOCK TABLES;
и работаем.
...
На ночь опять _приёдёт палновая ежедневная свежая_ реплика.
2. Если места много, то копия БД физической файловой системы.
3. Делать площадку тестов у себя.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111694
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey TominНет, реплика в основном датацентре.
ну, тогда в зависимости от стоимости доп.места в центре 3 варианта
1.
mysql> SET GLOBAL read_only = OFF;
mysql> UNLOCK TABLES;
и работаем.
...
На ночь опять _приёдёт палновая ежедневная свежая_ реплика.

Нет. Репликация не пройдёт, если данные пересекутся. А они пересекутся 100%.

Petro1232. Если места много, то копия БД физической файловой системы.
3. Делать площадку тестов у себя.

Я уже писал- оба варианта слишком дороги.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111733
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominЯ уже писал- оба варианта слишком дороги.
боюсь, что у тебя настолько большая организация, что напрячь админов на их же вопрос - тебе проблематично.
Бывает.
Alexey TominНет. Репликация не пройдёт, если данные пересекутся. А они пересекутся 100%.
ты бы конкретнее. Тут особо нет спецов по именно твоей БД.
Утверждаешь, что реплика встанет при
delete table id=15
.... а этот айдишник удалили при тестах?
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111737
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123mysql> SET GLOBAL read_only = OFF;
mysql> UNLOCK TABLES;
ночная реплика закончена. Обычная БД для тестов. Что с чем пересечётся?
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111764
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Petro123mysql> SET GLOBAL read_only = OFF;
mysql> UNLOCK TABLES;
ночная реплика закончена. Обычная БД для тестов. Что с чем пересечётся?

На следующий день создаётся не новая реплика, а обновляется эта.
Т.к. тесты пишут только лог, то 100%, что новые записи в логе с мастера и с теста будут иметь одинаковые ID.
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111778
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominТ.к. тесты пишут только лог, то 100%, что новые записи в логе с мастера и с теста будут иметь одинаковые ID.
я ж тебя спросил, дальше то что при коллизии? Всё встанет колом? Нет обработчика? Нельзя предварительно очистить таблицу логов?
Тут надо в ветку по БД, т.к. по всей видимости репликация всё равно инкрементальная (СТАРТ-СТОП-РАБОТАЕМ).
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111789
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Alexey TominТ.к. тесты пишут только лог, то 100%, что новые записи в логе с мастера и с теста будут иметь одинаковые ID.
я ж тебя спросил, дальше то что при коллизии? Всё встанет колом? Нет обработчика? Нельзя предварительно очистить таблицу логов?
Тут надо в ветку по БД, т.к. по всей видимости репликация всё равно инкрементальная (СТАРТ-СТОП-РАБОТАЕМ).

Это ты пытаешься всё свести к БД. А я спрашиваю совета по java
...
Рейтинг: 0 / 0
Нужны идеи- интеграционные тесты и read-only окружение
    #39111799
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey TominЭто ты пытаешься всё свести к БД. А я спрашиваю совета по java
судя по молчанию остальных, не я один.
Ты просто упрямый).
А на Java тоже будет работать. Только не штатно и исключительно для одного твоего проекта - руками. Я в этом не сомневаюсь.
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Нужны идеи- интеграционные тесты и read-only окружение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]