如何使用riak_test模块拦截Riak中的远程节点?

时间:2014-06-05 11:07:07

标签: testing rpc riak intercept

我在尝试使用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}]}]}  

1 个答案:

答案 0 :(得分:1)

rt_intercept:add函数将使用rpc:call在目标节点的VM中运行intercept:add函数。这意味着目标节点必须加载拦截模块或在代码路径中。您可以在目标节点的配置中使用add_paths添加路径。