|
1 | 1 | defmodule RealtimeWeb.TenantBroadcasterTest do
|
2 |
| - # Usage of Clustered |
| 2 | + # Usage of Clustered and changing Application env |
3 | 3 | use Realtime.DataCase, async: false
|
4 | 4 |
|
5 | 5 | alias Phoenix.Socket.Broadcast
|
@@ -47,95 +47,107 @@ defmodule RealtimeWeb.TenantBroadcasterTest do
|
47 | 47 | pid: self()
|
48 | 48 | )
|
49 | 49 |
|
| 50 | + original = Application.fetch_env!(:realtime, :pubsub_adapter) |
| 51 | + on_exit(fn -> Application.put_env(:realtime, :pubsub_adapter, original) end) |
| 52 | + Application.put_env(:realtime, :pubsub_adapter, context.pubsub_adapter) |
| 53 | + |
50 | 54 | :ok
|
51 | 55 | end
|
52 | 56 |
|
53 |
| - describe "pubsub_broadcast/4" do |
54 |
| - test "pubsub_broadcast", %{node: node} do |
55 |
| - message = %Broadcast{topic: @topic, event: "an event", payload: %{"a" => "b"}} |
56 |
| - TenantBroadcaster.pubsub_broadcast("realtime-dev", @topic, message, Phoenix.PubSub) |
| 57 | + for pubsub_adapter <- [:gen_rpc, :pg2] do |
| 58 | + describe "pubsub_broadcast/4 #{pubsub_adapter}" do |
| 59 | + @describetag pubsub_adapter: pubsub_adapter |
57 | 60 |
|
58 |
| - assert_receive ^message |
| 61 | + test "pubsub_broadcast", %{node: node} do |
| 62 | + message = %Broadcast{topic: @topic, event: "an event", payload: %{"a" => "b"}} |
| 63 | + TenantBroadcaster.pubsub_broadcast("realtime-dev", @topic, message, Phoenix.PubSub) |
59 | 64 |
|
60 |
| - # Remote node received the broadcast |
61 |
| - assert_receive {:relay, ^node, ^message} |
| 65 | + assert_receive ^message |
62 | 66 |
|
63 |
| - assert_receive { |
64 |
| - :telemetry, |
65 |
| - [:realtime, :tenants, :payload, :size], |
66 |
| - %{size: 114}, |
67 |
| - %{tenant: "realtime-dev"} |
68 |
| - } |
69 |
| - end |
| 67 | + # Remote node received the broadcast |
| 68 | + assert_receive {:relay, ^node, ^message} |
70 | 69 |
|
71 |
| - test "pubsub_broadcast list payload", %{node: node} do |
72 |
| - message = %Broadcast{topic: @topic, event: "an event", payload: ["a", %{"b" => "c"}, 1, 23]} |
73 |
| - TenantBroadcaster.pubsub_broadcast("realtime-dev", @topic, message, Phoenix.PubSub) |
| 70 | + assert_receive { |
| 71 | + :telemetry, |
| 72 | + [:realtime, :tenants, :payload, :size], |
| 73 | + %{size: 114}, |
| 74 | + %{tenant: "realtime-dev"} |
| 75 | + } |
| 76 | + end |
74 | 77 |
|
75 |
| - assert_receive ^message |
| 78 | + test "pubsub_broadcast list payload", %{node: node} do |
| 79 | + message = %Broadcast{topic: @topic, event: "an event", payload: ["a", %{"b" => "c"}, 1, 23]} |
| 80 | + TenantBroadcaster.pubsub_broadcast("realtime-dev", @topic, message, Phoenix.PubSub) |
76 | 81 |
|
77 |
| - # Remote node received the broadcast |
78 |
| - assert_receive {:relay, ^node, ^message} |
| 82 | + assert_receive ^message |
79 | 83 |
|
80 |
| - assert_receive { |
81 |
| - :telemetry, |
82 |
| - [:realtime, :tenants, :payload, :size], |
83 |
| - %{size: 130}, |
84 |
| - %{tenant: "realtime-dev"} |
85 |
| - } |
86 |
| - end |
| 84 | + # Remote node received the broadcast |
| 85 | + assert_receive {:relay, ^node, ^message} |
87 | 86 |
|
88 |
| - test "pubsub_broadcast string payload", %{node: node} do |
89 |
| - message = %Broadcast{topic: @topic, event: "an event", payload: "some text payload"} |
90 |
| - TenantBroadcaster.pubsub_broadcast("realtime-dev", @topic, message, Phoenix.PubSub) |
| 87 | + assert_receive { |
| 88 | + :telemetry, |
| 89 | + [:realtime, :tenants, :payload, :size], |
| 90 | + %{size: 130}, |
| 91 | + %{tenant: "realtime-dev"} |
| 92 | + } |
| 93 | + end |
91 | 94 |
|
92 |
| - assert_receive ^message |
| 95 | + test "pubsub_broadcast string payload", %{node: node} do |
| 96 | + message = %Broadcast{topic: @topic, event: "an event", payload: "some text payload"} |
| 97 | + TenantBroadcaster.pubsub_broadcast("realtime-dev", @topic, message, Phoenix.PubSub) |
93 | 98 |
|
94 |
| - # Remote node received the broadcast |
95 |
| - assert_receive {:relay, ^node, ^message} |
| 99 | + assert_receive ^message |
96 | 100 |
|
97 |
| - assert_receive { |
98 |
| - :telemetry, |
99 |
| - [:realtime, :tenants, :payload, :size], |
100 |
| - %{size: 119}, |
101 |
| - %{tenant: "realtime-dev"} |
102 |
| - } |
| 101 | + # Remote node received the broadcast |
| 102 | + assert_receive {:relay, ^node, ^message} |
| 103 | + |
| 104 | + assert_receive { |
| 105 | + :telemetry, |
| 106 | + [:realtime, :tenants, :payload, :size], |
| 107 | + %{size: 119}, |
| 108 | + %{tenant: "realtime-dev"} |
| 109 | + } |
| 110 | + end |
103 | 111 | end
|
104 | 112 | end
|
105 | 113 |
|
106 |
| - describe "pubsub_broadcast_from/5" do |
107 |
| - test "pubsub_broadcast_from", %{node: node} do |
108 |
| - parent = self() |
| 114 | + for pubsub_adapter <- [:gen_rpc, :pg2] do |
| 115 | + describe "pubsub_broadcast_from/5 #{pubsub_adapter}" do |
| 116 | + @describetag pubsub_adapter: pubsub_adapter |
| 117 | + |
| 118 | + test "pubsub_broadcast_from", %{node: node} do |
| 119 | + parent = self() |
109 | 120 |
|
110 |
| - spawn_link(fn -> |
111 |
| - Endpoint.subscribe(@topic) |
112 |
| - send(parent, :ready) |
| 121 | + spawn_link(fn -> |
| 122 | + Endpoint.subscribe(@topic) |
| 123 | + send(parent, :ready) |
113 | 124 |
|
114 |
| - receive do |
115 |
| - msg -> send(parent, {:other_process, msg}) |
116 |
| - end |
117 |
| - end) |
| 125 | + receive do |
| 126 | + msg -> send(parent, {:other_process, msg}) |
| 127 | + end |
| 128 | + end) |
118 | 129 |
|
119 |
| - assert_receive :ready |
| 130 | + assert_receive :ready |
120 | 131 |
|
121 |
| - message = %Broadcast{topic: @topic, event: "an event", payload: %{"a" => "b"}} |
| 132 | + message = %Broadcast{topic: @topic, event: "an event", payload: %{"a" => "b"}} |
122 | 133 |
|
123 |
| - TenantBroadcaster.pubsub_broadcast_from("realtime-dev", self(), @topic, message, Phoenix.PubSub) |
| 134 | + TenantBroadcaster.pubsub_broadcast_from("realtime-dev", self(), @topic, message, Phoenix.PubSub) |
124 | 135 |
|
125 |
| - assert_receive {:other_process, ^message} |
| 136 | + assert_receive {:other_process, ^message} |
126 | 137 |
|
127 |
| - # Remote node received the broadcast |
128 |
| - assert_receive {:relay, ^node, ^message} |
| 138 | + # Remote node received the broadcast |
| 139 | + assert_receive {:relay, ^node, ^message} |
129 | 140 |
|
130 |
| - assert_receive { |
131 |
| - :telemetry, |
132 |
| - [:realtime, :tenants, :payload, :size], |
133 |
| - %{size: 114}, |
134 |
| - %{tenant: "realtime-dev"} |
135 |
| - } |
| 141 | + assert_receive { |
| 142 | + :telemetry, |
| 143 | + [:realtime, :tenants, :payload, :size], |
| 144 | + %{size: 114}, |
| 145 | + %{tenant: "realtime-dev"} |
| 146 | + } |
136 | 147 |
|
137 |
| - # This process does not receive the message |
138 |
| - refute_receive _any |
| 148 | + # This process does not receive the message |
| 149 | + refute_receive _any |
| 150 | + end |
139 | 151 | end
|
140 | 152 | end
|
141 | 153 |
|
|
0 commit comments