|
|
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть некое приложение, интерфейс к которому отдельный, дёргает приложение через RMI. Есть для него интеграционные тесты- запускается приложение, затем к нему через те же RMI посылаются команды. Приложение честно считает, что работает в production и потому тесты достоверные. Хочется дописать тесты на БД клиентов (приложение- SaaS, так что проблем нет), но оно запускается на реплике-бэкапе основной базы, которая read only. На уровне прав доступа приложения. Понятное дело, что тесты не все. Но проблема в том, что действия всё равно логируются, и иногда выставляются локи в БД. Т.е. для любой операции есть некоторые записи. На тестах они не нужны. Но как правильно и красиво внедрить это в код? Делать настройку "у нас тут спецрежим", которая включается только на этих тестах- это некрасиво, когда в рабочем коде торчат костыли. Хотя пока так сделал... Сделать так, чтобы при ошибки записи в лог "нет прав" ошибка глоталась (любая запись ERROR в лог роняет интеграционный тест) - тоже бред. Мало ли что там. Кроме того, локи в БД идентифицируются по ID (пока сделал простой автоинкремент, но смотрится это плохо)- надо не просто игнорировать ошибку записи, но ещё и сделать фейковый ID. Есть ли красивое решение этой проблемы? Надо минимизировать изменения кода для надёжности тестирования, но изменения нужны... -- Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 14:49 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Да, БД - MySQL. Может у неё есть режим "вот БД, а всё, что пишем туда- сохранять в соседнюю БД, и читать из неё тоже при надобности"? Или в hibernate (все проблемные операции через него) встроить настройку, что при таком-то параметре не писать в БД, а писать в кэш памяти и при поиске шерстить и его? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 14:52 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only не пойму, почему нельзя сделать зеркало и тестить на реальной копии (не для чтения?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 15:21 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only не пойму, почему нельзя сделать зеркало и тестить на реальной копии (не для чтения?) Дорого- объём большой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 15:39 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey TominДорого- объём большой. в смысле? Реплика для чтения урезана? И что именно дорого? HDD? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 15:48 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey TominДорого- объём большой. в смысле? Реплика для чтения урезана? И что именно дорого? HDD? Данные в датацентре. И это не халявный Хецнер. Поднимать ежедневно копию данных для теста- это лишняя нагрузка на сервер- т.е. лишние процессорные мощности, объём на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 16:06 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only 123.12.1 - боевая БД 125.1.2 - БД тестировщиков. реплика это какая? И почему реплика только чтение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 16:34 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Что за БД? Для Оракла клоны (snap clone) и откаты целой БД - достаточно быстрая операция. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2015, 16:48 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey Tominно оно запускается на реплике-бэкапе основной базы, которая read only 123.12.1 - боевая БД 125.1.2 - БД тестировщиков. реплика это какая? И почему реплика только чтение? MySQL иначе обидится. Я в ней плохо разбираюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 18:14 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
maytonЧто за БД? Для Оракла клоны (snap clone) и откаты целой БД - достаточно быстрая операция. Увы, это MySQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 18:14 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey TominPetro123пропущено... не пойму, почему нельзя сделать зеркало и тестить на реальной копии (не для чтения?) Дорого- объём большой. не понимаю я ваш производственный процесс. Ты вроде архитектор а не админ. Ставишь задачу, чтобы на тестовой площадке была всегда копия БД при смене мажорной\минорной версии. Админы эту проблему решают. Ну не код же программы менять для того чтобы "она думала" - только чтение под ней или продакшен. IMHO Alexey TominMySQL иначе обидится. Я в ней плохо разбираюсь. что за обида? LOL 10 раз примерь, один раз прими решение. А то, админов нет, спеца по БД нет, площадки для тестов нет. Alexey TominЕсть ли красивое решение этой проблемы? Надо минимизировать изменения кода для надёжности тестирования, но изменения нужны... красивое - не менять код по такой ерунде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2015, 20:20 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey Tominпропущено... Дорого- объём большой. не понимаю я ваш производственный процесс. Ты вроде архитектор а не админ. Ставишь задачу, чтобы на тестовой площадке была всегда копия БД при смене мажорной\минорной версии. При чём здесь версия? Ты вообще не понял. Хочется запускать тесты на актуальных данных. Для этого можно задействовать slave-реплику БД (подробнее можно прочитать, например, в этой статье ). Каждые сутки. На актуальных данных. Это хорошо. Делать копию этих данных на тестовый сервер- это как раз сутки и займёт. Petro123Alexey TominMySQL иначе обидится. Я в ней плохо разбираюсь. что за обида? LOL Читай статью на хабре. Нельзя менять slave в репликации. Petro123красивое - не менять код по такой ерунде. Я тебя понял. Спасибо. Кто-нибудь может подсказать что-то полезное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 09:29 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey TominПри чём здесь версия? Ты вообще не понял. как не понял? - зачем интеграционные тесты ежедневно если версии не менялись? Alexey TominКаждые сутки. На актуальных данных. Это хорошо. я предлагаю: - ежедневная реплика до 6ти утра - в 6 утра делается физичесая копия файлов данных (MySQL может это?) с зекала которое готово в 6 утра. - в данном методе сервер продакшен под нагрузкой только для зеркала. Но это ведь ты захотел? - бд тестовая с зеркалом у вас и нагружается только она. Alexey TominДелать копию этих данных на тестовый сервер- это как раз сутки и займёт. ОК. Будем ждать других спецов. У меня: - реплика на оракле идёт 1 час и я беру только БД для приложения. А не всё сразу. - данных не столько сколько у тебя. .. Ксатати, размер БД у тебя _для одного приложения_? ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 13:23 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey TominПри чём здесь версия? Ты вообще не понял. как не понял? - зачем интеграционные тесты ежедневно если версии не менялись? Меняются данные. И порой не так, как ожидал разработчик. Petro123Alexey TominДелать копию этих данных на тестовый сервер- это как раз сутки и займёт. ОК. Будем ждать других спецов. У меня: - реплика на оракле идёт 1 час и я беру только БД для приложения. А не всё сразу. - данных не столько сколько у тебя. .. Ксатати, размер БД у тебя _для одного приложения_? ? Я не знаю размера (и не хочу даже спрашивать админов- это пустой интерес), но создание каждодневной копии всех прод-баз это дорогое удовольствие- потому что надо будет нагружать прод-сервера (качать из датацетра в США в хецнер, в тестовый кластер, тоже не та задача, которую хочется делать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 14:08 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey Tominно создание каждодневной копии всех прод-баз это дорогое удовольствие- потому что надо будет нагружать прод-сервера (качать из датацетра в США в хецнер, в тестовый кластер, тоже не та задача, которую хочется делать). осталась одна непонятка: - ты "только чтение реплика" всё равно делать планируешь, и будешь. Т.е. в хецнер у тебя ежедневно реплика чтение. Задача только в том чтобы в хецнер, рядом или не совсем рядом, сделать копию без перекачивания по сети. Либо откат БД после тестов. Alexey TominМеняются данные. И порой не так, как ожидал разработчик. это круто. Тут я пас. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 14:39 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey Tominно создание каждодневной копии всех прод-баз это дорогое удовольствие- потому что надо будет нагружать прод-сервера (качать из датацетра в США в хецнер, в тестовый кластер, тоже не та задача, которую хочется делать). осталась одна непонятка: - ты "только чтение реплика" всё равно делать планируешь, и будешь. Т.е. в хецнер у тебя ежедневно реплика чтение. Нет, реплика в основном датацентре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 16:00 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey TominНет, реплика в основном датацентре. ну, тогда в зависимости от стоимости доп.места в центре 3 варианта 1. mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES; и работаем. ... На ночь опять _приёдёт палновая ежедневная свежая_ реплика. 2. Если места много, то копия БД физической файловой системы. 3. Делать площадку тестов у себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2015, 16:07 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey TominНет, реплика в основном датацентре. ну, тогда в зависимости от стоимости доп.места в центре 3 варианта 1. mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES; и работаем. ... На ночь опять _приёдёт палновая ежедневная свежая_ реплика. Нет. Репликация не пройдёт, если данные пересекутся. А они пересекутся 100%. Petro1232. Если места много, то копия БД физической файловой системы. 3. Делать площадку тестов у себя. Я уже писал- оба варианта слишком дороги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 09:39 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey TominЯ уже писал- оба варианта слишком дороги. боюсь, что у тебя настолько большая организация, что напрячь админов на их же вопрос - тебе проблематично. Бывает. Alexey TominНет. Репликация не пройдёт, если данные пересекутся. А они пересекутся 100%. ты бы конкретнее. Тут особо нет спецов по именно твоей БД. Утверждаешь, что реплика встанет при delete table id=15 .... а этот айдишник удалили при тестах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:00 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES; ночная реплика закончена. Обычная БД для тестов. Что с чем пересечётся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:02 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Petro123mysql> SET GLOBAL read_only = OFF; mysql> UNLOCK TABLES; ночная реплика закончена. Обычная БД для тестов. Что с чем пересечётся? На следующий день создаётся не новая реплика, а обновляется эта. Т.к. тесты пишут только лог, то 100%, что новые записи в логе с мастера и с теста будут иметь одинаковые ID. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:20 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey TominТ.к. тесты пишут только лог, то 100%, что новые записи в логе с мастера и с теста будут иметь одинаковые ID. я ж тебя спросил, дальше то что при коллизии? Всё встанет колом? Нет обработчика? Нельзя предварительно очистить таблицу логов? Тут надо в ветку по БД, т.к. по всей видимости репликация всё равно инкрементальная (СТАРТ-СТОП-РАБОТАЕМ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:27 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey TominТ.к. тесты пишут только лог, то 100%, что новые записи в логе с мастера и с теста будут иметь одинаковые ID. я ж тебя спросил, дальше то что при коллизии? Всё встанет колом? Нет обработчика? Нельзя предварительно очистить таблицу логов? Тут надо в ветку по БД, т.к. по всей видимости репликация всё равно инкрементальная (СТАРТ-СТОП-РАБОТАЕМ). Это ты пытаешься всё свести к БД. А я спрашиваю совета по java ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:31 |
|
||
|
Нужны идеи- интеграционные тесты и read-only окружение
|
|||
|---|---|---|---|
|
#18+
Alexey TominЭто ты пытаешься всё свести к БД. А я спрашиваю совета по java судя по молчанию остальных, не я один. Ты просто упрямый). А на Java тоже будет работать. Только не штатно и исключительно для одного твоего проекта - руками. Я в этом не сомневаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.11.2015, 10:35 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39109817&tid=2124640]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
184ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 518ms |

| 0 / 0 |
