我在尝试使用Erlang测试模块riak_test来模拟远程节点之间的连接时遇到问题 可以将测试中的远程节点连接到本地节点(由rt:deploy_nodes部署),但是不可能调用rt模块的功能,尤其是为远程节点添加拦截器而不会出错。 是否有一些解决方案或方法可以使用Riak测试模块拦截远程节点? 我需要在远程节点上使用拦截器来检索有关Riak节点状态的一些信息。
更具体地说:riak@10.X.X.X is
我的远程引用节点
在测试中,可以将此节点连接到测试中部署的本地devX@127.0.0.1
节点,但在我的测试程序中,我有:rt_intercept:add(riak@10.X.X.X, {})
我收到错误:
{{badmatch,
{badrpc,
{'EXIT',
{undef,
[{intercept,add,
[riak_kv_get_fsm,riak_kv_get_fsm_intercepts,
[{{waiting_vnode_r,2},waiting_vnode_r_tracing},
{client_info,3},client_info_tracing},
{execute,2},execute_preflist}]],
[]},
{rpc,'-handle_call_call/6-fun-0-',5,
[{file,"rpc.erl"},{line,203}]}]}}}},
[{rt_intercept,add,2,[{file,"src/rt_intercept.erl"},{line,57}]},
{remoteRiak,'-confirm/0-lc$^2/1-2-',1,
[{file,"tests/remoteRiak.erl"},{line,49}]},
{remoteRiak,'-confirm/0-lc$^2/1-2-',1,
[{file,"tests/remoteRiak.erl"},{line,49}]},
{remoteRiak,confirm,0,[{file,"tests/remoteRiak.erl"},{line,49}]}]}
答案 0 :(得分:1)
rt_intercept:add
函数将使用rpc:call
在目标节点的VM中运行intercept:add
函数。这意味着目标节点必须加载拦截模块或在代码路径中。您可以在目标节点的配置中使用add_paths
添加路径。