Integration testing transactions and optimistic locking with Spring and JUnit

I did some badness today.

I wanted an integration test to check to see if my @Transactional method actually did rollback on an optimistic lock failure. It’s a pretty business critical method so I wanted to be sure that the whole @Transactional and @Version annotation voodoo actually works.

The approach I took was to inject, what I called a “slowRepository” into the object with the @Transactional method. The slowRepository is just a mockito mock of the object which “answers” (using “thenAnswer”) to the “findBy…” with some custom code.

The idea is that at some point during the @Transactional method the slowRepository is called and the “answer” code is invoked. In the test, the answer code follows along the lines of:

1. Grab the data it requires from the (not slow) repository (the repository the slowRepository is mocking)
2. Switch back the slowRepository for the not slow repository
3. Invoke the @Transactional method again on a separate thread
4. Sleep for a bit
5. Wake up and return the data from step 1

The @Transactional call on the separate thread completes and commits before slowRepository wakes up. When it does, slowRepository returns stale data and the @Transactional method then fails accordingly.

The problem I encountered was using the setters for my @Autowired dependencies on the bean with the @Transactional method. I needed to use the setters so that I could switch in and out the slowRepository, but couldn’t because Spring AOP proxies are implementations of an interface, not subclasses (by default – yes I realise you can get Spring to proxy the target class using CGLIB). I found this blog post which explains how to get at the target object behind a Spring proxy. I converted it to Scala:

…which is pretty ninja.

21,175 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Но если это спасёт хоть одного человека — буду считать что не зря. Но остановить уже не могли. Мы боялись оставлять его одного. Наркологи говорят: «Только стационар». В интернете прочитал отзывы — вывод из запоя на дому. Врач приехал через час. Восстановил сознание. Мы плакали от радости. Только врач и пациент. Никаких скрытых сумм. Работает улыбается живёт. прерывание запоя на дому цена https://narkolog.vyvod-iz-zapoya-na-domu-samara-fjc.ru Заходите сохраняйте не теряйте для районов. Если вы в такой же ситуации — не сидите сложа руки. Выход есть всегда

  2. И иногда нужно просто знать куда позвонить. Мой брат ушёл в запой и это было страшно. Скорая не помогала. В отчаянии я нашёл в интернете контакты выезд врача-нарколога — это дало нам надежду. Через пару часов брат открыл глаза. Только врач я и брат. Никаких сюрпризов. Сейчас брат жив работает строит планы. скорая наркологическая помощь на дому москва https://zapoy.narkolog-na-dom-moskva-qwe.ru Сохраните поделитесь не потеряйте для нашего города. Каждый день промедления — это риск. Берегите себя и близких

  3. В жизни каждого может случиться момент когда привычный мир рушится. Это случилось с моим братом. Понедельник — он выпил после работы. Мы звонили везде где только можно. Подруга жены — выезд нарколога в Екатеринбурге. Врач приехал через 45 минут. Поставил капельницу ввёл препараты. Проснулся с ясной головой. Просто врач пациент и результат. Без скрытых платежей и доплат. Мы снова улыбаемся вместе. поставить капельницу на дому от запоя https://alkogolizm.kapelnicza-ot-pokhmelya-ekaterinburg-fuj.ru Сохраните не потеряйте для нашего города. Помощь существует она рядом. Берегите себя

  4. Когда человек которого ты любишь становится чужим. Алкоголь затянул его в омут. Но мы понимали: нужны профессионалы. Единственный вариант который реально работает. Наркологическая клиника в нашем городе. Здесь врачи не просто «лечат». Нет ни одного пациента без внимания. Вы просто человек которому нужна помощь. Палаты — светлые и чистые. Стоимость — адекватная. Брат лежал месяц. неоклиник https://alkogolizm.narkologicheskaya-klinika-v-ekb16.ru Заходите читайте сохраняйте для нашего города. Позвоните спросите приезжайте. Берегите себя и близких

  5. Когда кажется что хуже уже не будет. Мы просто сидели рядом и боялись. Скорая говорила: «Только если сам придёт». Кто-то из соседей — капельница от запоя. Врач приехал через 50 минут. Просто помощь и ничего лишнего. Мы заплатили после. Кто приехал и спас. капельница после запоя цена https://narkolog.kapelnicza-ot-zapoya-voronezh.ru Сохраните поделитесь для Воронежа. Звоните не бойтесь

  6. И иногда они очень страшные. Он пил каждый день утром и вечером. Он не мог уснуть его трясло. Я решила позвонить — срочная помощь на дому. Не задавал лишних вопросов. Восстановил водный баланс. Через 2 часа он уже пил чай. Никто не узнал о случившемся. Без скрытых комиссий. Мы снова строим планы. вывод из запоя капельница на дому вывод из запоя капельница на дому Сохраните чтобы не потерять для нашего города. Если вы сейчас в такой же ситуации — не тяните. Вы не одни

  7. Брат ушёл в запой и не выходил неделю. Мы думали что он умрёт. Народные средства — тем более. То что я нашёл случайно в интернете — капельница на дом. Не спрашивал лишнего. Через 2 часа он уже говорил. Никакого учёта в диспансере. Мы заплатили после результата. Вот уже месяц он не пьёт. вывод из запоя на дому недорого https://alkogolizm.vyvod-iz-zapoya-na-domu-samara-rtw.ru Заходите читайте сохраняйте для Самары. Каждый день промедления — риск. Всё будет хорошо

  8. Чтобы знали куда звонить когда всё рушится. Человек которого мы любили перестал быть собой. Мы были в полной изоляции. Помог случай. Вывод из запоя на дому — а оказалось реальностью. Врач приехал через час. Восстановил сознание. Мы не могли поверить когда он сел. Просто сделал свою работу. Никаких «скрытых платежей». И это главное. запой вызов на дом https://alkogolizm.vyvod-iz-zapoya-na-domu-samara-nxc.ru Это может спасти чью-то жизнь для области. Если беда постучится в ваш дом — вы будете знать куда звонить. Вы справитесь

  9. Но когда начался запой он просто сломался. Но я не могла сдаться. Звонила во все больницы обзванивала знакомых. выезд врача круглосуточно — это дало нам второй шанс. Врач приехал через 40 минут. И мы снова стали семьей. Оплатили после. И я знаю: есть врачи которые спасают. наркологическая помощь https://kapelnica.narkolog-na-dom-moskva-abc.ru Там все контакты и условия для районов. Звоните не бойтесь. Берегите себя и близких

  10. Однажды утром я понял: брат умирает. Он пил уже 5 дней подряд. Кожа стала серой глаза запали. Искали врачей но все отказывались. Кто-то в очереди в аптеке посоветовал — капельница от похмелья в районах. Сразу понял что делать. Снял острую интоксикацию. Через 2 часа брат сел на кровати. Всё прошло анонимно без учёта. Цена — названа заранее. Мы снова верим в будущее. капельница на дому от алкоголя капельница на дому от алкоголя Там все контакты и описание для районов. Если вы сейчас в такой же ситуации — не откладывайте. Вы справитесь

  11. Чтобы вы знали куда звонить когда всё рушится. Запой длился уже больше десяти дней. «Нет мест» «везите сами» «он должен хотеть лечиться». Буквально случайно наткнулись — капельница от похмелья в области. Сразу взялся за дело. Ввёл необходимые препараты. Мы не верили своим глазам — через 3 часа он уже разговаривал. Только мы и врач. Никаких скрытых платежей. Сегодня он не пьёт уже больше года. капельница от алкоголя на дому цена капельница от алкоголя на дому цена Это может спасти чью-то жизнь для Екатеринбурга. Всё обязательно наладится. Выход есть всегда

  12. Иногда жизнь ставит перед выбором от которого зависит всё. Он всегда был сильным весёлым. Мы звонили во все инстанции. Кто-то из знакомых посоветовал — нарколог на дом. Без лишних вопросов. Снял интоксикацию. Он был слаб но он был жив. Всё анонимно без учёта. Оплатили после процедуры. Мы ходим в кино смеёмся строим планы. вызов врача нарколога на дом https://zapoy.narkolog-na-dom-moskva-abc.ru Пригодится если случится беда для нашего города. Помощь рядом она реальная. Берегите себя и близких

  13. Когда человек которого ты любишь становится чужим. С братом случилось именно это. Мы долго искали выход. Что возвращает к жизни. центр лечения зависимостей в Екатеринбурге. Здесь врачи не просто «лечат». Капельницы психотерапия группы поддержки. Полная анонимность. Отношение — человеческое без осуждения. Гибкая система оплаты. Теперь он пьёт чай а не водку. клиника от наркозависимости клиника от наркозависимости Это может спасти жизнь для Екатеринбурга. Выход есть и он рядом. Всё наладится

  14. Эта информация может спасти чью-то жизнь. Он не вставал не ел не говорил. Нашёл в интернете случайно — капельница на дом. Никаких «приходите завтра». Снял интоксикацию. Никто не пришёл с проверкой. Оплата после процедуры. Мы снова семья. вывод из запоя на дому недорого https://narkolog.vyvod-iz-zapoya-na-domu-samara-rtw.ru Заходите сохраняйте не теряйте для районов. Если у вас такая же ситуация — не сидите сложа руки. Берегите себя и близких

  15. Но если это спасёт хоть одного человека — буду считать что не зря. Мы не поняли когда это началось. Не ел не спал перестал разговаривать. Обычная медицина бессильна. Знакомые дали номер — капельница от запоя. Без выходных без промедлений. Восстановил сознание. Врач сказал: «Теперь всё будет хорошо». Только врач и пациент. Сказали сразу до выезда. Работает улыбается живёт. вывод из запоя с выездом https://narkolog.vyvod-iz-zapoya-na-domu-samara-fjc.ru Пригодится если случится беда для нашего города. Всё обязательно наладится. Вы справитесь

  16. У каждого в жизни бывают моменты когда опускаются руки. Он пил уже 12 дней. Ни одна больница не хотела его брать. Кто-то из соседей — капельница от запоя. Через 2 часа он уже пил чай. Никто не узнал о нашей беде. Мы заплатили после. Мы снова вместе. вывод из запоя капельница воронеж вывод из запоя капельница воронеж Сохраните поделитесь для области. Всё наладится

  17. Когда мы поняли что брат не справится сам. Тогда нужна серьёзная клиника. Мы долго искали куда обратиться. Наркологическая клиника в районах. Каждый пациент под наблюдением 24/7. Здесь реально помогают вернуться к нормальной жизни. Никаких учётов и справок. Врачи — не равнодушные а включённые. Стоимость — адекватная. Брат провёл там месяц. наркология клиника https://zapoy.narkologicheskaya-klinika-v-ekb16.ru По ссылке — подробная информация для области. Позвоните спросите приезжайте. Вы справитесь

  18. И ты не знаешь как собрать его заново. Он всегда был сильным и весёлым. Вторник — уже не пошёл на работу. Мы были в отчаянии. Коллега с работы — срочная детоксикация. Без выходных и праздников. Поставил капельницу ввёл препараты. Попросил есть и пить. Просто врач пациент и результат. Цена — приятно удивила. И я знаю: есть люди которые спасают. капельницы на дому екатеринбург капельницы на дому екатеринбург Сохраните не потеряйте для нашего города. Если вы сейчас в такой же ситуации — не ждите чуда. Вы не одни

  19. Но жизнь преподносит сюрпризы. Я не знала что делать. Скорая не помогла. В отчаянии я искала в интернете — капельница от похмелья. Не задавал лишних вопросов. Нормализовал давление. Мы плакали от облегчения. Без справок и записей в карте. Всё честно и прозрачно. Сейчас он не пьёт уже несколько месяцев. капельница от запоя на дому круглосуточно https://alkogolizm.kapelnicza-ot-pokhmelya-ekaterinburg-sdj.ru Там все контакты и подробности для области. Если вы сейчас в такой же ситуации — не тяните. Берегите себя

  20. Запой сопровождается повторным приемом спиртного в течение нескольких дней и выраженной абстиненцией при попытке остановиться. Если человек употребляет алкоголь постоянно новая доза временно облегчает похмелье но усиливает токсическую нагрузку на организм. Врач оценивает тяжесть состояния и решает допустимо ли лечение дома. Чем дольше продолжается запой тем выше риск нарушений работы сердца печени сосудов головного мозга и других внутренних органов. Изучить вопрос подробнее – нарколог вывод из запоя

  21. А потом — ты уже не хозяин своей жизни. Запой становится нормой. Мой брат чуть не погиб. Что действительно сработало — капельница от запоя в нашем городе. Не заставили ждать. Сняли тремор и тошноту. Без лишних вопросов. Всё прозрачно. Если что — знаем кому звонить. прокапаться от запоя https://alkogolizm.kapelnicza-ot-zapoya-sankt-peterburg-jsi.ru Не теряйте в нужный момент для нашего города. Здоровье близких важнее всего. Помощь рядом

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>