Size: a a a

2018 November 27

МБ

Максим Барулин in pro.elixir
и закончить тест после того, как они завершились
источник

АП

Артем Паньков in pro.elixir
это непохоже на какое-то масштабируемое решение. тестов десятки если не сотни, а процессы запускаются где-то в кишках глубоко
их вот разве что действительно килять
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
Просто безхозные просто всё равно не есть хорошо, даже если они делают фигню. Будет так из-за бага или нагрузки миллион бесхозных, непонятно откуда взятых процессов - уже будет не всё равно.
источник

DR

Dmitry Russ (Aleksandrov) in pro.elixir
А prep_stop/stop - решение вообще наиболее корректное, потому что этот callback и предназначен для коректного завершения приложения, т.е. должен остановить все запущенные собой процессы. И будет работать не только в тестах.
источник

AD

Anastasiya Dyachenko in pro.elixir
Артем Паньков
в итоге иногда тест заканчивается раньше них и какает варнингами. для успешного завершения теста они не нужны. иногда они заканичваются раньше и вроде как ждать их через pubsub нельзя
если процесс шлет сообщения и на них можно подписаться, то ждать через assert_receive
источник

АП

Артем Паньков in pro.elixir
в итоге иногда тест заканчивается раньше них и какает варнингами. для успешного завершения теста они не нужны. иногда они заканичваются раньше и вроде как ждать их через pubsub нельзя
источник

АП

Артем Паньков in pro.elixir
Так не получитсч
источник

AD

Anastasiya Dyachenko in pro.elixir
если assert_receive поставить, то тест не закончится раньше как раз, а дождется сообщения
источник

AD

Anastasiya Dyachenko in pro.elixir
ну это при условии что сообщения отправляются перед завершением процесса, или после записи в базу и больше в базу процесс писать не будет
источник

AD

Anastasiya Dyachenko in pro.elixir
у нас уже так работает и сейчас проблема в том что слишком много assert_receive-ов в тестах
источник

AM

Alexander Malaev in pro.elixir
Артем Паньков
как тестировать приложение с кучей процессов? например, в ходе обработки сообщения у меня запускается пара процессов через spawn
у нас кое-где заюзан такой хак:
defmodule SomeNamespace.Async do
 @enabled Application.get_env(:some_namespace, :async_module, true)

 if @enabled do
   def run(fun), do: Task.start_link(fun)
 else
   def run(fun), do: fun.()
 end
end

ну и при тестировании получаем синхронный код
источник

AM

Alexander Malaev in pro.elixir
если какие-то процессы нужны, типа регистри или генсервера глобального какого-то, стартуем через start_supervised
источник

АП

Артем Паньков in pro.elixir
Alexander Malaev
у нас кое-где заюзан такой хак:
defmodule SomeNamespace.Async do
 @enabled Application.get_env(:some_namespace, :async_module, true)

 if @enabled do
   def run(fun), do: Task.start_link(fun)
 else
   def run(fun), do: fun.()
 end
end

ну и при тестировании получаем синхронный код
ну это понятная тема)
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Alexey Bolshakov
а что это?
Короче это типа Thor, только не привязанный к терминалу.
Для примера есть cli в консоли и в Телеге
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Я думал сделать ещё через tcp по telnet но не успел
источник

ŹR

Źmićer Rubinštejn in pro.elixir
И через websocket можно
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Но тоже не успел
источник

ŹR

Źmićer Rubinštejn in pro.elixir
Через SMS можно
источник

ŹR

Źmićer Rubinštejn in pro.elixir
источник

AB

Alexey Bolshakov in pro.elixir
Thor это типа прокси обходить блокировки?
источник