From: Christopher Date: Tue, 10 Mar 2020 00:50:58 +0000 (-0500) Subject: move files around to allow for Wampex.Server namespace X-Git-Url: http://git.entropealabs.com/?a=commitdiff_plain;h=101190dacd9e33f6f445c98c9b5d9e2995d84a93;p=wampex_router.git move files around to allow for Wampex.Server namespace --- diff --git a/README.md b/README.md index be53c9a..5e59f64 100644 --- a/README.md +++ b/README.md @@ -42,8 +42,8 @@ MessagePack and JSON serialization are both supported - [x] AUTHENTICATE ### RPC -- [x] CANCEL -- [x] INTERRUPT +- [X] CANCEL +- [X] INTERRUPT - [x] Progressive Call Results - [x] Progressive Calls - [x] Call Canceling @@ -109,7 +109,8 @@ WAMPex defaults to WebSocket as the transport and MessagePack as the serializati A simple [Session](https://wamp-proto.org/_static/gen/wamp_latest.html#sessions) can be configured like so. ```elixir -alias Wampex.{Realm, Session} +alias Wampex.Client.Session +alias Wampex.Realm alias Wampex.Role.{Callee, Caller, Publisher, Subscriber} url = "http://localhost:18080/ws" @@ -118,7 +119,7 @@ realm = %Realm{name: "com.myrealm"} roles = [Callee, Caller, Publisher, Subscriber] session = %Session{url: url, realm: realm, roles: roles} -Wampex.start_link(name: Connection, session: session) +Wampex.Client.start_link(name: Connection, session: session) ``` The name can be anything you want, it is required, and must be unique among multiple WAMPex instances. See the [example application](https://gitlab.com/entropealabs/wampex_example_app) for an example of running multiple connections/sessions. @@ -128,7 +129,8 @@ There are behaviours for transports and serializers if you wanted to write your You can override the default serializer and transport like this. ```elixir -alias Wampex.{Realm, Session} +alias Wampex.Client.Session +alias Wampex.Realm alias Wampex.Role.{Callee, Caller, Publisher, Subscriber} alias Wampex.Serializer.JSON alias Wampex.Transport.WebSocket @@ -139,7 +141,7 @@ realm = %Realm{name: "com.myrealm"} roles = [Callee, Caller, Publisher, Subscriber] session = %Session{url: url, realm: realm, roles: roles, protocol: "wamp.2.json", serializer: JSON} -Wampex.start_link(name: Connection, session: session) +Wampex.Client.start_link(name: Connection, session: session) ``` The protocol uses a registered [WebSocket subprotocol](https://wamp-proto.org/_static/gen/wamp_latest.html#websocket-transport), there are several values available. You need to ensure that the [Router](https://wamp-proto.org/_static/gen/wamp_latest.html#peers-and-roles) that you connect to also supports the subprotocol. @@ -160,7 +162,7 @@ You'll need compliant WAMP Router to run the tests, and do development in genera There's a Docker image available, so we'll use that to get up and running quickly. -Make sure you are in the `WAMPex` directory before running this command. +Make sure you are in the `wampex` directory before running this command. ```bash docker run \ @@ -172,6 +174,19 @@ docker run \ -d leapsight/bondy:0.8.8-slim ``` +### Configure Realm + +```bash +curl -X "POST" "http://localhost:18081/realms/" \ + -H 'Content-Type: application/json; charset=utf-8' \ + -H 'Accept: application/json; charset=utf-8' \ + -d $'{ + "uri": "com.myrealm", + "description": "Test", + "security_enabled" : false +}' +``` + This will setup a default realm `com.myrealm`. This config allows anonymous users as well as authenticated ones. In reality you wouldn't want to enable both, but for testing, it's useful. @@ -187,3 +202,13 @@ curl -X "POST" "http://localhost:18081/realms/com.myrealm/users" \ "password": "test1234" }' ``` + +### Run the tests + +Warning as errors, mix format, Dialyzer, Credo and Coveralls + +```bash +$ MIX_ENV=test mix all_tests +``` + +Happy hacking ;) diff --git a/coveralls.json b/coveralls.json index a718938..43d140c 100644 --- a/coveralls.json +++ b/coveralls.json @@ -1,6 +1,6 @@ { "coverage_options": { - "minimum_coverage": 80.8 + "minimum_coverage": 77.6 }, "skip_files": [ "test/support" diff --git a/lib/wampex/authentication.ex b/lib/authentication.ex similarity index 100% rename from lib/wampex/authentication.ex rename to lib/authentication.ex diff --git a/lib/client.ex b/lib/client.ex new file mode 100644 index 0000000..b00a29a --- /dev/null +++ b/lib/client.ex @@ -0,0 +1,74 @@ +defmodule Wampex.Client do + @moduledoc """ + Documentation for Wampex. + """ + use Supervisor + + alias Wampex.Client.Session, as: Sess + alias Wampex.Roles.{Callee, Subscriber} + alias Wampex.Roles.Callee.Register + alias Wampex.Roles.Subscriber.Subscribe + + @spec start_link(name: atom(), session_data: Sess.t()) :: + {:ok, pid()} + | {:error, {:already_started, pid()} | {:shutdown, term()} | term()} + def start_link(name: name, session: session_data) when is_atom(name) do + Supervisor.start_link(__MODULE__, {name, session_data}, name: name) + end + + @spec init({atom(), Sess.t()}) :: + {:ok, {:supervisor.sup_flags(), [:supervisor.child_spec()]}} | :ignore + def init({name, %Sess{url: url, transport: t, serializer: s, protocol: p} = session_data}) do + session = session_name(name) + subscriber_registry = subscriber_registry_name(name) + callee_registry = callee_registry_name(name) + transport = transport_name(name) + session_data = %Sess{session_data | name: name, transport_pid: transport} + + children = [ + {Sess, [{:local, session}, session_data, []]}, + {t, [url: url, session: session, protocol: p, serializer: s, opts: [name: transport]]}, + {Registry, + [keys: :duplicate, name: subscriber_registry, partitions: System.schedulers_online()]}, + {Registry, [keys: :unique, name: callee_registry, partitions: System.schedulers_online()]} + ] + + Supervisor.init(children, strategy: :one_for_all, max_restarts: 0) + end + + @spec session_name(module()) :: module() + def session_name(name), do: Module.concat([name, Session]) + @spec subscriber_registry_name(module()) :: module() + def subscriber_registry_name(name), do: Module.concat([name, SubscriberRegistry]) + @spec callee_registry_name(module()) :: module() + def callee_registry_name(name), do: Module.concat([name, CalleeRegistry]) + @spec transport_name(module()) :: module() + def transport_name(name), do: Module.concat([name, Transport]) + + @spec subscribe(name :: module(), subscription :: Subscribe.t(), timeout :: integer()) :: + {:ok, integer()} + def subscribe(name, %Subscribe{topic: t} = sub, timeout \\ 5000) do + {:ok, id} = Sess.send_request(session_name(name), Subscriber.subscribe(sub), timeout) + Registry.register(subscriber_registry_name(name), id, t) + {:ok, id} + end + + @spec register(name :: module(), register :: Register.t(), timeout :: integer()) :: + {:ok, integer()} + def register(name, %Register{procedure: p} = reg, timeout \\ 5000) do + {:ok, id} = Sess.send_request(session_name(name), Callee.register(reg), timeout) + Registry.register(callee_registry_name(name), id, p) + {:ok, id} + end + + @spec send_request(name :: module(), request :: Wampex.message(), timeout :: integer()) :: + term() + def send_request(name, request, timeout \\ 5000) do + Sess.send_request(session_name(name), request, timeout) + end + + @spec cast_send_request(name :: module(), Wampex.message()) :: :ok + def cast_send_request(name, request) do + Sess.cast_send_request(session_name(name), request) + end +end diff --git a/lib/wampex/session.ex b/lib/client/session.ex similarity index 96% rename from lib/wampex/session.ex rename to lib/client/session.ex index cc6450a..997d557 100644 --- a/lib/wampex/session.ex +++ b/lib/client/session.ex @@ -1,18 +1,19 @@ -defmodule Wampex.Session do +defmodule Wampex.Client.Session do @moduledoc """ A state machine based process for managing a WAMP Session. Utilizes StatesLanguage to implement the gen_statem process. See priv/session.json for the JSON representation """ - use StatesLanguage, data: "priv/session.json" + use StatesLanguage, data: "priv/client.json" @max_id 9_007_199_254_740_992 alias StatesLanguage, as: SL alias Wampex.Realm - alias Wampex.Role.Peer - alias Wampex.Role.Peer.{Authenticate, Hello} - alias Wampex.Serializer.MessagePack + alias Wampex.Roles.Peer + alias Wampex.Roles.Peer.{Authenticate, Hello} + alias Wampex.Serializers.MessagePack alias __MODULE__, as: Sess - alias Wampex.Transport.WebSocket + alias Wampex.Client + alias Wampex.Client.Transport.WebSocket @yield 70 @@ -299,7 +300,7 @@ defmodule Wampex.Session do ) do Logger.debug("Received Event #{inspect(event)}") - sub = Wampex.subscriber_registry_name(name) + sub = Client.subscriber_registry_name(name) Registry.dispatch(sub, elem(event, 1), fn entries -> for {pid, _topic} <- entries, do: send(pid, event) @@ -316,7 +317,7 @@ defmodule Wampex.Session do %SL{data: %Sess{name: name, invocation: invocation}} = sl ) do Logger.debug("Received Invocation #{inspect(invocation)}") - reg = Wampex.callee_registry_name(name) + reg = Client.callee_registry_name(name) Registry.dispatch(reg, elem(invocation, 2), fn entries -> for {pid, _procedure} <- entries, do: send(pid, invocation) @@ -332,7 +333,7 @@ defmodule Wampex.Session do @interrupt, %SL{data: %Sess{interrupt: {id, opts}, name: name}} = data ) do - [{callee, _procedure}] = Registry.lookup(Wampex.callee_registry_name(name), id) + [{callee, _procedure}] = Registry.lookup(Client.callee_registry_name(name), id) send(callee, {:interrupt, id, opts}) {:ok, data, [{:next_event, :internal, :transition}]} end diff --git a/lib/wampex/transports/web_socket.ex b/lib/client/transports/web_socket.ex similarity index 97% rename from lib/wampex/transports/web_socket.ex rename to lib/client/transports/web_socket.ex index b4080e6..ff1a166 100644 --- a/lib/wampex/transports/web_socket.ex +++ b/lib/client/transports/web_socket.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Transport.WebSocket do +defmodule Wampex.Client.Transport.WebSocket do use WebSockex @behaviour Wampex.Transport diff --git a/lib/wampex/realm.ex b/lib/realm.ex similarity index 100% rename from lib/wampex/realm.ex rename to lib/realm.ex diff --git a/lib/wampex/role.ex b/lib/role.ex similarity index 100% rename from lib/wampex/role.ex rename to lib/role.ex diff --git a/lib/wampex/roles/callee.ex b/lib/roles/callee.ex similarity index 98% rename from lib/wampex/roles/callee.ex rename to lib/roles/callee.ex index b08f9c7..abe0396 100644 --- a/lib/wampex/roles/callee.ex +++ b/lib/roles/callee.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Role.Callee do +defmodule Wampex.Roles.Callee do @moduledoc """ Handles requests and responses for a Callee """ diff --git a/lib/wampex/roles/caller.ex b/lib/roles/caller.ex similarity index 97% rename from lib/wampex/roles/caller.ex rename to lib/roles/caller.ex index b1fcb61..6e2fd2b 100644 --- a/lib/wampex/roles/caller.ex +++ b/lib/roles/caller.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Role.Caller do +defmodule Wampex.Roles.Caller do @moduledoc """ Handles requests and responses for a Caller """ diff --git a/lib/wampex/roles/peer.ex b/lib/roles/peer.ex similarity index 98% rename from lib/wampex/roles/peer.ex rename to lib/roles/peer.ex index 714cbdc..b1fffba 100644 --- a/lib/wampex/roles/peer.ex +++ b/lib/roles/peer.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Role.Peer do +defmodule Wampex.Roles.Peer do @moduledoc """ Handles requests and responses for low-level Peer/Session interactions """ diff --git a/lib/wampex/roles/publisher.ex b/lib/roles/publisher.ex similarity index 95% rename from lib/wampex/roles/publisher.ex rename to lib/roles/publisher.ex index ddc00fd..7d7b798 100644 --- a/lib/wampex/roles/publisher.ex +++ b/lib/roles/publisher.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Role.Publisher do +defmodule Wampex.Roles.Publisher do @moduledoc """ Handles requests and responses for Publishers """ diff --git a/lib/wampex/roles/subscriber.ex b/lib/roles/subscriber.ex similarity index 97% rename from lib/wampex/roles/subscriber.ex rename to lib/roles/subscriber.ex index 0d600e7..ed30fdc 100644 --- a/lib/wampex/roles/subscriber.ex +++ b/lib/roles/subscriber.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Role.Subscriber do +defmodule Wampex.Roles.Subscriber do @moduledoc """ Handles requests and responses for Subscribers """ diff --git a/lib/router.ex b/lib/router.ex new file mode 100644 index 0000000..0410ab5 --- /dev/null +++ b/lib/router.ex @@ -0,0 +1,2 @@ +defmodule Wampex.Router do +end diff --git a/lib/wampex/serializer.ex b/lib/serializer.ex similarity index 100% rename from lib/wampex/serializer.ex rename to lib/serializer.ex diff --git a/lib/wampex/serializers/json.ex b/lib/serializers/json.ex similarity index 90% rename from lib/wampex/serializers/json.ex rename to lib/serializers/json.ex index deffdd7..732bcdb 100644 --- a/lib/wampex/serializers/json.ex +++ b/lib/serializers/json.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Serializer.JSON do +defmodule Wampex.Serializers.JSON do @moduledoc "JSON Serializer" @behaviour Wampex.Serializer diff --git a/lib/wampex/serializers/message_pack.ex b/lib/serializers/message_pack.ex similarity index 92% rename from lib/wampex/serializers/message_pack.ex rename to lib/serializers/message_pack.ex index bbf80ce..e048a12 100644 --- a/lib/wampex/serializers/message_pack.ex +++ b/lib/serializers/message_pack.ex @@ -1,4 +1,4 @@ -defmodule Wampex.Serializer.MessagePack do +defmodule Wampex.Serializers.MessagePack do @moduledoc "MessgePack Serializer" @behaviour Wampex.Serializer diff --git a/lib/wampex/transport.ex b/lib/transport.ex similarity index 88% rename from lib/wampex/transport.ex rename to lib/transport.ex index 4ad963a..b801962 100644 --- a/lib/wampex/transport.ex +++ b/lib/transport.ex @@ -3,7 +3,7 @@ defmodule Wampex.Transport do @callback send_request(transport :: atom() | pid(), message :: Wampex.message()) :: :ok @callback start_link( url: binary(), - session: Wampex.Session.t(), + session: Wampex.Client.Session.t(), protocol: binary(), serializer: module(), opts: [] diff --git a/lib/wampex.ex b/lib/wampex.ex index 6fdeea0..eb2bdb4 100644 --- a/lib/wampex.ex +++ b/lib/wampex.ex @@ -1,14 +1,7 @@ defmodule Wampex do @moduledoc """ - Documentation for Wampex. + Types for wampex """ - use Supervisor - - alias Wampex.Session, as: Sess - alias Wampex.Role.{Callee, Subscriber} - alias Wampex.Role.Callee.Register - alias Wampex.Role.Subscriber.Subscribe - @type message_part :: integer() | binary() | map() | list() @type message :: nonempty_list(message_part()) @type arg_list :: [] | nonempty_list(any()) @@ -29,66 +22,4 @@ defmodule Wampex do | {:ok, details :: map(), arg_list :: arg_list(), arg_keyword :: arg_keyword()} | error() | event() - - @spec start_link(name: atom(), session_data: Sess.t()) :: - {:ok, pid()} - | {:error, {:already_started, pid()} | {:shutdown, term()} | term()} - def start_link(name: name, session: session_data) when is_atom(name) do - Supervisor.start_link(__MODULE__, {name, session_data}, name: name) - end - - @spec init({atom(), Sess.t()}) :: - {:ok, {:supervisor.sup_flags(), [:supervisor.child_spec()]}} | :ignore - def init({name, %Sess{url: url, transport: t, serializer: s, protocol: p} = session_data}) do - session = session_name(name) - subscriber_registry = subscriber_registry_name(name) - callee_registry = callee_registry_name(name) - transport = transport_name(name) - session_data = %Sess{session_data | name: name, transport_pid: transport} - - children = [ - {Sess, [{:local, session}, session_data, []]}, - {t, [url: url, session: session, protocol: p, serializer: s, opts: [name: transport]]}, - {Registry, - [keys: :duplicate, name: subscriber_registry, partitions: System.schedulers_online()]}, - {Registry, [keys: :unique, name: callee_registry, partitions: System.schedulers_online()]} - ] - - Supervisor.init(children, strategy: :one_for_all, max_restarts: 0) - end - - @spec session_name(module()) :: module() - def session_name(name), do: Module.concat([name, Session]) - @spec subscriber_registry_name(module()) :: module() - def subscriber_registry_name(name), do: Module.concat([name, SubscriberRegistry]) - @spec callee_registry_name(module()) :: module() - def callee_registry_name(name), do: Module.concat([name, CalleeRegistry]) - @spec transport_name(module()) :: module() - def transport_name(name), do: Module.concat([name, Transport]) - - @spec subscribe(name :: module(), subscription :: Subscribe.t(), timeout :: integer()) :: - {:ok, integer()} - def subscribe(name, %Subscribe{topic: t} = sub, timeout \\ 5000) do - {:ok, id} = Sess.send_request(session_name(name), Subscriber.subscribe(sub), timeout) - Registry.register(subscriber_registry_name(name), id, t) - {:ok, id} - end - - @spec register(name :: module(), register :: Register.t(), timeout :: integer()) :: - {:ok, integer()} - def register(name, %Register{procedure: p} = reg, timeout \\ 5000) do - {:ok, id} = Sess.send_request(session_name(name), Callee.register(reg), timeout) - Registry.register(callee_registry_name(name), id, p) - {:ok, id} - end - - @spec send_request(name :: module(), request :: message(), timeout :: integer()) :: term() - def send_request(name, request, timeout \\ 5000) do - Sess.send_request(session_name(name), request, timeout) - end - - @spec cast_send_request(name :: module(), message()) :: :ok - def cast_send_request(name, request) do - Sess.cast_send_request(session_name(name), request) - end end diff --git a/priv/session.json b/priv/client.json similarity index 100% rename from priv/session.json rename to priv/client.json diff --git a/test/support/test_callee.ex b/test/support/test_callee.ex index 9810705..71ec326 100644 --- a/test/support/test_callee.ex +++ b/test/support/test_callee.ex @@ -2,7 +2,8 @@ defmodule TestCallee do @moduledoc false use GenServer require Logger - alias Wampex.Role.Callee + alias Wampex.Client + alias Wampex.Roles.Callee alias Callee.{Register, Unregister, Yield} def start_link(test, name, device) do @@ -10,7 +11,7 @@ defmodule TestCallee do end def init({test, name, device}) do - {:ok, reg} = Wampex.register(name, %Register{procedure: "com.actuator.#{device}.light"}) + {:ok, reg} = Client.register(name, %Register{procedure: "com.actuator.#{device}.light"}) send(test, {:registered, reg}) {:ok, {test, name, reg}} end @@ -20,7 +21,7 @@ defmodule TestCallee do send(test, invocation) - Wampex.cast_send_request( + Client.cast_send_request( name, Callee.yield(%Yield{ request_id: id, @@ -33,7 +34,7 @@ defmodule TestCallee do end def terminate(_reason, {_test, name, reg}) do - Wampex.send_request( + Client.send_request( name, Callee.unregister(%Unregister{registration_id: reg}) ) diff --git a/test/support/test_subscriber.ex b/test/support/test_subscriber.ex index a96e4e6..949b36a 100644 --- a/test/support/test_subscriber.ex +++ b/test/support/test_subscriber.ex @@ -2,7 +2,8 @@ defmodule TestSubscriber do @moduledoc false use GenServer require Logger - alias Wampex.Role.Subscriber + alias Wampex.Client + alias Wampex.Roles.Subscriber alias Subscriber.{Subscribe, Unsubscribe} def start_link(test, name, topic) do @@ -10,7 +11,7 @@ defmodule TestSubscriber do end def init({test, name, topic}) do - {:ok, sub} = Wampex.subscribe(name, %Subscribe{topic: topic}) + {:ok, sub} = Client.subscribe(name, %Subscribe{topic: topic}) send(test, {:subscribed, sub}) {:ok, {test, name, sub}} end @@ -21,7 +22,7 @@ defmodule TestSubscriber do end def terminate(_r, {_test, name, sub}) do - Wampex.send_request( + Client.send_request( name, Subscriber.unsubscribe(%Unsubscribe{subscription_id: sub}) ) diff --git a/test/wampex_test.exs b/test/wampex_test.exs index 8fa9dc2..903f1b5 100644 --- a/test/wampex_test.exs +++ b/test/wampex_test.exs @@ -2,11 +2,13 @@ defmodule WampexTest do use ExUnit.Case, async: true doctest Wampex - alias Wampex.{Authentication, Realm, Session} - alias Wampex.Role.{Callee, Caller, Peer, Publisher, Subscriber} - alias Wampex.Serializer.{JSON, MessagePack} + alias Wampex.{Authentication, Realm} + alias Wampex.Client + alias Wampex.Roles.{Callee, Caller, Peer, Publisher, Subscriber} + alias Wampex.Serializers.{JSON, MessagePack} alias Callee.{Register, Unregister, Yield} alias Caller.Call + alias Client.Session alias Peer.{Authenticate, Goodbye, Hello} alias Publisher.Publish alias Subscriber.{Subscribe, Unsubscribe} @@ -21,19 +23,19 @@ defmodule WampexTest do @session %Session{url: @url, realm: @realm, roles: @roles} test "session_name" do - assert Test.Session = Wampex.session_name(Test) + assert Test.Session = Client.session_name(Test) end test "subscriber_registry_name" do - assert Test.SubscriberRegistry = Wampex.subscriber_registry_name(Test) + assert Test.SubscriberRegistry = Client.subscriber_registry_name(Test) end test "callee_registry_name" do - assert Test.CalleeRegistry = Wampex.callee_registry_name(Test) + assert Test.CalleeRegistry = Client.callee_registry_name(Test) end test "transport_name" do - assert Test.Transport = Wampex.transport_name(Test) + assert Test.Transport = Client.transport_name(Test) end test "Callee.add" do @@ -144,7 +146,7 @@ defmodule WampexTest do test "callee registration" do name = TestCalleeRegistration - Wampex.start_link(name: name, session: @session) + Client.start_link(name: name, session: @session) TestCallee.start_link(self(), name, @device) assert_receive {:registered, id} end @@ -152,7 +154,7 @@ defmodule WampexTest do test "authentication" do callee_name = TestCalleeRespondAuthenticated session = %Session{@session | realm: %Realm{@session.realm | authentication: @auth}} - Wampex.start_link(name: callee_name, session: session) + Client.start_link(name: callee_name, session: session) TestCallee.start_link(self(), callee_name, @device) assert_receive {:registered, id} end @@ -160,21 +162,21 @@ defmodule WampexTest do test "abort" do Process.flag(:trap_exit, true) callee_name = TestAbort - {:ok, pid} = Wampex.start_link(name: callee_name, session: @session) - Wampex.cast_send_request(callee_name, Peer.hello(%Hello{realm: "test", roles: [Callee]})) + {:ok, pid} = Client.start_link(name: callee_name, session: @session) + Client.cast_send_request(callee_name, Peer.hello(%Hello{realm: "test", roles: [Callee]})) assert_receive {:EXIT, ^pid, :shutdown} end test "callee is invoked and responds and caller gets result" do callee_name = TestCalleeRespond - Wampex.start_link(name: callee_name, session: @session) + Client.start_link(name: callee_name, session: @session) TestCallee.start_link(self(), callee_name, @device) assert_receive {:registered, id} caller_name = TestCaller - Wampex.start_link(name: caller_name, session: @session) + Client.start_link(name: caller_name, session: @session) {:ok, %{}, ["ok"], %{"color" => "#FFFFFF"}} = - Wampex.send_request( + Client.send_request( caller_name, Caller.call(%Call{ procedure: "com.actuator.#{@device}.light", @@ -188,20 +190,20 @@ defmodule WampexTest do test "subscriber registration" do name = TestSubscriberRegister - Wampex.start_link(name: name, session: @session) + Client.start_link(name: name, session: @session) TestSubscriber.start_link(self(), name, "com.data.temp") assert_receive {:subscribed, id} end test "subscriber receives events from publisher" do name = TestSubscriberEvents - Wampex.start_link(name: name, session: @session) + Client.start_link(name: name, session: @session) TestSubscriber.start_link(self(), name, "com.data.temp") assert_receive {:subscribed, id} - Wampex.start_link(name: TestPublisher, session: @session) + Client.start_link(name: TestPublisher, session: @session) - Wampex.cast_send_request( + Client.cast_send_request( TestPublisher, Publisher.publish(%Publish{ topic: "com.data.temp",