From 335a3a2b87de9f94dd80c386add43454f2ff3aad Mon Sep 17 00:00:00 2001 From: Christopher Date: Fri, 17 Apr 2020 13:04:25 -0500 Subject: [PATCH] setting up integration tests --- lib/router/session.ex | 44 +++++++---------------------- lib/router/transports/web_socket.ex | 20 +++++++------ mix.exs | 13 --------- 3 files changed, 21 insertions(+), 56 deletions(-) diff --git a/lib/router/session.ex b/lib/router/session.ex index dc81df2..bb23a30 100644 --- a/lib/router/session.ex +++ b/lib/router/session.ex @@ -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 diff --git a/lib/router/transports/web_socket.ex b/lib/router/transports/web_socket.ex index 3f3aa0c..019b131 100644 --- a/lib/router/transports/web_socket.ex +++ b/lib/router/transports/web_socket.ex @@ -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 83d4f36..cbb1635 100644 --- 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"} -- 2.45.3