Skip to content

Commit 3c9b6cd

Browse files
committed
refactored the TopologyDescription.select_servers function.
1 parent f615987 commit 3c9b6cd

File tree

3 files changed

+22
-22
lines changed

3 files changed

+22
-22
lines changed

lib/mongo/topology.ex

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -329,18 +329,18 @@ defmodule Mongo.Topology do
329329
nil
330330
end
331331

332-
defp get_connection([], _state), do: nil
333-
defp get_connection([address], %{connection_pools: pools}), do: Map.fetch(pools, address)
332+
defp get_connection(nil, _state), do: nil
333+
defp get_connection(address, %{connection_pools: pools}), do: Map.fetch(pools, address)
334334

335-
defp get_limits([], _topology), do: nil
336-
defp get_limits([address], %{servers: servers}) do
335+
defp get_limits(nil, _topology), do: nil
336+
defp get_limits(address, %{servers: servers}) do
337337
with {:ok, desc} <- Map.fetch(servers, address) do
338338
{:ok, Map.take(desc, @limits)}
339339
end
340340
end
341341

342-
defp wire_version([], _topology), do: nil
343-
defp wire_version([address], topology) do
342+
defp wire_version(nil, _topology), do: nil
343+
defp wire_version(address, topology) do
344344
with {:ok, server} <- Map.fetch(topology.servers, address) do
345345
server.max_wire_version
346346
else

lib/mongo/topology_description.ex

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,8 @@ defmodule Mongo.TopologyDescription do
8282
|> Enum.take_random(1)
8383

8484
case addr do
85-
[] -> :empty
86-
_ -> {:ok, {addr, opts}}
85+
[] -> :empty
86+
[result] -> {:ok, {result, opts}}
8787
end
8888
end
8989
def select_servers(topology, :read, opts) do
@@ -110,8 +110,8 @@ defmodule Mongo.TopologyDescription do
110110

111111
# check now three possible cases
112112
case addr do
113-
[] -> :empty
114-
_ -> {:ok, {addr, opts}}
113+
[] -> :empty
114+
[result] -> {:ok, {result, opts}}
115115
end
116116
end
117117

test/mongo/topology_description_test.exs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ defmodule Mongo.TopologyDescriptionTest do
44
import Mongo.TopologyTestData
55

66
test "single server selection" do
7-
single_server = ["localhost:27017"]
7+
single_server = "localhost:27017"
88

99
opts = [
1010
read_preference: ReadPreference.primary(%{mode: :secondary})
@@ -27,60 +27,60 @@ defmodule Mongo.TopologyDescriptionTest do
2727
opts = [
2828
read_preference: ReadPreference.primary(%{mode: :secondary})
2929
]
30-
{:ok, {[server], _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
30+
{:ok, {server, _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
3131

3232
assert Enum.any?(seconardaries, fn sec -> sec == server end)
3333

3434
opts = [
3535
read_preference: ReadPreference.primary(%{mode: :primary})
3636
]
37-
assert {:ok, {[master], _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
37+
assert {:ok, {master, _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
3838

3939
opts = [
4040
read_preference: ReadPreference.primary(%{mode: :primary_preferred})
4141
]
42-
assert {:ok, {[master], _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
42+
assert {:ok, {master, _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
4343

4444
opts = [
4545
read_preference: ReadPreference.primary(%{mode: :primary_preferred})
4646
]
47-
{:ok, {[server], _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
47+
{:ok, {server, _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
4848
assert Enum.any?(seconardaries, fn sec -> sec == server end)
4949

5050

5151
opts = [
5252
read_preference: ReadPreference.primary(%{mode: :nearest})
5353
]
54-
{:ok, {[server], _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
54+
{:ok, {server, _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
5555
assert Enum.any?(all_hosts, fn sec -> sec == server end)
5656

5757
opts = [
5858
read_preference: ReadPreference.primary(%{mode: :secondary})
5959
]
60-
{:ok, {[server], _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
60+
{:ok, {server, _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
6161
assert Enum.any?(seconardaries, fn sec -> sec == server end)
6262

6363
opts = [
6464
read_preference: ReadPreference.primary(%{mode: :secondary_preferred})
6565
]
66-
{:ok, {[server], _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
66+
{:ok, {server, _}} = TopologyDescription.select_servers(repl_set_with_master(), :read, opts)
6767
assert Enum.any?(seconardaries, fn sec -> sec == server end)
6868

69-
assert {:ok, {[^master], _}} = TopologyDescription.select_servers(repl_set_only_master(), :read, opts)
69+
assert {:ok, {^master, _}} = TopologyDescription.select_servers(repl_set_only_master(), :read, opts)
7070

71-
{:ok, {[server], _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
71+
{:ok, {server, _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
7272
assert Enum.any?(seconardaries, fn sec -> sec == server end)
7373

7474
opts = [
7575
read_preference: ReadPreference.primary(%{mode: :nearest})
7676
]
77-
{:ok, {[server], _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
77+
{:ok, {server, _}} = TopologyDescription.select_servers(repl_set_no_master(), :read, opts)
7878
assert Enum.any?(all_hosts, fn sec -> sec == server end)
7979

8080
end
8181

8282
test "Simplified server selection" do
83-
single_server = ["localhost:27017"]
83+
single_server = "localhost:27017"
8484

8585
opts = [
8686
read_preference: %{mode: :secondary}

0 commit comments

Comments
 (0)