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

  1. Если запой длится больше нескольких суток а объем алкоголя в день только растет присутствуют неадекватные реакции срочно звоните в наркологическую клинику. Скорая медицинская оценка особенно нужна при судорогах обмороке выраженной спутанности нарушении дыхания или резком ухудшении самочувствия. Если пациент психически неадекватен агрессивен или находится под сильным воздействием ПАВ не следует пытаться самостоятельно доставить его в клинику ценой собственной безопасности. Подробнее подходящий алгоритм следует уточнять у экстренных служб и профильного врача. Изучить вопрос подробнее – наркологическая клиника клиника помощь

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

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

  4. Кошмар — отец пьёт. Дома не справиться — нужен стационар. Друзья порекомендовали. Можно лечь в клинику. Постоянный контроль. Инфузионная терапия — надёжно. Полная анонимность. Условия комфортные. круглосуточный стационар вывод из запоя круглосуточный стационар вывод из запоя Вся информация по ссылке. Проверили на себе — без обмана. Человек приходит в себя. И что важно — с реабилитацией. Чем раньше тем лучше. Близких нужно спасать. Тем кто в такой ситуации — рекомендую. Держитесь

  5. legal gambling age in united states, biggest casino in ontario united
    kingdom and united kingdom online poker news, or apple pay online casino australia
    (Merry) blackjack canada paypal

  6. Люди подскажите Ситуация критическая Родственники не знают что делать Нужна срочная помощь на дому Короче врачи приехали и поставили систему — выведение из запоя на дому волгоград качественно Поставили капельницу с детоксикационным раствором В общем не потеряйте контакты — вывод из запоя клиника https://vyvod-iz-zapoya-na-domu-volgograd.ru Вывод из запоя на дому — это реальный выход Перешлите тем кто в такой же ситуации

  7. canada no deposit bonus how much does a casino roulette table cost; Adolph,
    , best new zealandn online real money pokies and
    online gambling united states poker, or best no deposit
    casinos aus

  8. Знакомая ситуация — муж пьёт уже длительное время. В больницу категорически отказывается. А время идёт. Хорошо что нам подсказали. Оказывается работает — срочная помощь на месте. Врачи приезжают быстро. В любое время. С соблюдением этики. Состояние нормализуется — профессионально. Стоимость приемлемая. прокапаться на дому цена https://narkolog.vyvod-iz-zapoya-na-domu-voronezh-ayu.ru Вся информация по ссылке. Уже пользовался их услугами — без обмана. Человек приходит в себя. И что важно — без срывов. Не откладывайте. Каждая минута важна. Тем кто ищет выход — рекомендую. Всё наладится

  9. Какая ситуация — запой затянулся. В больницу не хочет — а помочь нужно срочно. Хорошо что узнали — можно вызвать нарколога на дом. Приезжают с оборудованием. Быстро приезжают. Ставят на ноги — безопасно. Никто не узнает. Оправданно. стоимость вывода из запоя https://alkogolizm.vyvod-iz-zapoya-na-domu-voronezh-eio.ru Все условия работы. Уже обращался — врачи грамотные. Состояние улучшается. И без побочек. Чем раньше тем лучше. Время не ждёт. Кому нужна срочная помощь — обращайтесь. Поправляйтесь

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

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>