summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Bracco <href@random.sh>2020-06-15 18:16:42 +0200
committerJordan Bracco <href@random.sh>2020-06-15 18:16:42 +0200
commit8c58ecd0572c034206711a118f71d64977900602 (patch)
treeac75ce0bd2fea525f3fca50a11578ad864ad8808
parentFormat & delete .builds/ (diff)
Cleanupei
-rw-r--r--lib/gen_magic/server.ex14
-rw-r--r--test/gen_magic/apprentice_test.exs14
2 files changed, 14 insertions, 14 deletions
diff --git a/lib/gen_magic/server.ex b/lib/gen_magic/server.ex
index 6b7f245..c15ea18 100644
--- a/lib/gen_magic/server.ex
+++ b/lib/gen_magic/server.ex
@@ -214,6 +214,7 @@ defmodule GenMagic.Server do
end
end
+ @doc false
def starting(:info, {port, {:exit_status, code}}, %{port: port} = data) do
error =
case code do
@@ -226,6 +227,7 @@ defmodule GenMagic.Server do
{:stop, {:error, error}, data}
end
+ @doc false
def loading(:enter, _old_state, data) do
databases =
Enum.flat_map(List.wrap(data.database_patterns || @database_patterns), fn
@@ -243,14 +245,17 @@ defmodule GenMagic.Server do
{:keep_state, {databases, data}, {:state_timeout, 0, :load}}
end
+ @doc false
def loading(:state_timeout, :load_timeout, {[database | _], data}) do
{:stop, {:error, {:database_loading_timeout, database}}, data}
end
+ @doc false
def loading(:state_timeout, :load, {[], data}) do
{:next_state, :available, data}
end
+ @doc false
def loading(:state_timeout, :load, {[database | databases], data} = state) do
command =
case database do
@@ -262,6 +267,7 @@ defmodule GenMagic.Server do
{:keep_state, state, {:state_timeout, data.startup_timeout, :load_timeout}}
end
+ @doc false
def loading(:info, {port, {:data, response}}, {[database | databases], %{port: port} = data}) do
case :erlang.binary_to_term(response) do
{:ok, :loaded} ->
@@ -269,6 +275,7 @@ defmodule GenMagic.Server do
end
end
+ @doc false
def loading(:info, {port, {:exit_status, 1}}, {[database | _], %{port: port} = data}) do
{:stop, {:error, {:database_not_found, database}}, data}
end
@@ -289,6 +296,7 @@ defmodule GenMagic.Server do
{:keep_state_and_data, response}
end
+ @doc false
def available(:enter, _old_state, %{request: nil}) do
:keep_state_and_data
end
@@ -307,6 +315,7 @@ defmodule GenMagic.Server do
{:next_state, :processing, data}
end
+ @doc false
def available({:call, from}, {:reload, databases}, data) do
send(data.port, {:reload, :reload})
@@ -318,6 +327,7 @@ defmodule GenMagic.Server do
}}
end
+ @doc false
def available({:call, from}, {:recycle, databases}, data) do
{:next_state, :recycling,
%{
@@ -376,16 +386,19 @@ defmodule GenMagic.Server do
handle_status_call(from, :recycling, data)
end
+ @doc false
# In case of timeout, force close.
def recycling(:state_timeout, :stop, data) do
Kernel.send(data.port, {self(), :close})
{:keep_state_and_data, {:state_timeout, data.startup_timeout, :close}}
end
+ @doc false
def recycling(:state_timeout, :close, data) do
{:stop, {:error, :port_close_failed}}
end
+ @doc false
def recycling(:info, {port, :closed}, %{port: port} = data) do
{:next_state, :starting, %{data | port: nil, cycles: 0}}
end
@@ -401,6 +414,7 @@ defmodule GenMagic.Server do
Kernel.send(port, {self(), :close})
end
+ @doc false
def terminate(_, _, _) do
:ok
end
diff --git a/test/gen_magic/apprentice_test.exs b/test/gen_magic/apprentice_test.exs
index af325ec..dfb86a0 100644
--- a/test/gen_magic/apprentice_test.exs
+++ b/test/gen_magic/apprentice_test.exs
@@ -32,20 +32,6 @@ defmodule GenMagic.ApprenticeTest do
assert_receive {^port, {:exit_status, 1}}
end
- # test "exits with a non existent database" do
- # opts = [
- # {:args, ["--database-file", "/no/such/database"]},
- # :use_stdio,
- # :binary,
- # :exit_status,
- # {:packet, 2}
- # ]
- #
- # port = Port.open(GenMagic.Config.get_port_name(), opts)
- # on_exit(fn() -> send(port, {self(), :close}) end)
- # assert_receive {^port, {:exit_status, 3}}
- # end
-
describe "port" do
setup do
port = Port.open(GenMagic.Config.get_port_name(), GenMagic.Config.get_port_options([]))