Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replaced :slave with :peer. #28

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 11 additions & 9 deletions lib/local_cluster.ex
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,17 @@ defmodule LocalCluster do
def start_nodes(prefix, amount, options \\ [])
when (is_binary(prefix) or is_atom(prefix)) and is_integer(amount) do
nodes = Enum.map(1..amount, fn idx ->
{ :ok, name } = :slave.start_link(
'127.0.0.1',
:"#{prefix}#{idx}",
'-loader inet -hosts 127.0.0.1 -setcookie "#{:erlang.get_cookie()}"'
)
name
{ :ok, pid, name } = :peer.start_link(%{
host: '127.0.0.1',
name: :"#{prefix}#{idx}",
args: ['-loader inet -hosts 127.0.0.1 -setcookie "#{:erlang.get_cookie()}"']
})
{name, pid}
end)

rpc = &({ _, [] } = :rpc.multicall(nodes, &1, &2, &3))
node_names = Enum.map(nodes, fn { name, _ } -> name end)

rpc = &({ _, [] } = :rpc.multicall(node_names, &1, &2, &3))

rpc.(:code, :add_paths, [ :code.get_path() ])

Expand Down Expand Up @@ -109,8 +111,8 @@ defmodule LocalCluster do
Stops a set of child nodes.
"""
@spec stop_nodes([ atom ]) :: :ok
def stop_nodes(nodes) when is_list(nodes),
do: Enum.each(nodes, &:slave.stop/1)
def stop_nodes(peer_pids) when is_list(peer_pids),
do: Enum.each(peer_pids, fn pid -> :peer.stop(pid) end)

@doc """
Stops the current distributed node and turns it back into a local node.
Expand Down
20 changes: 11 additions & 9 deletions test/local_cluster_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,19 @@ defmodule LocalClusterTest do
test "creates and stops child nodes" do
nodes = LocalCluster.start_nodes(:child, 3)

[node1, node2, node3] = nodes
[{node1, n1pid}, {node2, n2pid}, {node3, n3pid}] = nodes

assert Node.ping(node1) == :pong
assert Node.ping(node2) == :pong
assert Node.ping(node3) == :pong

:ok = LocalCluster.stop_nodes([node1])
:ok = LocalCluster.stop_nodes([n1pid])

assert Node.ping(node1) == :pang
assert Node.ping(node2) == :pong
assert Node.ping(node3) == :pong

:ok = LocalCluster.stop_nodes([node2, node3])
:ok = LocalCluster.stop_nodes([n2pid, n3pid])

assert Node.ping(node1) == :pang
assert Node.ping(node2) == :pang
Expand All @@ -33,7 +33,7 @@ defmodule LocalClusterTest do
]
])

[node1] = nodes
[{node1, _}] = nodes

node1_apps =
node1
Expand All @@ -44,7 +44,9 @@ defmodule LocalClusterTest do
assert :ex_unit in node1_apps
assert (:no_real_app in node1_apps) == false

:ok = LocalCluster.stop_nodes(nodes)
peer_pids = Enum.map(nodes, &(elem(&1, 1)))

:ok = LocalCluster.stop_nodes(peer_pids)
end

test "spawns tasks directly on child nodes" do
Expand All @@ -54,7 +56,7 @@ defmodule LocalClusterTest do
]
])

[node1, node2, node3] = nodes
[{node1, _}, {node2, _}, {node3, _}] = nodes

assert Node.ping(node1) == :pong
assert Node.ping(node2) == :pong
Expand All @@ -80,19 +82,19 @@ defmodule LocalClusterTest do
end

test "overriding environment variables on child nodes" do
[node1] = LocalCluster.start_nodes(:cluster_var_a, 1, [
[{node1, _}] = LocalCluster.start_nodes(:cluster_var_a, 1, [
environment: [
local_cluster: [override: "test1"]
]
])

[node2] = LocalCluster.start_nodes(:cluster_var_b, 1, [
[{node2, _}] = LocalCluster.start_nodes(:cluster_var_b, 1, [
environment: [
local_cluster: [override: "test2"]
]
])

[node3] = LocalCluster.start_nodes(:cluster_no_env, 1)
[{node3, _}] = LocalCluster.start_nodes(:cluster_no_env, 1)

node1_env = :rpc.call(node1, Application, :get_env, [:local_cluster, :override])
node2_env = :rpc.call(node2, Application, :get_env, [:local_cluster, :override])
Expand Down