Skip to content

Commit 39165f8

Browse files
committed
test: get epmdless and swarm working
1 parent 989b3a9 commit 39165f8

File tree

9 files changed

+40
-24
lines changed

9 files changed

+40
-24
lines changed

apps/engine/lib/engine/search/store/backends/ets.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ defmodule Engine.Search.Store.Backends.Ets do
235235
for {node_name_charlist, _port} <- node_and_port_list,
236236
node_name_string = List.to_string(node_name_charlist),
237237
String.contains?(node_name_string, project_substring) do
238-
:"#{node_name_string}@127.0.0.1"
238+
:"#{node_name_string}"
239239
end
240240
end
241241

apps/engine/test/test_helper.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ random_number = :rand.uniform(500)
55

66
with :nonode@nohost <- Node.self() do
77
{:ok, _pid} =
8-
:net_kernel.start(:"testing-#{random_number}@127.0.0.1", %{name_domain: :longnames})
8+
Node.start(:"testing-#{random_number}", :shortnames)
99
end
1010

1111
Engine.Module.Loader.start_link(nil)

apps/expert/bin/debug_shell.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
project_name=$1
44
node_name=$(epmd -names | grep manager-"$project_name" | awk '{print $2}')
55

6-
iex --name "shell@127.0.0.1" \
6+
iex --sname "shell" \
77
--remsh "${node_name}" \
88
--cookie expert

apps/expert/lib/expert/engine_node.ex

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ defmodule Expert.EngineNode do
3535
[
3636
"--erl",
3737
"-start_epmd false -erl_epmd_port #{dist_port} -dist_listen false",
38-
"--name",
38+
"--sname",
3939
Project.node_name(state.project),
4040
"--cookie",
4141
state.cookie,
4242
"--no-halt",
4343
"-e",
44-
"Node.connect(#{this_node}); IO.puts(\"ok\")"
44+
"Node.connect(#{this_node}) |> dbg(); IO.puts(\"ok\")"
4545
| path_append_arguments(paths)
4646
]
4747

@@ -52,6 +52,7 @@ defmodule Expert.EngineNode do
5252
{:error, :no_elixir}
5353

5454
port ->
55+
dbg(port)
5556
state = %{state | port: port, started_by: from}
5657
{:ok, state}
5758
end
@@ -68,7 +69,10 @@ defmodule Expert.EngineNode do
6869
end
6970

7071
def on_nodeup(%__MODULE__{} = state, node_name) do
71-
if node_name == Project.node_name(state.project) do
72+
dbg(node_name)
73+
74+
if String.starts_with?(to_string(node_name), to_string(Project.node_name(state.project)))
75+
|> dbg() do
7276
{pid, _ref} = state.started_by
7377
Process.monitor(pid)
7478
GenServer.reply(state.started_by, :ok)
@@ -126,18 +130,23 @@ defmodule Expert.EngineNode do
126130
node_name = Project.node_name(project)
127131
bootstrap_args = [project, Document.Store.entropy(), all_app_configs()]
128132

133+
dbg(node_name)
134+
129135
with {:ok, node_pid} <- EngineSupervisor.start_project_node(project),
130136
{:ok, glob_paths} <- glob_paths(project),
131137
:ok <- start_node(project, glob_paths),
132-
:ok <- :rpc.call(node_name, Engine.Bootstrap, :init, bootstrap_args),
138+
dbg(Node.ping(node_name)),
139+
dbg(Node.list(:hidden)),
140+
:ok <- :rpc.call(node_name, Engine.Bootstrap, :init, bootstrap_args) |> dbg(),
133141
:ok <- ensure_apps_started(node_name) do
134142
{:ok, node_name, node_pid}
135143
end
144+
|> dbg()
136145
end
137146

138147
defp start_net_kernel(%Project{} = project) do
139148
manager = Project.manager_node_name(project)
140-
:net_kernel.start(manager, %{name_domain: :longnames})
149+
Node.start(manager, :shortnames) |> dbg()
141150
end
142151

143152
defp ensure_apps_started(node) do
@@ -155,7 +164,7 @@ defmodule Expert.EngineNode do
155164
["/**/priv" | app_globs]
156165
end
157166

158-
def glob_paths(_) do
167+
defp glob_paths(_) do
159168
entries =
160169
for entry <- :code.get_path(),
161170
entry_string = List.to_string(entry),
@@ -206,6 +215,7 @@ defmodule Expert.EngineNode do
206215
launcher = Expert.Port.path()
207216

208217
GenLSP.info(lsp, "Finding or building engine for project #{project_name}")
218+
dbg("building engine")
209219

210220
with_progress(project, "Building engine for #{project_name}", fn ->
211221
port =
@@ -265,15 +275,14 @@ defmodule Expert.EngineNode do
265275

266276
def start_link(%Project{} = project) do
267277
state = State.new(project)
268-
GenServer.start_link(__MODULE__, state, name: name(project))
278+
dbg(state)
279+
GenServer.start_link(__MODULE__, state, name: name(project)) |> dbg()
269280
end
270281

271-
@start_timeout 3_000
282+
@start_timeout 30_000
272283

273284
defp start_node(project, paths) do
274-
project
275-
|> name()
276-
|> GenServer.call({:start, paths}, @start_timeout + 500)
285+
project |> name() |> GenServer.call({:start, paths}, @start_timeout + 500) |> dbg()
277286
end
278287

279288
@impl GenServer
@@ -287,8 +296,11 @@ defmodule Expert.EngineNode do
287296
:ok = :net_kernel.monitor_nodes(true, node_type: :all)
288297
Process.send_after(self(), :maybe_start_timeout, @start_timeout)
289298

299+
dbg("hi")
300+
290301
case State.start(state, paths, from) do
291302
{:ok, state} ->
303+
dbg(state)
292304
{:noreply, state}
293305

294306
{:error, :no_elixir} ->
@@ -355,7 +367,8 @@ defmodule Expert.EngineNode do
355367
end
356368

357369
@impl true
358-
def handle_info({_port, {:data, _message}}, %State{} = state) do
370+
def handle_info({_port, {:data, message}}, %State{} = state) do
371+
dbg(message)
359372
{:noreply, state}
360373
end
361374

apps/expert/lib/expert/port.ex

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,9 +80,12 @@ defmodule Expert.Port do
8080

8181
_ ->
8282
{path, 0} =
83-
System.cmd(shell, ["-i", "-l", "-c", "cd #{directory} && echo $PATH"], env: env)
83+
System.cmd(shell, ["-i", "-l", "-c", "cd #{directory} && echo $PATH"],
84+
stderr_to_stdout: true,
85+
env: env
86+
)
8487

85-
path
88+
path |> String.trim() |> String.split("\n") |> List.last()
8689
end
8790
end
8891

apps/expert/mix.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ defmodule Expert.MixProject do
7777

7878
defp deps do
7979
[
80-
{:burrito, "~> 1.4", only: [:dev, :prod]},
80+
{:burrito, "~> 1.4"},
8181
{:deps_nix, "~> 2.4", only: :dev},
8282
Mix.Credo.dependency(),
8383
Mix.Dialyzer.dependency(),

apps/expert/test/test_helper.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Application.ensure_all_started(:snowflake)
22
Application.ensure_all_started(:refactorex)
3-
{"", 0} = System.cmd("epmd", ~w(-daemon))
3+
Application.ensure_all_started(:swarm)
44
random_number = :rand.uniform(500)
55

66
with :nonode@nohost <- Node.self() do
77
{:ok, _pid} =
8-
:net_kernel.start(:"testing-#{random_number}@127.0.0.1", %{name_domain: :longnames})
8+
Node.start(:"testing-#{random_number}", :shortnames)
99
end
1010

1111
Engine.Module.Loader.start_link(nil)

apps/forge/lib/forge/project.ex

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ defmodule Forge.Project do
7676
The project node's name
7777
"""
7878
def node_name(%__MODULE__{} = project) do
79-
:"project-#{name(project)}-#{entropy(project)}@127.0.0.1"
79+
:"project-#{name(project)}-#{entropy(project)}"
8080
end
8181

8282
def entropy(%__MODULE__{} = project) do
@@ -164,7 +164,7 @@ defmodule Forge.Project do
164164
end
165165

166166
def manager_node_name(%__MODULE__{} = project) do
167-
:"manager-#{name(project)}-#{entropy(project)}@127.0.0.1"
167+
:"manager-#{name(project)}-#{entropy(project)}"
168168
end
169169

170170
@doc """

justfile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ mix project="all" *args="":
3232
case {{ project }} in
3333
all)
3434
for proj in {{ apps }}; do
35-
(cd "apps/$proj" && mix {{args}})
35+
(cd "apps/$proj" && elixir --erl "-start_epmd false -epmd_module Elixir.Expert.EPMD" -S mix {{args}})
3636
done
3737
;;
3838
*)
39-
(cd "apps/{{ project }}" && mix {{args}})
39+
(cd "apps/{{ project }}" && elixir --erl "-start_epmd false -epmd_module Elixir.Expert.EPMD" -S mix {{args}})
4040
;;
4141
esac
4242

0 commit comments

Comments
 (0)