···150150 :ok
151151 end
152152153153+ @spec restart_node(pid, atom, non_neg_integer) :: :ok | {:error, :node_not_found | :node_stopped}
153154 def restart_node(scheduler, name, delay) when is_atom(name) do
154155 GenServer.call(scheduler, {:restart_node, name, delay})
155156 end
156157158158+ @spec list_nodes(pid) :: [atom]
157159 def list_nodes(scheduler) do
158160 GenServer.call(scheduler, :list_nodes)
159161 end
···724726 ProcStore.list_processes(state.proc_store)
725727 |> Enum.filter(&(&1.node == node.name))
726728 |> Enum.each(fn %ProcState{pid: pid} ->
729729+ # TODO: the order here is not deterministic, but it probably doesn't matter?
727730 :ok = kill_process(pid, :shutdown)
728731 :ok = remove_process(state, pid)
729732 end)
+2
lib/construct/sim_server.ex
···337337 end
338338 end
339339340340+ @spec list_nodes :: [atom]
340341 def list_nodes do
341342 if not simulated?(), do: raise "list_nodes/0 can only be called in simulation"
342343 scheduler_pid = fetch_scheduler_pid!()
···352353 Scheduler.start_node(scheduler_pid, name, app_module, args)
353354 end
354355356356+ @spec restart_node(atom, non_neg_integer) :: :ok | {:error, :node_not_found | :node_stopped}
355357 def restart_node(name, delay_ms \\ 0) when is_atom(name) and is_integer(delay_ms) do
356358 if not simulated?(), do: raise "restart_node/1 can only be called in simulation"
357359 scheduler_pid = fetch_scheduler_pid!()