Как стать автором
Обновить
35
Карма
0.1
Рейтинг
Павел Маминов @Xobotun

Жаба-программист

NullPointerException в чужой библиотеке, или некоторые манипуляции с байткодом

Ненормальное программирование *Java *
Привет, Хабр! Был тёплый пятничный вечер, хотелось скорее бежать домой, пересесть из компьютерного кресла на кресло настоящее в полутора метрах, а тесты всё никак не проходили. Причём не проходили они самым изощрённым образом: падая прямо где-то в недрах библиотеки.

Самое обидное было то, что состояние временной базы, поднятой в докере на время работы этих псевдоинтергационных тестов, было корректное, и фичу можно было отдавать на ревью – dbunit почему-то считал, что у постгреса в колонке с типом uuid не может быть null-значения, и падал при валидации.

Вот как-то так:
java.lang.NullPointerException: null
at org.dbunit.ext.postgresql.UuidType.typeCast (UuidType.java:67)
at org.dbunit.dataset.datatype.AbstractDataType.compare (AbstractDataType.java:83)
at org.dbunit.assertion.comparer.value.IsActualEqualToExpectedValueComparer.isExpected (IsActualEqualToExpectedValueComparer.java:22)
...
at java.util.concurrent.FutureTask.run (FutureTask.java:264)
at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1128)
at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:628)
at java.lang.Thread.run (Thread.java:834)


Что использованная в проекте версия 2.6.0, что самая новая 2.7.0 – увы.

Вечер был тёплый, ноутбук грелся, но вентилятор не включал во имя тишины и троттлился до желанных в многие годы назад 600 МГц, и были варианты действий:

0. Зарепортить баг в dbunit и ждать новой его версии, если pull-request вообще примут.
1. Закостылить тесты, чтобы они не проверяли те uuid-колонки, которые null, хотя именно это они и должны были проверять.
2. Вообще убрать тесты. Кстати, кто-нибудь пишет тесты на тесты?..
3. Закончить рабочий день и нырнуть с головой в исследования.
Сделать вид, будто сегодня пятница
Всего голосов 17: ↑16 и ↓1 +15
Просмотры 2.6K
Комментарии 13

Дешёвый сервер из китайских запчастей. Часть 1, железная

Серверное администрирование *Компьютерное железо
Из песочницы

Дешёвый сервер из китайских запчастей. Часть 1, железная



Размытая кошка позирует на фоне настраиваемого сервера. На заднем плане – мышка на сервере


Привет, Хабр!


В жизни каждого человека иногда назревает необходимость апгрейда компьютера. Иногда это покупка нового телефона взамен разбитого или в погоне за свежими андроидом или камерой. Иногда – замена видеокарты, чтобы тянула игру на минималках. Иногда – установка SSD в ноутбук, на который вы вкорячили десятую винду, а ей не очень нравится жить на Core2Duo и 2.5 гигабайтах адресуемой памяти, и она всё время выгружает неиспользуемые страницы в файл подкачки, изничтожая и без того не великую скорость обмена с 32-гиговым диском.


Моя история – апгрейд сервера, который был собран ещё на первом курсе института. Мои потребности за прошедшие шесть лет выросли, и он, конечно, получил прибавку как в оперативной памяти, так и в дисковой. Проблема в том, что с новыми знаниями были получены новые амбиции – желание применить эти знания на практике – и он с ними мог уже не совладать.


Сначала будет немного скучного вводного текста, а потом пойдут картинки.

Читать дальше →
Всего голосов 39: ↑36 и ↓3 +33
Просмотры 47K
Комментарии 94

Информация

В рейтинге
2,215-й
Откуда
Москва, Москва и Московская обл., Россия
Работает в
Дата рождения
Зарегистрирован
Активность