Skip to content

Commit 03aff79

Browse files
committed
change methods and improve tests
1 parent 187be44 commit 03aff79

File tree

6 files changed

+20
-16
lines changed

6 files changed

+20
-16
lines changed

lib/realtime/api.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,8 @@ defmodule Realtime.Api do
129129
"""
130130
@spec update_tenant_by_external_id(binary(), map()) :: {:ok, Tenant.t()} | {:error, term()}
131131
def update_tenant_by_external_id(tenant_id, attrs) when is_binary(tenant_id) do
132+
IO.inspect(node())
133+
132134
if master_region?() do
133135
tenant_id
134136
|> get_tenant_by_external_id(use_replica?: false)

lib/realtime/nodes.ex

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,6 @@ defmodule Realtime.Nodes do
9494
@spec launch_node(String.t(), String.t() | nil, atom()) :: atom()
9595
def launch_node(tenant_id, region, default) do
9696
case region_nodes(region) do
97-
[node] ->
98-
Logger.warning("Only one region node (#{inspect(node)}) for #{region} using default #{inspect(default)}")
99-
100-
default
101-
10297
[] ->
10398
Logger.warning("Zero region nodes for #{region} using #{inspect(default)}")
10499
default

lib/realtime/tenants/migrations.ex

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -170,12 +170,10 @@ defmodule Realtime.Tenants.Migrations do
170170
migrations_ran: tenant.migrations_ran
171171
}
172172

173-
region = Tenants.region(tenant)
174-
175173
node =
176-
case Nodes.node_from_region(region, tenant.external_id) do
177-
{:ok, node} -> node
178-
{:error, :not_available} -> node()
174+
case Nodes.get_node_for_tenant(tenant) do
175+
{:ok, node, _} -> node
176+
{:error, _} -> node()
179177
end
180178

181179
GenRpc.call(node, __MODULE__, :start_migration, [attrs], tenant_id: tenant.external_id)

test/integration/region_aware_migrations_test.exs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,20 +21,26 @@ defmodule Realtime.Integration.RegionAwareMigrationsTest do
2121
"poll_interval" => 100,
2222
"poll_max_changes" => 100,
2323
"poll_max_record_bytes" => 1_048_576,
24-
"region" => "eu-west-2",
24+
"region" => "ap-southeast-2",
2525
"publication" => "supabase_realtime_test",
2626
"ssl_enforced" => false
2727
}
2828
}
2929
]
3030

3131
tenant = tenant_fixture(%{extensions: settings})
32+
region = Application.get_env(:realtime, :region)
3233

33-
{:ok, node} = Clustered.start(nil, extra_config: [{:realtime, :region, Tenants.region(tenant)}])
34+
{:ok, node} =
35+
Clustered.start(nil,
36+
extra_config: [
37+
{:realtime, :region, Tenants.region(tenant)},
38+
{:realtime, :master_region, region}
39+
]
40+
)
3441

3542
on_exit(fn -> Clustered.stop() end)
3643

37-
Process.sleep(1000)
3844
%{tenant: tenant, node: node}
3945
end
4046

@@ -57,5 +63,8 @@ defmodule Realtime.Integration.RegionAwareMigrationsTest do
5763
end)
5864

5965
assert :ok = Migrations.run_migrations(tenant)
66+
Process.sleep(1000)
67+
tenant = Realtime.Repo.reload!(tenant)
68+
refute tenant.migrations_ran == 0
6069
end
6170
end

test/realtime/nodes_test.exs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ defmodule Realtime.NodesTest do
108108
assert region == expected_region
109109
end
110110

111-
test "on existing tenant id, and a single node for a given region, returns default", %{
111+
test "on existing tenant id, and a single node for a given region, returns single node", %{
112112
tenant: tenant,
113113
region: region
114114
} do
@@ -117,7 +117,7 @@ defmodule Realtime.NodesTest do
117117

118118
expected_region = Tenants.region(tenant)
119119

120-
assert node == node()
120+
assert node != node()
121121
assert region == expected_region
122122
end
123123

test/realtime_web/controllers/tenant_controller_test.exs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@ defmodule RealtimeWeb.TenantControllerTest do
419419

420420
conn = get(conn, ~p"/api/tenants/#{tenant.external_id}/health")
421421
data = json_response(conn, 200)["data"]
422-
Process.sleep(4000)
422+
Process.sleep(1000)
423423

424424
assert {:ok, %{rows: []}} = Postgrex.query(db_conn, "SELECT * FROM realtime.messages", [])
425425

0 commit comments

Comments
 (0)