Erlang 通用测试全局注册名

Erlang common test global registered names

我正在使用通用测试框架为基于牛仔的服务做一些 RPC 测试。

该服务依赖于我在另一个节点上托管的应用程序。在我连接到该节点的应用程序代码中。

普通测试中: ct:print(默认值,50,“~p”,[节点()])。 Returns [mynode@localhost]

但是 ct:print(默认值,50,“~p”,[全局:registered_named()])。 returns []

我按照此处列出的步骤进行操作 Globally registered process is not registered

但这似乎没有任何效果。如果我启动一个 shell,手动连接,列出节点,然后执行我的远程函数,一切正常。普通测试是否有一些独特的东西会阻止它工作?远程节点是否必须由通用测试框架管理?

global 需要一些时间才能看到所有节点上的所有名称。您是否尝试过在 net_adm:ping 或您用来连接节点的任何方式之后等待一段时间?

如果您依赖可见的全局名称,您可能应该通过轮询全局的注册名称来等待它们,直到您需要的一切都可见为止。

它可能适用于 shell,因为你比 运行 测试用例慢。