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,235 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Особого внимания требуют нарушения сознания судорожные приступы выраженная дезориентация паранойя галлюцинации сильнейшая тревога и резкие изменения поведения. При алкогольном отравлении может страдать сердечно-сосудистая система нарушаться кровоток и функции мозга. В большинстве сложных случаев попытка просто «перетерпеть» похмельный синдром не является безопасной стратегией. Изучить вопрос подробнее – скорая вывод из запоя в Кемерово

  2. Но когда начался запой он просто сломался. Он пил уже 10 дней подряд. Звонила во все больницы обзванивала знакомых. Нарколог на дом — это вернуло его к жизни. Поставил капельницу. Никто не узнал о случившемся. Оплатили после. И я знаю: есть врачи которые спасают. частный нарколог на дом анонимно https://kapelnica.narkolog-na-dom-moskva-abc.ru По ссылке — подробная информация для Москвы. Каждый день промедления — это риск. Вы не одни

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

  4. Сам не думал что такое возможно. Муж перестал быть мужем. Скорая отказывалась приезжать. Прочитал в интернете — помощь при запое в северной столице. Оперативно без промедлений. Поставил капельницу с препаратами. Без учёта в диспансере. Цену сказали по телефону. Заговорил улыбнулся. Рекомендую всем кто в такой ситуации. капельница от алкоголя на дому спб цена капельница от алкоголя на дому спб цена По ссылке — всё подробно и понятно для нашего города. Здоровье — важнее всего. Главное — начать

  5. Когда кажется что хуже уже не будет. Мы просто сидели рядом и боялись. Но он не мог даже сидеть. Мой старый друг из института — выезд нарколога в Воронеже. Через 2 часа он уже пил чай. Просто помощь и ничего лишнего. Цена — названа заранее. Кто приехал и спас. капельница от похмелья капельница от похмелья Пригодится для нашего города. Звоните не бойтесь

  6. Кажется что это никогда не закончится. А вдруг не проснётся? Это был последний шанс. выезд нарколога на дом — всё что нам было нужно. Через 2 часа он уже пил чай. Никаких справок и записей. Цена — названа заранее. Мы снова семья. капельница от запоя стоимость https://alkogolizm.kapelnicza-ot-zapoya-voronezh.ru Пригодится для области. Звоните сейчас

  7. Все попытки помочь проваливались. Мы думали что он умрёт. Никто не хотел браться. То что действительно помогло — детоксикация в Самаре. Просто сделал свою работу. Нормализовал пульс и сознание. Только семья и врач. Мы заплатили после результата. Ходит на работу общается с детьми. капельница от похмелья стоимость https://zapoy.kapelnicza-ot-pokhmelya-ekaterinburg-sdj.ru Там все телефоны и описание для области. Помощь реальная и рядом. Вы справитесь

  8. Но жизнь — непредсказуемая штука. Запой начался после ссоры на работе. Он не узнавал родных. Скорая сказала: «Это не к нам». Случайно наткнулись на сайт — помощь при запое в нашем городе. Профессионально и спокойно. Снял острую интоксикацию. Мы не верили что это возможно. Без записей в амбулаторной карте. Оплата после результата. Прошло 8 месяцев — он не пьёт. заказать капельницу от похмелья https://zapoy.kapelnicza-ot-pokhmelya-ekaterinburg-fuj.ru Пригодится если случится беда для районов. Помощь рядом она реальная. Выход есть всегда

  9. При тяжелой интоксикации зависимого отправляют в стационар. В клинику он может приехать самостоятельно либо воспользоваться сопровождением если такая услуга предусмотрена. При поступлении доктор проводит осмотр после чего пациент отправляется в палату. Подробнее лечение зависит от результатов обследования. Когда состояние стабилизируется решается вопрос о дальнейшем лечении зависимости и реабилитации. Подробнее – http://www.n.narkologicheskaya-klinika-v-krasnoyarske17.ru

  10. Чтобы вы знали куда звонить когда всё рушится. Запой длился уже больше десяти дней. «Нет мест» «везите сами» «он должен хотеть лечиться». Знакомые посоветовали — выездная детоксикация в районах. Сразу взялся за дело. Осмотрел поставил капельницу. Он снова стал человеком. Никаких записей в карте. Цена — фиксированная без сюрпризов. Работает улыбается живёт. капельница от похмелья на дому цена капельница от похмелья на дому цена Сохраните поделитесь не потеряйте для нашего города. Если вы в такой же ситуации — не ждите. Выход есть всегда

  11. Быстро собираем первичную информацию оцениваем риски и предлагаем подходящий вариант обращения. Дополнительная информация – vyvod-iz-zapoya-deshevo

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

  13. Он никогда не жаловался всегда помогал. Но я не могла сдаться. Я искала помощи везде. срочный вызов нарколога — это вернуло его к жизни. Сразу осмотрел папу. И мы снова стали семьей. Цена — названа заранее. И я знаю: есть врачи которые спасают. нарколог на дом круглосуточно цены нарколог на дом круглосуточно цены По ссылке — подробная информация для Москвы. Каждый день промедления — это риск. Всё наладится

  14. Лечение в наркологической клинике в Воронеже проводится поэтапно с учётом состояния пациента длительности зависимости и наличия сопутствующих заболеваний. Детальнее – наркологическая клиника наркологический центр воронеж

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

  16. Но потом наступает ещё более тёмная полоса. Именно так мы чувствовали себя когда наш отец ушёл в запой. Скорая говорила: «Только если сам придёт». Коллега по работе — выезд нарколога в Воронеже. Поставил капельницу ввёл лекарства. Анонимно без учёта. Цена — названа заранее. Спасибо тем кто не отказал. капельница от похмелья недорого https://narkolog.kapelnicza-ot-zapoya-voronezh.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>