]> Entropealabs - wampex_router.git/commitdiff
setting up integration tests
authorChristopher <chris@entropealabs.com>
Fri, 17 Apr 2020 18:04:25 +0000 (13:04 -0500)
committerChristopher <chris@entropealabs.com>
Fri, 17 Apr 2020 18:04:25 +0000 (13:04 -0500)
lib/router/session.ex
lib/router/transports/web_socket.ex
mix.exs

index dc81df2294ef9aad8dbc35dec4cb3072d6a52ef2..bb23a30efd8ecc11760cb6e0e33f1870bad6db63 100644 (file)
@@ -159,10 +159,15 @@ defmodule Wampex.Router.Session do
           {data, actions}
 
         nil ->
+          Logger.error("Message not supported by roles: #{inspect(roles)}")
           {data, [{:next_event, :internal, :abort}]}
       end
 
     {:ok, %SL{data | data: %Sess{data.data | message: nil}}, actions}
+  rescue
+    er ->
+      Logger.error(inspect(er))
+      {:ok, data, [{:next_event, :internal, :transition}]}
   end
 
   @impl true
@@ -221,28 +226,6 @@ defmodule Wampex.Router.Session do
     {:ok, %SL{sl | data: %Sess{sl.data | peer: peer, proxy: proxy}}, actions}
   end
 
-  @impl true
-  def handle_resource(
-        @handle_hello,
-        _,
-        @hello,
-        %SL{
-          data:
-            %Sess{
-              hello_received: true
-            } = data
-        } = sl
-      ) do
-    {:ok,
-     %SL{
-       sl
-       | data: %Sess{
-           data
-           | error: "wamp.error.protocol_violation"
-         }
-     }, [{:next_event, :internal, :transition}, {:next_event, :internal, :abort}]}
-  end
-
   @impl true
   def handle_resource(
         @handle_subscribe,
@@ -628,7 +611,7 @@ defmodule Wampex.Router.Session do
   end
 
   @impl true
-  def handle_info({:set_message, message}, _, %SL{data: %Sess{} = sess} = data) do
+  def handle_info({:set_message, message}, _, %SL{data: sess} = data) do
     {:ok, %SL{data | data: %Sess{sess | message: message}}, [{:next_event, :internal, :message_received}]}
   end
 
@@ -645,11 +628,9 @@ defmodule Wampex.Router.Session do
   end
 
   @impl true
-  def handle_termination(reason, _, %SL{
+  def handle_termination(_reason, _, %SL{
         data: %Sess{
           db: db,
-          transport: tt,
-          transport_pid: t,
           registrations: regs,
           realm: realm,
           subscriptions: subs,
@@ -657,8 +638,6 @@ defmodule Wampex.Router.Session do
           proxy: proxy
         }
       }) do
-    debug("Router session terminating #{inspect(reason)}")
-
     Enum.each(inv, fn {call_id, _, {pid, node}} ->
       send(
         {proxy, node},
@@ -673,12 +652,6 @@ defmodule Wampex.Router.Session do
     Enum.each(subs, fn {id, _proc, _} ->
       RealmSession.unsubscribe(db, realm, {id, {self(), Node.self()}}, subs)
     end)
-
-    send_to_peer(
-      Peer.abort(%Abort{reason: "wamp.error.protocol_violation"}),
-      tt,
-      t
-    )
   end
 
   defp maybe_welcome(
@@ -707,6 +680,7 @@ defmodule Wampex.Router.Session do
         {[{:next_event, :internal, :transition}], proxy, peer}
 
       {false, peer} ->
+        Logger.error("Invalid Authentication: #{inspect(authid)}")
         {[{:next_event, :internal, :transition}, {:next_event, :internal, :abort}], nil, peer}
     end
   end
@@ -732,10 +706,12 @@ defmodule Wampex.Router.Session do
             {[], ch}
 
           false ->
+            Logger.error("Not a supported authentication method: #{am}")
             {[{:next_event, :internal, :abort}], nil}
         end
 
       %{} ->
+        Logger.error("No authentication details given")
         {[{:next_event, :internal, :abort}], nil}
     end
   end
index 3f3aa0c3a66904fa960b5788222d382f24048c48..019b131a48f9ba12e859edc64bc2fad36b356e39 100644 (file)
@@ -13,7 +13,7 @@ defmodule Wampex.Router.Transports.WebSocket do
   @json "wamp.2.json"
   @msgpack "wamp.2.msgpack"
 
-  defstruct [:serializer, :session]
+  defstruct [:serializer, :session, :last_message]
 
   def send_request(transport, message) do
     send(transport, {:send_request, message})
@@ -30,7 +30,7 @@ defmodule Wampex.Router.Transports.WebSocket do
   def websocket_init({state, db, name, atm, azm}) do
     {:ok, session} = Realms.start_session(Router.realms_name(name), db, name, WebSocket, self(), atm, azm)
     Process.link(session)
-    Logger.debug("Websocket Initialized: #{inspect(state)}")
+    Logger.debug("#{__MODULE__} Websocket Initialized: #{inspect(state)}")
     {:ok, %WebSocket{state | session: session}}
   end
 
@@ -38,7 +38,6 @@ defmodule Wampex.Router.Transports.WebSocket do
   def websocket_handle({type, payload}, state) do
     Logger.debug("Received #{type} Payload: #{payload}")
     handle_payload({payload, state})
-    {:ok, state}
   end
 
   @impl true
@@ -48,7 +47,7 @@ defmodule Wampex.Router.Transports.WebSocket do
 
   @impl true
   def websocket_handle(unknown, state) do
-    Logger.warn("Unknown websocket frame #{inspect(unknown)}")
+    Logger.warn("#{__MODULE__} Unknown websocket frame #{inspect(unknown)}")
     {:ok, state}
   end
 
@@ -60,21 +59,24 @@ defmodule Wampex.Router.Transports.WebSocket do
   @impl true
   def websocket_info(
         {:EXIT, _pid = session_pid, reason},
-        %WebSocket{session: session_pid} = state
+        %WebSocket{session: session_pid, last_message: lm} = state
       ) do
-    Logger.warn("Session ended because #{inspect(reason)}, closing connection")
+    Logger.warn(
+      "#{__MODULE__} Session ended because #{inspect(reason)}, closing connection. Last message #{inspect(lm)}"
+    )
+
     {:stop, state}
   end
 
   @impl true
   def websocket_info(event, state) do
-    Logger.debug("Received unhandled event: #{inspect(event)}")
+    Logger.debug("#{__MODULE__} Received unhandled event: #{inspect(event)}")
     {:ok, state}
   end
 
   @impl true
   def terminate(reason, _req, _state) do
-    Logger.debug("Websocket closing for reason #{inspect(reason)}")
+    Logger.debug("#{__MODULE__} Websocket closing for reason #{inspect(reason)}")
     :ok
   end
 
@@ -86,7 +88,7 @@ defmodule Wampex.Router.Transports.WebSocket do
 
   defp handle_event(ms, %WebSocket{session: s} = state) do
     send(s, {:set_message, ms})
-    {:ok, state}
+    {:ok, %WebSocket{state | last_message: ms}}
   end
 
   defp get_serializer(req) do
diff --git a/mix.exs b/mix.exs
index 83d4f36f4ccea66547ec4712c34341ba4bd2957f..cbb1635bf62eb0520b5a1c0207985a55bd256964 100644 (file)
--- a/mix.exs
+++ b/mix.exs
@@ -7,17 +7,8 @@ defmodule Wampex.Router.MixProject do
       version: "0.1.0",
       elixir: "~> 1.9",
       start_permanent: Mix.env() == :prod,
-      elixirc_paths: elixirc_paths(Mix.env()),
       aliases: aliases(),
       deps: deps(),
-      preferred_cli_env: [
-        coveralls: :test,
-        "coveralls.detail": :test,
-        "coveralls.post": :test,
-        "coveralls.html": :test,
-        all_tests: :test
-      ],
-      test_coverage: [tool: ExCoveralls],
       docs: [
         main: "readme",
         extras: ["README.md"],
@@ -26,9 +17,6 @@ defmodule Wampex.Router.MixProject do
     ]
   end
 
-  defp elixirc_paths(:test), do: ["lib", "test/support"]
-  defp elixirc_paths(_), do: ["lib"]
-
   def application do
     [
       extra_applications: [:logger],
@@ -44,7 +32,6 @@ defmodule Wampex.Router.MixProject do
       {:credo, "~> 1.2", only: [:test], runtime: false},
       {:dialyxir, "~> 0.5.1", only: [:test], runtime: false},
       {:ex_doc, "~> 0.21", only: :dev, runtime: false},
-      {:jason, "~> 1.1"},
       {:plug_cowboy, "~> 2.1"},
       {:states_language, "~> 0.2"},
       {:wampex, git: "https://gitlab.com/entropealabs/wampex.git", tag: "ecba713117f1e048829be79f19373952638c6ece"}