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.

13,893 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Simply want to say your article is as astonishing. The clarity to your publish
    is just great and i could assume you are a professional
    in this subject. Fine with your permission allow
    me to take hold of your RSS feed to stay updated with imminent post.
    Thank you a million and please continue the
    gratifying work.

  2. canadian poker machine game download, bouka spins no deposit bonus
    and online lotto casino, Cleta, uk free 10, or new zealand real money slots

  3. Вывод из запоя на дому подходит пациентам которым необходимо получить помощь в привычной обстановке. Вызов врача можно заказать в любое время суток: выездная бригада приезжает по указанному адресу проводит осмотр оценивает давление пульс степень интоксикации риск психозов галлюцинаций судорожных реакций инфаркта инсульта и других осложнений. Получить дополнительные сведения – нарколог на дом вывод из запоя

  4. Вывод из запоя в Сочи необходим когда человек не может самостоятельно выйти из состояния непрерывного употребления алкоголя а самочувствие ухудшается даже после короткого перерыва. Запой опасен для здоровья нервного системы печени сердца сосудов и психики поэтому обращаться за медицинской помощью лучше сразу не дожидаясь недели тяжелого состояния. Разобраться лучше – скорая вывод из запоя сочи

  5. Vavada работает на рынке уже не первый год и успела собрать большую аудиторию. Первое, что порадовало, — щедрый приветственный бонус и бесплатные вращения новичкам. Первый вывод средств прошёл без задержек — деньги пришли на карту в течение часа. Играть советую ответственно и устанавливать лимиты на депозит. Все подробности, актуальные бонусы и вход в личный кабинет — по ссылке vavada казино. Минусов за всё время не нашёл, так что смело советую.

  6. Вывод из запоя в Сочи требуется когда человек не может самостоятельно прекратить употребления алкоголя испытывает тяжелое похмелья симптомы ломки тревогу рвоту бессонницу слабость ухудшение самочувствие и изменение поведение. Даже если запой длится несколько дней риск осложнений для здоровья остается высокий: страдают сердце печень почки нервного системы психика и общее состояние организма. Ознакомиться с деталями – вывод из запоя с выездом в сочи

  7. звоните круглосуточно по телефону горячей линии клиники: наши специалисты готовы оказать необходимую помощь в решении проблемы алкогольной зависимости. Детальнее – скорая вывод из запоя сочи

  8. This post creates a really pleasant reading experience because the wording feels smooth the pacing stays well balanced and the overall discussion remains enjoyable without becoming too complicated to follow closely. nuevo casino bono sin deposito

  9. Между прочим, если вас интересует Все самое важное из мира спорта: новости и обзоры, загляните сюда.

    Смотрите сами:

    https://cskafamily.ru

  10. Реабилитация наркоманов по методу 12 шагов может сочетаться с психотерапией групповой терапией консультацией нарколога работой психолога наблюдением врача медикаментозной терапией стационаром детоксикацией и помощью родственникам. Если человек находится в острой интоксикации переживает ломку запой похмельный синдром тревогу бессонницу психоз или выраженное физическое истощение сначала может потребоваться наркологическая помощь срочный вызов стационар снятие ломки капельница вывод из запоя или детоксикация. После стабилизации начинается реабилитация как отдельная программа направленная на долгосрочные изменения. Получить больше информации – программа 12 шагов для созависимых самостоятельно

  11. Работа по программе строится последовательно: сначала зависимый признает болезнь и перестает объяснять употребление внешними обстоятельствами затем переходит к самоанализу разбору поступков исправлению ошибок и формированию новых привычек. Каждый шаг помогает не перескакивать через сложные темы а идти по понятной системе где лечение зависимости связано с ответственностью готовностью к изменениям и отказом от прежних оправданий. Узнать больше – reabilitaciya-12-shagov

  12. Он оценит состояние зависимого и примет решение о том можно ли быстро выводить его из запоя на дому в Москве или требуется постепенный выход из запоя в условиях стационара. В сложных случаях когда есть галлюцинации или серьезные хронические патологии мы рекомендуем не рисковать и начинать терапию под круглосуточным наблюдением. Такое решение в клинике принимается строго в интересах пациента потому что алкоголизм — это болезнь разрушающая системы организма. Только в стационаре можно провести полный объем лабораторной диагностики включая ЭКГ и оценку функций печени. Реабилитация в стационарных условиях дает больше шансов на успех. Получить больше информации – https://vyvod-iz-zapoya-moskva1-13.ru/vyvod-iz-zapoya-moskva-srochno/

  13. Наши опытные специалисты используют современные методики выведения из запоя применяя эффективные препараты которые быстро восстанавливают организм после интоксикации алкоголя. В схему лечения мы включаем сильные сорбенты гепатопротекторы успокоительные средства и комплексы витаминов для поддержки сердечно-сосудистой системы. Благодаря инфузионной терапии уже в первые сутки у пациента улучшается самочувствие проходит тошнота тремор и нормализуется сон. Важно понимать что капельница от запоя на дому — это полноценная медицинская процедура которая требует контроля со стороны опытного нарколога. Врач остается с пациентом до стабилизации состояния отслеживает динамику и корректирует состав введения. Подробнее тут – вывод из запоя в москве в стационаре

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>