【发布时间】:2013-07-27 22:01:31
【问题描述】:
我对 rebar 下的分布式测试有一些问题。
钢筋以名称 nonode@nohost 开始节点。之后我调用帮助函数make_distrib,它提供正常的节点名称并开始分发工作。
启动从节点后,我无法向它发送任何 lambda。我有错误:
但是!如果我以简单的方式运行它测试 - 一切正常:
$erl 1> c(msg_proxy_tests)。 {好的,msg_proxy_tests} 2> eunit:test({module, msg_proxy_tests},[详细])。 ========================= EUnit ======================== 模块'msg_proxy_tests'msg_proxy_tests:distrib_mode_test_(节点的分布式模式测试)... msg_proxy_tests.erl:14:: 节点 () = [test1@just] msg_proxy_tests.erl:15:: 节点 () = test1@just msg_proxy_tests.erl:17:: 节点 () = [test1@just] [0.238 秒] 好我该如何解决这个问题?
模块来源: -模块(msg_proxy_tests)。 -include_lib("eunit/include/eunit.hrl")。 distrib_mode_test_()-> {"节点的分布式模式测试", timeout, 60, 乐趣()-> {ok, 主机} = inet:gethostname(), make_distrib("tests@"++Host, shortnames), 从机:开始(主机,test1), ?debugVal(节点()), spawn(list_to_atom("test1@"++Host), fun()-> ?debugVal(node()) end), 定时器:睡眠(100), ?debugVal(节点()), stop_distrib(), 好的 结尾}。 -spec make_distrib(NodeName::string()|atom(), NodeType::shortnames | longnames) -> {ok, ActualNodeName::atom} | {错误,原因::term()}。 make_distrib(NodeName, NodeType) 当 is_list(NodeName) -> make_distrib(erlang:list_to_atom(NodeName), NodeType); make_distrib(节点名称,节点类型)-> 案例节点()的 'nonode@nohost' -> [] = os:cmd("epmd -daemon"), 案例 net_kernel:start([NodeName, NodeType]) of {ok, _Pid} -> 节点() 结尾; CurrNode -> CurrNode 结尾。 stop_distrib()-> 网络内核:停止()。
【问题讨论】: