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.

19,781 thoughts on “Integration testing transactions and optimistic locking with Spring and JUnit

  1. Проблема накрыла — родственник пьёт без остановки. Таблетки бесполезны — только стационар поможет в нашем городе. Друзья порекомендовали — лечение в стационаре. Полный контроль состояния. Капельницы и препараты — надёжно. Анонимно и конфиденциально. Отношение внимательное. запой стационар анонимно https://narkolog.vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-srv.ru На сайте подробности для столицы Приволжья. Проверили на себе — всё честно. Человек приходит в себя. Откладывать нельзя. Кто в НН — рекомендую. Держитесь

  2. Проблема — человек в запое уже несколько дней. Скорая не приезжает — а риск огромный. Узнал куда звонить — выезд нарколога в Воронеже. Специалист через час. Оборудование и препараты. Ставят капельницу — эффективно. Без постановки на учёт. Всё честно. нарколога домой https://alkogolizm.narkolog-na-dom-voronezh-13.ru На сайте подробности для столицы Черноземья. Уже пользовался — профессионалы. Состояние нормализуется. Не терпите. Кто в области — сохраните номер. Берегите себя

  3. Проблема — человек в запое уже несколько дней. Ничего не помогает — а помочь нужно срочно. Узнал куда звонить — капельница на дом в Питере. Оперативно выезжают. Полный комплект. Ставят капельницу — быстро. Анонимно и конфиденциально. Цены адекватные. врач на дом капельница от запоя https://alkogolizm.vyvod-iz-zapoya-na-domu-sankt-peterburg-vkx.ru Там контакты и цены для нашего города. Звонил им — всё четко. Организм приходит в норму. Чем раньше тем лучше. Кому надо в Питере — пригодится. Не шутите с организмом

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

  5. Рекомендации строятся вокруг состояния человека а не по универсальному шаблону для всех случаев. Ознакомиться с деталями – платная наркологическая клиника

  6. Неприятность — близкий сорвался. Состояние тяжелое а скорая не вариант. Хорошо что наткнулись на информацию — выездная помощь нарколога. Приезжают за час. Осматривают ставят капельницу — грамотно. Конфиденциально. Цены без сюрпризов. Организм восстанавливается. У нас так спасали отца — лучшее решение в кризис. вывод из запоя на дому вывод из запоя на дому Там и телефон и прайс для Самары. Пригодится. Здоровье близких — дороже. Всё наладится

  7. Проблема накрыла с головой. Не ест не спит. Таблетки не помогают — а соседи уже заметили. Хорошо что есть служба — капельница от запоя на дому. Врач приехал через 40 минут. Восстановили электролитный баланс — без риска для жизни. Никаких следов. Цены — без сюрпризов. Сознание прояснилось. Проверено на родственниках — помогают всегда. вывод из запоя вызов на дом вывод из запоя вызов на дом Там телефон и сайт про область. Пусть будет. Не теряйте его. Мы с вами

  8. Никогда не думал что буду писать такое. Когда муж уже не встаёт с дивана — это выбивает из колеи. Звонили в скорую — бесполезно — почти потеряли человека. Единственное что спасло — круглосуточная помощь клиники в НН. Позвонили — и через 40 минут врач уже в коридоре. Вернули сознание и речь — без паники. Никто не узнает. По фиксированному прайсу. Через 3 часа человек уже пил чай. Проверили на себе. наркологическая клиника клиника помощь наркологическая клиника клиника помощь Там всё по-честному: контакты цены для окрестностей. Скиньте близким. Лучше если номер будет в телефоне. Помощь рядом

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

  10. Попали в переплет — человек теряет себя. Думали справимся сами — нужен специалист. Что реально помогает — анонимный стационар в нашем городе. Врачи с опытом. Восстанавливают психику — с заботой. Анонимно — это главное. Отношение человеческое. Стоимость — адекватная. Знакомые рекомендуют — без срывов уже полгода. наркологический центр https://zapoy.narkologicheskaya-klinika-v-nizhnem-novgorode16.ru По ссылке вся информация для области. Звоните уже сегодня

  11. Алкоголь — это страшная штука. Думаешь: «Остановлюсь завтра» — родные в истерике. Мы прошли через это — своими силами не вытащить. Что действительно работает — неотложная наркологическая служба в нашем городе. Не заставили ждать. Сняли острый психоз — реально помогли. Никаких учётов. Заплатили после. После процедуры — человек пришёл в себя. Неоднократно проверяли. нарколог наркологическая помощь нарколог наркологическая помощь Заходите читайте звоните для районов. Отправьте друзьям. Пусть будет под рукой. Не отчаивайтесь

  12. Самостоятельный вывод из многодневного запоя может сопровождаться резкими изменениями давления сердечного ритма сна и психического состояния. Особенно высокий риск отмечается при многолетнем алкоголизме заболеваниях сердца печени сосудов и нервной системы. Нарколог учитывает эти факторы при выборе лечения и решает можно ли безопасно выполнять процедуры на дому. Подробнее – https://s.vivod-iz-zapoya-v-sankt-peterburge16.ru/

  13. Затеяли ремонт — что планировка не устраивает. Надеялись на быстрый ремонт — что нужны чертежи и расчёты. Стали изучать вопрос — что лучше довериться профессионалам. Хорошо что нашли компанию — согласование перепланировки в нашем городе. И в Мосжилинспекцию подали — всё под ключ. Всё законно и красиво. Ремонт радует глаз. перепланировка под ключ https://moskva.pereplanirovka-kvartir-byn.ru Там все контакты и условия для столицы. А профессионалы знают как её обойти. Доверьтесь тем кто знает все нюансы

  14. Тяжёлая ситуация — родственник пьёт без остановки. Скорая не приезжает — а состояние ухудшается. Хорошо что есть специалисты — нарколог на дом в Воронеже. Оперативно выезжают. С собой всё необходимое. Вводят лекарства — эффективно. Полная анонимность. Не завышают. частный нарколог на дом https://alkogolizm.narkolog-na-dom-voronezh-11.ru Там контакты и цены для Воронежа. Уже пользовался — профессионалы. Состояние нормализуется. Не откладывайте. Кому надо в Воронеже — пригодится. Всех благ

  15. Проблема накрыла — близкий не выходит из состояния. На дому не помогают — нужна срочная госпитализация в Нижнем Новгороде. Друзья порекомендовали — помощь в клинике. Полный контроль состояния. Детоксикация организма — профессионально. Без постановки на учёт. Палаты хорошие. цена вывода из запоя в стационаре https://alkogolizm.vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-elm.ru Вся информация по ссылке для столицы Приволжья. Проверили на себе — врачи высший класс. Человек приходит в себя. Главное — не медлить. Кто в НН — рекомендую. Поправляйтесь

  16. Знаете есть вещи которые не проходят сами. Мы думали что это просто период — но нет. Когда уже не знаешь что делать — стационар где спасают. Сами искали долго — частный центр в области. Они смотрят в глаза. Психологи которые не читают нотации. Круглосуточное наблюдение. Никто не узнает что ты здесь. Мы не верили в успех сначала. Теперь он работает общается мечтает. анонимная наркологическая помощь https://kapelnica.narkologicheskaya-klinika-v-nizhnem-novgorode16.ru По ссылке — цены и адрес для районов. Не теряйте в панике. Начните с одного звонка. Всё обязательно будет хорошо

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

  18. Беда — близкий не выходит из состояния. Скорая не приезжает — а помочь нужно срочно. Повезло найти контакты — нарколог на дом в столице Черноземья. Не заставляют ждать. Полный комплект. Нормализуют состояние — эффективно. Анонимно и конфиденциально. Цены адекватные. анонимный вызов врача нарколога анонимный вызов врача нарколога Там контакты и цены для Воронежа. Уже пользовался — всё четко. Организм приходит в норму. Не откладывайте. Кто в нашем городе — держите под рукой. Берегите себя

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>