Vlad
Вообще не использовать этот подход отправки логов, для такого есть готовые коллекторы логов по типу vector
Максим
Не смотрел в эту сторону. Просто все логи отправляются в симфони и ок, а вот внутри контейнера раббита не хочет(
Alexey Mishurovskiy
Коллеги, вопрос. а как правильно делать так, чтобы во время прогона тестов в PHPUnit можно было перенакатить фикстуры ?
Alexey Mishurovskiy
т.к. некоторые тесты меняют состояние БД а это неприемлемо
Vlad
bin/console d:f:l без append вроде же затирает старое состояние
Alexey Mishurovskiy
это понятно. я про то когда запускаешь bin/phpunit
Vlad
bin/phpunit && bin/console d:f:l так не пойдет? 🤣🤣
Vlad
или ты хочешь обойтись одной командой?
Vlad
вот какой то бандл есть https://packagist.org/packages/lchrusciel/api-test-case
Alexey Mishurovskiy
Ну то есть запуст тестов будет примерно такой: bin/console --env=test do:fi:lo -n \ && bin/phpunit test/t1 \ && bin/console --env=test do:fi:lo -n \ && bin/phpunit test/t2 \ && bin/console --env=test do:fi:lo -n \ && bin/phpunit test/t3
Vlad
а вот оно что. ну пробуй тот бандл, он умеет грузить фикструы взависмости от теста. Хотя странная сиутация конечно
Nikolay
Если доктрин фикстур бандл там это можно настроить
Alexey Mishurovskiy
Вот как сейчас выглядит запуск prepare_test: bin/console --env=test do:d:d --if-exists --force -n \ && bin/console --env=test do:d:c -n \ && bin/console --env=test messenger:setup-transports \ && bin/console --env=test do:mi:mi -n \ && bin/console --env=test do:fi:lo -n \ && bin/console --env=test app:import:bin -n test: prepare_test bin/phpunit
Nikolay
Бандл с фикстурами
Alexey Mishurovskiy
Бандл с фикстурами
Николай, учитесь выражаться яснее
Nikolay
Николай, учитесь выражаться яснее
https://symfony.com/bundles/DoctrineFixturesBundle/current/index.html
Alexey Mishurovskiy
Вопрос был простой: Кто как поступает, если между тестами надо ресетнуть базу и заново загрузить фикстуры
Vlad
Да не то, что бы странная, просто интересую кто как делает
У меня просто таких кейсов не возникало, чтобы под каждый тесткейс накатывать заново фикстуры
Alexey Mishurovskiy
У меня просто таких кейсов не возникало, чтобы под каждый тесткейс накатывать заново фикстуры
Не под каждый, но одна часть приложения точно этого хочет. пока решили порядком выполнения
Павел
Вопрос был простой: Кто как поступает, если между тестами надо ресетнуть базу и заново загрузить фикстуры
Один из флоу - ни один из тестов не меняет бд, потому что под транзакций, которая откаттывается (через бандл или руками). Опять же не понятно, что вы хотите. Некоторые накатывают разные фикстуры для разных тестов, некоторые в каждом тесте свои фикстуры, некоторые один раз на все тесты.
Павел
А можете скинуть пример такого флоу? интересно было бы посмотреть готовые инструменты
Да это я про дама бандл. Я думаю это самое распространённое решение. Даже в доке симфони описано
Павел
А вы используете его?
Да. Он просто установливается в вендор и ставится экстеншен в phpunit.dist вот и все его использование)
Павел
https://symfony.com/doc/current/testing.html#resetting-the-database-automatically-before-each-test
Павел
Приветствую. Вопросик по огранизации queryBus месседжера. Хотя может и не про него, а про просто чтение. К чему относится query? Ведь часто чтение захватывает разные контексты. Конкатинируете запрос где нить в контроллере / BFFе или же просто query лежит вне констекста и ходит в разные контексты?
Павел
Понятно что можно CQRS с отдельной view, но не хотелось бы пока наручивать на mvp
Павел
Но даже если это будет CQRS полноценный, то сборный контекст - отдельная фича и query лежит в нем?
Dmitry
Приветствую. Вопросик по огранизации queryBus месседжера. Хотя может и не про него, а про просто чтение. К чему относится query? Ведь часто чтение захватывает разные контексты. Конкатинируете запрос где нить в контроллере / BFFе или же просто query лежит вне констекста и ходит в разные контексты?
По умолчанию предпочитать склейку в контроллере/BFF. И только если так не получается из-за сложных фильтраций или сортировок, то уже делать отдельной фичей/сервисом и дублировать туда данные в нужном виде.
The Ant
В мессенджере сраном можно как-то гарантированно не удалять зафейленные задачи? проблема в том, что если поставить лимит для ретраев, он работает и на фейлы. После указанного кол-ва ретраев задача просто удаляется, с ошибкой или нет не важно.
The Ant
в том плане, что задача ретраится допустим 3 раза, потом в потоке фейла также ретраится 3 раза и удаляется
Сергей
а ты как хочешь? из коробки есть failure_transport либо свою стратегию написать как хочешь RetryStrategyInterface
Юра
В доке же написано
Юра
Ант читай доку )
Юра
Можно создать транспорт для них и делай потом что угодно с ними
Павел
The Ant
Можно создать транспорт для них и делай потом что угодно с ними
я по доке и сделал, ретрай применяется на фейлы. Т.е. 3 в обычном потоке, и 3 в фейлах, далее делит пофигу как завершилось
Юра
If the message fails again, it will be re-sent back to the failure transport due to the normal retry rules. Once the max retry has been hit, the message will be discarded permanently.
Юра
Если ты просто делаешь консюм фейл транспорта, то обычные правила там для него идут
Юра
Иначе просто получится бесконечная переотправка сообщений
Юра
Тебе просто нужно не консюмить фейл транспорт
The Ant
Это понятно, если попало в фейл то это уже сигнал для как минимум просмотра глазами. Проблема в том, что удаляются мессаги после команды messenger:failed:retry, а они не дожны
Юра
Точно не должны? Я просто в доке не вижу об этом
Юра
Может должны
Юра
Ретрай стратегию можно наверное настроить для каждого транспорта отдельно?
The Ant
предлагаешь миллиард попыток для фейлов сделать? )
The Ant
Может должны
точно не должны. Нерешенная проблема не должна удаляться автоматически. То, что это происходит косяк фрейма
The Ant
ладна, напишу ишью, посмотрим чо ответят...
Юра
Ну так настрой фейл транспорту ретрай стратегию другую
Павел
Это понятно, если попало в фейл то это уже сигнал для как минимум просмотра глазами. Проблема в том, что удаляются мессаги после команды messenger:failed:retry, а они не дожны
Как вариант, тебе надо копипастнуть их ретрай стратегию, но поменять в них удаление из очереди на то, что тебе надо.
Павел
точно не должны. Нерешенная проблема не должна удаляться автоматически. То, что это происходит косяк фрейма
Это не касяк, а действие, которое ты можешь поменять написав свою реализацию. Либо ивенты какие либо прослушать
Павел
Я например вообще нахер шлю во всех проектах файлед, ну просто это не критично там. Опять же какие то месаги можно нахер послать, а какие то надо пронотифицировать для ручного разбора.
Павел
Всем не угодидить
Павел
А как вручную разбирать, если задача удалена?
Так вот тебе надо сделать свою точку расширения (ивент, ретрай свой) или еще что-то, что отложит определнную или все мессаги в другое место.
The Ant
Это другое место и есть фейл очередь )
The Ant
Фейл на то и фейл, чтобы вручную разобрать
Юра
А как вручную разбирать, если задача удалена?
Там же есть куча команд консольных чтобы просмотреть их не консюмя
Павел
Фейл на то и фейл, чтобы вручную разобрать
Это ты придумал, и хочешь что бы так было для тебя. Не разбирай на автомате и всё
Павел
Сделай ретрай на 1000 с делЭй большим и запускай ручками. Короче не понятно, что ты хочешь. Автоматом работающий фейл, но что бы не автоматом, чтобы не болтались бесконечно или бескончено?
Al
Добрый день. Подскажите пож-та куда копать. У меня сервис в бандле имеет в качестве аргументов в конструкторе пару psr интерфейсов и массив. В extension в бандле я настраиваю передачу массива из конфига, а в services.yaml в проекте я хочу настроить сервисы которые подставятся в конструктор. Однако так не работает, видимо объявление в services.yaml перебивает настройку из extension.
The Ant
Сделай ретрай на 1000 с делЭй большим и запускай ручками. Короче не понятно, что ты хочешь. Автоматом работающий фейл, но что бы не автоматом, чтобы не болтались бесконечно или бескончено?
Вы не поняли, фейл не консумится, и как по мне не должен. Если задача попала в фейл, это верный признак что что-то сломалось и надо посмотреть что. М.б. бага какая. С точки зрения здравого смысла фейл не должен удаляться автоматом нигде вообще. Если ты его сделал, значит твои задачи важны и нужен контроль. Иначе какой смысл вообще делать фейл, если тебе плевать на то, будут задачи с ошибкой или нет.
Al
Подставить нужные сервисы в бандле не вариант стразу?
Бандл же не знает какие сервисы будут нужны в проекте
Юра
Бандл же не знает какие сервисы будут нужны в проекте
Ну по идее завязка должна быть на интерфейсы и бандлу не особо нужно знать какой конкретно сервис там будет
The Ant
Юра
Ну посмотри доку
Павел
Я в ручную запускаю, и задача удаляется, даже с ошибкой
Я так понимаю, ты хочешь чтобы они бесконечно крутились пока не выполнятся?
Al
Ну по идее завязка должна быть на интерфейсы и бандлу не особо нужно знать какой конкретно сервис там будет
Так и есть, бандл завязан на интерфейсы, но в services.yaml я пытаюсь уже конкретно задать arguments у сервиса
Юра
А что делать? 😄
php bin/console messenger:failed:show php bin/console messenger:failed:remove 20
The Ant
Я так понимаю, ты хочешь чтобы они бесконечно крутились пока не выполнятся?
Да, не автоматом, руками. И тока фейлы. Про специальный эксепшон Я читал