main

Простые системы тестов для приложения

Понадобилась мне софтина для автоматизации тестов приложения. Задача следующая: запустить команду, дать stdin, поймать и сравнить stdout, проверить код возврата. Казалось бы, чего проще, пишется на коленке на шелле за пару часов.

Но это же не наш метод! Полез в репу, смотреть чего уже напридумывали на эту тему.

→ Читать дальше...

2013-03-25

zoneminder

Хочу немного рассказать про свой опыт борьбы с zoneminder'ом.

Как мне думается, лучшие времена его давно прошли и держат его из-за полного отсутствия альтернатив.

Почему я так думаю:

  • последний релиз был 2 года назад (в принципе не смертельно)
  • в проекте накопились мелкие баги, которые не торопятся фиксить.

Например баг в Memory.pm с некорректным определением размера памяти висит с 2009 года. По поводу разделения ffmpeg и libav не было предпринято никаких телодвижений (а это минимум 2 основных бакенда и заимствованный код rtsp). Кроме того, тот же libav сыплет warning'ами на неинициализацию сети при использовании rtsp через ffmpeg-овский бакенд, типа "скоро сломаюсь".

→ Читать дальше...

2013-03-20

Про схему БД. Опять.

На сей раз вопрос решён окончательно. Разобрал исходники gelbooru, посмотрел схему бд.

Так вот, ребята тоже используют MATCH, полнотекстовые индексы и зверское кэширование результатов поиска.

Ещё раз погонял тесты - не стоит оно того. Трёхэтажные запросы, индексы и сервисные данные втрое превышающие полезную нагрузку, читать глазами - забудьте.

Надо будет дополнить данными, сделаю так:

id | ... | tags | <- исходная таблица
|->  ...
`->| ... | data | <- N'ая таблица

И все связи - по этому единственному ключу.

2013-02-19

Управление конфигурациями

«Разрешите говорить откровенно! Мне не нравится эта экс'педиция! Мне не нравятся эти мат'росы! И воо'пще! Мне воо'пще ничего не нравится, сэр!»

Второй подход к снаряду. Сейчас появился и тестовый полигон и нежелание лазить на сервера руками, поэтому решил посмотреть, что у нас появилось за 2 года с момента прошлой попытки.

→ Читать дальше...

2013-02-18

Рекурсия для основных операций

Добавил рекурсию ко всем основным операциям в режиме tool'а. В "dumb"-вариации заработало прям сразу с полпинка, аж сам в шоке.

В "smart" пришлось посидеть над багами, и я подозреваю, что выловил ещё не всё. Также, пришлось предварительно посидеть над рефакторингом функций, но это мелочи.

Кроме того, я ускорил некоторые операции, например случаи, когда из набора тегов ничего не удаляется, т.к. указанного тега нет, и базу обновлять не нужно.

Что приятно удивило -- "dumb"-версия работает очень быстро, обход двух тысяч файлов и добавление к ним одного тега - около двух сотых секунды. Ожидал где-то порядка 0.04-0.10 c. Удаление не до пустого набора - ~0.02с.

"smart"-версия уже помедленнее, порядка двух-трёх секунд. Но там не включены транзакции в базе, поэтому это нормально и ожидаемо.

2013-01-11