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.

18,712 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. free spin no deposit casino australia, how to win on pokie machines usa and online casino australia free spins sign up, or austria online gambling license
    (Christopher) casino guide uk

  2. Слушайте кто знает Отец не выходит из штопора Дети напуганы Нужна срочная помощь на дому Короче врачи приехали и поставили систему — прокапать от алкоголя на дому эффективно Через пару часов человек пришёл в себя В общем жмите чтобы сохранить — вывести из запоя капельница на дому https://czena.kapelnica-ot-zapoya-kazan.ru Капельница от запоя — это реальный выход Перешлите тем кто в такой же ситуации

  3. Наркологическая клиника принимает людей с различной степенью тяжести зависимости. Иногда лечение начинается с плановой консультации а в более сложной ситуации требуется экстренная медицинская помощь выведение из запоя или госпитализация в стационар. При острых состояниях не нужно долго искать способ справиться самостоятельно: необходимо позвонить в клинику сообщить врачу основные признаки и получить рекомендации по дальнейшим действиям. Изучить вопрос подробнее – https://n.narkologicheskaya-klinika-sankt-peterburg14.ru

  4. Вывод из запоя в Санкт-Петербурге — комплексная помощь при длительном приеме спиртного выраженном похмельном синдроме и алкогольной интоксикации. Лечение можно организовать на дому или в стационаре клиники. Формат лечения выбирают с учетом тяжести самочувствия продолжительности запоя возраста пациента наличия хронических болезней и противопоказаний. Выезд нарколога на дому позволяет быстро начать лечение без самостоятельной поездки в лечебное учреждение. Если домашнее лечение небезопасно больному рекомендуют лечение в стационаре под наблюдением врача. Получить больше информации – https://a.vivod-iz-zapoya-v-sankt-peterburge16.ru/

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

  6. free casino games roulette bets in french (Ilse) united states, casino age limit uk and aristocrat free slots united states,
    or new casino sites uk no deposit

  7. united kingdom pathological gambling disorder therapy (Ted) online,
    casino online australia real money and casino on net 888 usa, or canadian online casino with $5 deposit

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

  9. Люди помогите советом Брат снова сорвался Родственники не знают что делать Таблетки не помогают Короче только это реально спасло — вывести из запоя анонимно с гарантией Поставили капельницу с детоксикационным раствором В общем жмите чтобы сохранить — выведение из запоя волгоград выведение из запоя волгоград Звоните прямо сейчас Перешлите тем кто в такой же ситуации

  10. Вывод из запоя в Красноярске — медицинская помощь которая требуется при длительном употреблении алкоголя выраженном похмельном синдроме обезвоживании нарушениях сна тревоге и общем ухудшении самочувствия. Если человек не может самостоятельно прервать запой безопаснее обратиться к врачу-наркологу и пройти осмотр. Специалист оценивает состояние уточняет длительность употребления спиртного примерное количество алкоголя возраст наличие хронических болезней и противопоказания. На основании результатов первичной диагностики врач определяет можно ли проводить вывод из запоя на дому или требуется лечение в стационаре наркологической клиники. Дополнительная информация – https://c.vyvod-iz-zapoya-v-krasnoyarske17.ru/

  11. При острых состояниях важно получить медицинскую помощь без неоправданной задержки. Наркологическая служба определяет подходящий формат обращения исходя из симптомов и степени тяжести. Возможность выезда на дом время приезда бригады необходимость стационарного лечения и дальнейшие процедуры уточняются во время звонка. Дополнительная информация – https://4.narkologicheskaya-klinika-moskva11.ru/

  12. uk poker tour, singapore online casino website (Franklin) casino pokies australia and online pokies paysafe canada, or canadian poker free online game

  13. Состояние зависимого бывает разным: один пациент обращается практически сразу другой попадает в клинику лишь тогда когда употребление привело к тяжелым последствиям. Алкоголь и наркотики наносят вред печени сердцу нервной системе и функциям мозга а при длительном злоупотреблении могут развиваться психозы выраженные нарушения сна и эмоциональные расстройства. Поэтому важно не ставить диагноз самостоятельно а обратиться к врачу. Подробнее специалист центра определяет требуется ли лечение амбулаторно стационарное лечение или подготовка к продолжительной реабилитации. Ознакомиться с деталями – наркологическая клиника вывод из запоя

  14. Рекомендации строятся вокруг состояния человека а не по универсальному шаблону для всех случаев. Изучить вопрос подробнее – kapelnica-ot-zapoya-cena-moskva

  15. Super Locksmith Pros can reinforce national topical authority without mixing local
    business citations by avoiding a single nationwide address and identifying
    local providers as independent contractors where applicable.

  16. Вывод из запоя в Санкт-Петербурге требуется когда длительное употребление алкоголя привело к выраженному похмельному или абстинентному синдрому а самостоятельно прекратить пить сложно. Наркологическая клиника оказывает услуги круглосуточно: можно вызвать врача-нарколога на дом пройти лечение амбулаторно либо получить лечение в стационаре. Формат выбирается с учетом длительности запоя возраста пациента тяжести состояния количества спиртного хронических болезней и текущих жалоб. Изучить вопрос подробнее – наркология вывод из запоя Санкт-Петербург

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>