Как работать с подключением?

PinkCat
Дата: 12.09.2018 16:57:09
​Вроде как уже слегка познакомились, а потому можно попробовать получить помощь из зала.


Ситуация следующая.
Дано почти немерянное (ну мне за раз не охватить) количество спагетти-кода работающего со старым (8.1, 10.2) Ораклом.
Я его потихоньку выворачиваю на изнанку, но идет крайне медленно.


Есть обычные вин-приложения и есть веб-морда для кучи отчетов.
Вин-приложения работают, обычно, с парой баз - Планирование и Производство.
Веб-морда работает с тремя парами баз Планирование и Производство.
Пары всегда согласованы - сервера либо 8.1, либо 10.2, но версии самих баз - отличаются.


В дополнение к этой радости есть желание иметь хоть какое-то покрытие всего новодела тестами.
Тесты должны выполнятся на отдельной машинке​.
Машинка находится в той же сети, что и производственные базы. Логины - те же.
Тесты условно делятся на две группы, но критичной является та, которая называется деструктивной.
Т.е. там дропаются и создаются таблицы, закачиваются тестовые данные и считается и что можно, и что нельзя.
Запуск деструктивных тестов на производственной базе должен быть на 100% исключен.

Остальные - требуют либо длительной подготовки тестовых данных, либо выполнения на производственных базах.
Все тесты идут в одном модуле/дллке, деструктивные - компонуются в классы отдельно от простых.


Сделано следующее - в деструктивных тестах происходит переназначение КоннектионСтринг и проверка на переназначенность и допустимость ИП (да, привязаны к машинке) для выполнения теста.
Все это дело кешировано - т.е. проверка не на каждом тесте, а общая, на весь класс деструктивных тестов.


Для вин-приложений все работает.


Веб-морда, однако, берет (должна брать) данные с трех разных групп баз.
Потому для нее в конфиге прописаны три разные сета КоннектионСтринг-ов - по паре на каждое размещение баз.
Заменой КоннектионСтрингов Я не занимался - просто читал текущую из конфига и коннектился - под ИИС все нормально работало.
Работало ровно до тех пор, пока не было внедрено кеширование для тестов.
Теперь получается лок на коннектион и используется только первая из КоннектионСтринг.


Весь код подключения, кеширования коннектов и выполнения запросов лежит в одной дллке и именно эта дллка должна использоваться во всех случаях - тесты, вин-, веб-...


Вопросик будет такой - Какую часть кода корежить чтобы удовлетворить:
- выполнение деструктивных тестов только на тестовой машинке
- выполнение обычных тестов на производственной или на тестовой машинке
- работу веб-морды с тремя разными наборами баз.
- обычную работу вин-приложений.


Ах, да... конфиги - одни и те же, Т.е. - специальных конфигов для тестов писать нельзя.
Ну и разумеется должна быть почти 100% защита от дурака - т.е. кто-то новенький не должен сломать что-то по незнанию.