]> Entropealabs - wampex_client.git/commitdiff
move files around to allow for Wampex.Server namespace
authorChristopher <chris@entropealabs.com>
Tue, 10 Mar 2020 00:50:58 +0000 (19:50 -0500)
committerChristopher <chris@entropealabs.com>
Tue, 10 Mar 2020 00:50:58 +0000 (19:50 -0500)
23 files changed:
README.md
coveralls.json
lib/authentication.ex [moved from lib/wampex/authentication.ex with 100% similarity]
lib/client.ex [new file with mode: 0644]
lib/client/session.ex [moved from lib/wampex/session.ex with 96% similarity]
lib/client/transports/web_socket.ex [moved from lib/wampex/transports/web_socket.ex with 97% similarity]
lib/realm.ex [moved from lib/wampex/realm.ex with 100% similarity]
lib/role.ex [moved from lib/wampex/role.ex with 100% similarity]
lib/roles/callee.ex [moved from lib/wampex/roles/callee.ex with 98% similarity]
lib/roles/caller.ex [moved from lib/wampex/roles/caller.ex with 97% similarity]
lib/roles/peer.ex [moved from lib/wampex/roles/peer.ex with 98% similarity]
lib/roles/publisher.ex [moved from lib/wampex/roles/publisher.ex with 95% similarity]
lib/roles/subscriber.ex [moved from lib/wampex/roles/subscriber.ex with 97% similarity]
lib/router.ex [new file with mode: 0644]
lib/serializer.ex [moved from lib/wampex/serializer.ex with 100% similarity]
lib/serializers/json.ex [moved from lib/wampex/serializers/json.ex with 90% similarity]
lib/serializers/message_pack.ex [moved from lib/wampex/serializers/message_pack.ex with 92% similarity]
lib/transport.ex [moved from lib/wampex/transport.ex with 88% similarity]
lib/wampex.ex
priv/client.json [moved from priv/session.json with 100% similarity]
test/support/test_callee.ex
test/support/test_subscriber.ex
test/wampex_test.exs

index be53c9a47942a73d543d7544862d952c3c48bbe0..5e59f643b921dd9a726c1ccea57338da8c1e850e 100644 (file)
--- 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 ;)
index a71893835af4d84c573988bc2c7ea72f483134cd..43d140c026237d5afd8053d7e0445923493c7d37 100644 (file)
@@ -1,6 +1,6 @@
 {
   "coverage_options": {
-    "minimum_coverage": 80.8
+    "minimum_coverage": 77.6
   },
   "skip_files": [
     "test/support"
diff --git a/lib/client.ex b/lib/client.ex
new file mode 100644 (file)
index 0000000..b00a29a
--- /dev/null
@@ -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
similarity index 96%
rename from lib/wampex/session.ex
rename to lib/client/session.ex
index cc6450ab1d66e4ff4c2616a9a480f4c31b1ac56c..997d557853833f9982f6e1cf6da84fdedad6ceac 100644 (file)
@@ -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
similarity index 97%
rename from lib/wampex/transports/web_socket.ex
rename to lib/client/transports/web_socket.ex
index b4080e67810b249b7a89d9d1af1f1a1f52e96491..ff1a1669ca33b898e9f519045438b949c029134b 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Wampex.Transport.WebSocket do
+defmodule Wampex.Client.Transport.WebSocket do
   use WebSockex
 
   @behaviour Wampex.Transport
similarity index 100%
rename from lib/wampex/realm.ex
rename to lib/realm.ex
similarity index 100%
rename from lib/wampex/role.ex
rename to lib/role.ex
similarity index 98%
rename from lib/wampex/roles/callee.ex
rename to lib/roles/callee.ex
index b08f9c7158671bbc7accab7e2c208d0cc8ae18ec..abe039684b0db92920137ff2d92ed063379ea557 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Wampex.Role.Callee do
+defmodule Wampex.Roles.Callee do
   @moduledoc """
   Handles requests and responses for a Callee
   """
similarity index 97%
rename from lib/wampex/roles/caller.ex
rename to lib/roles/caller.ex
index b1fcb61d5ee8815de69a683b3b9d5fc5d135b544..6e2fd2bf09fb422ef925fe18c94ebac97a9af17a 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Wampex.Role.Caller do
+defmodule Wampex.Roles.Caller do
   @moduledoc """
   Handles requests and responses for a Caller
   """
similarity index 98%
rename from lib/wampex/roles/peer.ex
rename to lib/roles/peer.ex
index 714cbdc0036fabac63084dd15ac0d4f375a4f912..b1fffba0854709d36b36a200d13906050c24c749 100644 (file)
@@ -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
   """
similarity index 95%
rename from lib/wampex/roles/publisher.ex
rename to lib/roles/publisher.ex
index ddc00fdc3b85454a5be12849f2356951d4b5ae2f..7d7b7982000f7105cf751c7b86031992863c7a2e 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Wampex.Role.Publisher do
+defmodule Wampex.Roles.Publisher do
   @moduledoc """
   Handles requests and responses for Publishers
   """
similarity index 97%
rename from lib/wampex/roles/subscriber.ex
rename to lib/roles/subscriber.ex
index 0d600e7ffc9de8469ca70939a14321a12af94b8a..ed30fdc0772e987e7d535b6e3631407a80920d39 100644 (file)
@@ -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 (file)
index 0000000..0410ab5
--- /dev/null
@@ -0,0 +1,2 @@
+defmodule Wampex.Router do
+end
similarity index 100%
rename from lib/wampex/serializer.ex
rename to lib/serializer.ex
similarity index 90%
rename from lib/wampex/serializers/json.ex
rename to lib/serializers/json.ex
index deffdd7e206d9e205fb64d974c4b74908d1f8aca..732bcdba95b62c4a539ea1e52c53d0a81fec9ea4 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Wampex.Serializer.JSON do
+defmodule Wampex.Serializers.JSON do
   @moduledoc "JSON Serializer"
   @behaviour Wampex.Serializer
 
similarity index 92%
rename from lib/wampex/serializers/message_pack.ex
rename to lib/serializers/message_pack.ex
index bbf80ce68936da85dde7de76c4910020b031533b..e048a12b60ca6bffeb274dd47547ed28c9a42ecc 100644 (file)
@@ -1,4 +1,4 @@
-defmodule Wampex.Serializer.MessagePack do
+defmodule Wampex.Serializers.MessagePack do
   @moduledoc "MessgePack Serializer"
   @behaviour Wampex.Serializer
 
similarity index 88%
rename from lib/wampex/transport.ex
rename to lib/transport.ex
index 4ad963a3ee1610313acb55f30c3686e18fe70cb3..b80196202cc19ede9a0c6e82396b8927746372fc 100644 (file)
@@ -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: []
index 6fdeea0bb267fa0f4734703d04eecfc79b2936eb..eb2bdb47b551357cb997db15b42ef7c4014e03e1 100644 (file)
@@ -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
similarity index 100%
rename from priv/session.json
rename to priv/client.json
index 9810705c7e4ca574855cc1a6b81dea7f66091c92..71ec32672e7db9ccf8c3abf2670b1bd1240e70ed 100644 (file)
@@ -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})
     )
index a96e4e6b45b0fa244db218821cd777b98f1e6335..949b36a2dc9c8126b8cc2ed818376cbc0eb1b0fc 100644 (file)
@@ -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})
     )
index 8fa9dc2a7c50615370faeecafca2cb2415ffaa43..903f1b594ff949d733050f9f413fa34ed63cc752 100644 (file)
@@ -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",