eunit тест на тайм-аут

Как я могу проверить, действительно ли gen_fsm имеет тайм-аут с eunit?

{ok, GH} = gen_fsm:start_link(myFSM, [], []),
//after 15 sec it should timeout if no messages received. 
//What must I write here to test it?

person Daniel    schedule 22.03.2012    source источник


Ответы (1)


Я считаю, что это одно из решений:

{ok, GH} = gen_fsm:start_link(myFSM, [], []),
Ref = erlang:monitor(process,GH),
receive
    {'DOWN', Ref, process, GH,  normal} ->
        test_passed
after 
    15000 ->
        ?assert("FSM did not die.") % will always fail
end.
person Isac    schedule 22.03.2012
comment
Я получаю: xxx_tests: xxx_timeout_test ... * истекло время ожидания * undefined ====================================== =================== Ошибка: 0. Пропущено: 0. Пройдено: 0. Один или несколько тестов были отменены. ошибка - person Daniel; 23.03.2012
comment
решено, сообщение было не о сбое процесса, а о самом тесте. Заключил его с помощью {timout, 30, fun () - ›тестовый код}. И теперь это работает. - person Daniel; 23.03.2012