2012-03-22 2 views
0

Как проверить, что gen_fsm действительно тайм-аут с eunit?eunit test for timeout

{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? 

ответ

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. 
+0

я получаю: xxx_tests: xxx_timeout_test ... * таймаут * неопределенную ============== ====================================== Ошибка: 0. Пропущено: 0. Пропущено: 0. Один или несколько тестов были отменены. ошибка – Daniel

+0

решена, сообщение msg не было о том, что процесс идет вниз, а о самом тесте. Включил его с {timout, 30, fun() -> * test code *}. И теперь это работает. – Daniel