Testing 如何使用Riak_测试模块拦截Riak中的远程节点?

Testing 如何使用Riak_测试模块拦截Riak中的远程节点?,testing,rpc,riak,intercept,Testing,Rpc,Riak,Intercept,我在尝试Erlang测试模块riak_测试以模拟远程节点之间的连接时遇到问题。 可以将测试中的远程节点连接到本地节点(由rt:deploy_nodes部署),但不可能调用rt模块的函数,尤其是为远程节点添加拦截器时不会出错。 是否有一些解决方案或方法可以使用Riak测试模块拦截远程节点? 我需要在远程节点上使用拦截器来检索一些关于Riak节点状态的信息 更具体地说:riak@10.X.X.X是我的远程引用节点。 在测试中,可以将此节点连接到本地devX@127.0.0.1在测试中部署的节点,但在

我在尝试Erlang测试模块riak_测试以模拟远程节点之间的连接时遇到问题。
可以将测试中的远程节点连接到本地节点(由rt:deploy_nodes部署),但不可能调用rt模块的函数,尤其是为远程节点添加拦截器时不会出错。
是否有一些解决方案或方法可以使用Riak测试模块拦截远程节点?
我需要在远程节点上使用拦截器来检索一些关于Riak节点状态的信息

更具体地说:
riak@10.X.X.X是我的远程引用节点。
在测试中,可以将此节点连接到本地
devX@127.0.0.1
在测试中部署的节点,但在我的测试程序中,我有:
rt\u 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}]}]}  

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

谢谢,它成功了。我对Riak中的远程节点只有一个小问题。我不知道如何从本地测试停止/启动远程节点。如果我使用标准
rt:start('riak@10.X.X.X“)
我收到错误消息:
{function_子句,[{orddict,fetch,['riak@10.X.X.X'[{'dev2@127.0.0.1“,2},…]],[file,“orddict.erl”}{line,413}]}
我认为(在研究了rt源代码之后)这意味着没有定义远程节点的路径,因为我没有像其他节点一样通过rt:deploy_节点启动它,而且此函数显然为其他节点进行映射。有什么想法可以克服这个问题吗?function子句消息表示在创建环文件后节点名称发生了更改。最简单的修复方法是删除环文件(在应用程序配置中定义位置)并重试。这不是我定期从该位置删除环文件的问题,否则节点将不会首先加入网络。当我从VM1本地启动远程节点时,我可以设置到远程节点的连接,但无法从VM2中的测试远程停止/启动。错误消息表明您的一个节点名为
dev2@127.0.0.1
您将无法通过本地主机接口进行任何远程通信