From 53b8c77c8258bf3b4af8f9dd7c9cc6a99a068638 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 10:13:25 -0400 Subject: [PATCH 01/26] Test replica set functionality --- test/replica_set_SUITE.erl | 55 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 test/replica_set_SUITE.erl diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl new file mode 100644 index 00000000..eeb4927b --- /dev/null +++ b/test/replica_set_SUITE.erl @@ -0,0 +1,55 @@ +-module(replica_set_SUITE). + +%% API +-export([]). + +-include_lib("common_test/include/ct.hrl"). +-include_lib("eunit/include/eunit.hrl"). + +-include("mongo_protocol.hrl"). + +-compile(export_all). + +-define(HOSTS, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]). +-define(USER, <<"rs_user">>). +-define(PASSWORD, <<"rs_test">>). +-define(DB, <<"test">>). + +all() -> + [todo_test]. + +init_per_suite(Config) -> + application:ensure_all_started(mongodb), + case mongoc_connect() of + {ok, Topology} -> + mongoc:disconnect(Topology), + Config; + {error, _} -> + {skipped, cannot_connect_rs_cluster} + end. + +end_per_suite(_Config) -> + ok. + +init_per_testcase(Case, Config) -> + {ok, Connection} = + mc_worker_api:connect([{database, ?config(database, Config)}, + {login, <<"user">>}, + {password, <<"test">>}, + {w_mode, safe}]), + [{connection, Connection}, {collection, mc_test_utils:collection(Case)} | Config]. + +end_per_testcase(_Case, Config) -> + Connection = ?config(connection, Config), + Collection = ?config(collection, Config), + {true, _} = mc_worker_api:delete(Connection, Collection, #{}). + +%% Tests +todo_test(Config) -> + Config. + +%% Private +mongoc_connect() -> + mongoc:connect({rs, <<"rs0">>, ?HOSTS}, + [{rp_mode, secondaryPreferred}], + [{database, ?DB}, {login, ?USER}, {password, ?PASSWORD}]). From b2e94450668da975404c993649fba66b79d2b660 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 10:30:59 -0400 Subject: [PATCH 02/26] i --- test/replica_set_SUITE.erl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index eeb4927b..191947bc 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -10,9 +10,9 @@ -compile(export_all). --define(HOSTS, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]). --define(USER, <<"rs_user">>). --define(PASSWORD, <<"rs_test">>). +-define(HOSTS, ). +-define(USER, ). +-define(PASSWORD, ). -define(DB, <<"test">>). all() -> @@ -20,10 +20,10 @@ all() -> init_per_suite(Config) -> application:ensure_all_started(mongodb), - case mongoc_connect() of + Config1 = [{seed, {rs, <<"rs0">>, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]}}, {user, <<"rs_user">>}, {password, <<"rs_test">>}, {collection, <<"test">>}], + case mongoc_connect(Config) of {ok, Topology} -> - mongoc:disconnect(Topology), - Config; + [{topology, Topology}] ++ Config1; {error, _} -> {skipped, cannot_connect_rs_cluster} end. @@ -40,7 +40,7 @@ init_per_testcase(Case, Config) -> [{connection, Connection}, {collection, mc_test_utils:collection(Case)} | Config]. end_per_testcase(_Case, Config) -> - Connection = ?config(connection, Config), + Connection = ?config(topology, Config), Collection = ?config(collection, Config), {true, _} = mc_worker_api:delete(Connection, Collection, #{}). @@ -49,7 +49,7 @@ todo_test(Config) -> Config. %% Private -mongoc_connect() -> - mongoc:connect({rs, <<"rs0">>, ?HOSTS}, +mongoc_connect(Config) -> + mongoc:connect(?config(seed, Config), [{rp_mode, secondaryPreferred}], - [{database, ?DB}, {login, ?USER}, {password, ?PASSWORD}]). + [{database, ?config(collection, Config)}, {login, ?config(user, Config)}, {password, ?config(password, Config)}]). From 51e05cd70bacb51afe2a95d5dc1dca7c83b64c33 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 10:39:13 -0400 Subject: [PATCH 03/26] i --- test/replica_set_SUITE.erl | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 191947bc..61497f7a 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -20,8 +20,13 @@ all() -> init_per_suite(Config) -> application:ensure_all_started(mongodb), - Config1 = [{seed, {rs, <<"rs0">>, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]}}, {user, <<"rs_user">>}, {password, <<"rs_test">>}, {collection, <<"test">>}], - case mongoc_connect(Config) of + Config1 = + [{seed, + {rs, <<"rs0">>, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]}}, + {user, <<"rs_user">>}, + {password, <<"rs_test">>}, + {collection, <<"test">>}] ++ Config, + case mongoc_connect(Config1) of {ok, Topology} -> [{topology, Topology}] ++ Config1; {error, _} -> @@ -39,10 +44,8 @@ init_per_testcase(Case, Config) -> {w_mode, safe}]), [{connection, Connection}, {collection, mc_test_utils:collection(Case)} | Config]. -end_per_testcase(_Case, Config) -> - Connection = ?config(topology, Config), - Collection = ?config(collection, Config), - {true, _} = mc_worker_api:delete(Connection, Collection, #{}). +end_per_testcase(_Case, _Config) -> + ok. %% Tests todo_test(Config) -> @@ -52,4 +55,6 @@ todo_test(Config) -> mongoc_connect(Config) -> mongoc:connect(?config(seed, Config), [{rp_mode, secondaryPreferred}], - [{database, ?config(collection, Config)}, {login, ?config(user, Config)}, {password, ?config(password, Config)}]). + [{database, ?config(collection, Config)}, + {login, ?config(user, Config)}, + {password, ?config(password, Config)}]). From 95a8815cfe6a972c99338c6d294cfc7909e88c56 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 10:46:48 -0400 Subject: [PATCH 04/26] i --- test/replica_set_SUITE.erl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 61497f7a..42f302d5 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -49,6 +49,9 @@ end_per_testcase(_Case, _Config) -> %% Tests todo_test(Config) -> + Topology = ?config(topology, Config), + State = mc_topology:get_state(Topology), + ct:pal("State: ~p", [State]), Config. %% Private From 41c9233369b344dda8a520c58f9fdc2a89ecb526 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 10:53:14 -0400 Subject: [PATCH 05/26] i --- test/replica_set_SUITE.erl | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 42f302d5..3a8e8f22 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -20,31 +20,25 @@ all() -> init_per_suite(Config) -> application:ensure_all_started(mongodb), - Config1 = - [{seed, + [{seed, {rs, <<"rs0">>, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]}}, {user, <<"rs_user">>}, {password, <<"rs_test">>}, - {collection, <<"test">>}] ++ Config, - case mongoc_connect(Config1) of - {ok, Topology} -> - [{topology, Topology}] ++ Config1; - {error, _} -> - {skipped, cannot_connect_rs_cluster} - end. + {collection, <<"test">>}] ++ Config. end_per_suite(_Config) -> ok. -init_per_testcase(Case, Config) -> - {ok, Connection} = - mc_worker_api:connect([{database, ?config(database, Config)}, - {login, <<"user">>}, - {password, <<"test">>}, - {w_mode, safe}]), - [{connection, Connection}, {collection, mc_test_utils:collection(Case)} | Config]. +init_per_testcase(_Case, Config) -> + case mongoc_connect(Config) of + {ok, Topology} -> + [{topology, Topology}] ++ Config; + {error, _} -> + {skipped, cannot_connect_rs_cluster} + end. -end_per_testcase(_Case, _Config) -> +end_per_testcase(_Case, Config) -> + mongoc:disconnect(?config(topology, Config)), ok. %% Tests From 01b0bf5becab446413bdbccf978edddc646c38ff Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 11:06:51 -0400 Subject: [PATCH 06/26] i --- test/replica_set_SUITE.erl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 3a8e8f22..65ed7501 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -46,6 +46,8 @@ todo_test(Config) -> Topology = ?config(topology, Config), State = mc_topology:get_state(Topology), ct:pal("State: ~p", [State]), + Status = mc_topology:get_status(Topology), + ct:pal("Status: ~p", [Status]), Config. %% Private From c04f66253d26c033a786c7aacc4a48d6add53bb9 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 11:10:06 -0400 Subject: [PATCH 07/26] i --- test/replica_set_SUITE.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 65ed7501..dce7a648 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -46,7 +46,7 @@ todo_test(Config) -> Topology = ?config(topology, Config), State = mc_topology:get_state(Topology), ct:pal("State: ~p", [State]), - Status = mc_topology:get_status(Topology), + Status = mongoc:status(Topology), ct:pal("Status: ~p", [Status]), Config. From ffd7fc289950b7b66b2f159bcfad78e4694ff2df Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 14:18:23 -0400 Subject: [PATCH 08/26] i --- .github/workflows/test.yml | 4 ++-- .github/workflows/test_coverage.yml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ff030ac5..a769690b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,8 +19,8 @@ jobs: - run: ./scripts/install_mongo_debian.sh ${{ matrix.mongodb }} - run: ./scripts/start_mongo_single_node.sh - run: ./scripts/start_mongo_cluster.sh - - run: ./rebar3 eunit - - run: ./rebar3 ct + - run: ./rebar3 eunit --verbose + - run: ./rebar3 ct --verbose - name: Archive Replica Set Logs uses: actions/upload-artifact@v2 if: failure() diff --git a/.github/workflows/test_coverage.yml b/.github/workflows/test_coverage.yml index 76ee41d0..93264df9 100644 --- a/.github/workflows/test_coverage.yml +++ b/.github/workflows/test_coverage.yml @@ -15,9 +15,9 @@ jobs: - run: ./scripts/install_mongo_debian.sh 5.0.2 - run: ./scripts/start_mongo_single_node.sh - run: ./scripts/start_mongo_cluster.sh - - run: ./rebar3 eunit --cover --cover_export_name eunit.coverdata - - run: ./rebar3 ct --cover --cover_export_name ct.coverdata - - run: rebar3 cover --verbose + - run: ./rebar3 eunit --verbose --cover --cover_export_name eunit.coverdata + - run: ./rebar3 ct --verbose --cover --cover_export_name ct.coverdata + - run: ./rebar3 cover --verbose - name: Archive Replica Set Logs uses: actions/upload-artifact@v2 if: failure() From 774a97c3da71d2309f13d1f77390b6bf5858d328 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 14:34:01 -0400 Subject: [PATCH 09/26] i --- test/replica_set_SUITE.erl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index dce7a648..2c0f22e3 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -48,6 +48,10 @@ todo_test(Config) -> ct:pal("State: ~p", [State]), Status = mongoc:status(Topology), ct:pal("Status: ~p", [Status]), + PrimaryPool = mc_topology:get_pool(Topology, #{rp_mode => primary}), + ct:pal("PrimaryPool: ~p", [PrimaryPool]), + SecondaryPool = mc_topology:get_pool(Topology, #{rp_mode => secondary}), + ct:pal("SecondaryPool: ~p", [SecondaryPool]), Config. %% Private From 130257a5b319ba32a5852784756785f9ce82489e Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 15:25:07 -0400 Subject: [PATCH 10/26] i --- test/replica_set_SUITE.erl | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 2c0f22e3..df25de8d 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -54,6 +54,16 @@ todo_test(Config) -> ct:pal("SecondaryPool: ~p", [SecondaryPool]), Config. +rp_mode_test(Config) -> + {rs, _, Hosts} = ?config(seed, Config), + HostsAndPorts = [binary:split(Host, <<":">>) || Host <- Hosts], + lists:map(fun([Host, Port]) -> + {ok, Connection} = mc_worker_api:connect([{host, Host}, {port, Port}, {login, ?config(user,Config)}, {password, ?config(password, Config)}]), + {true, IsMaster} = mc_worker_api:command(Connection, {isMaster, 1}), + ct:pal("IsMaster ~p", [IsMaster]) + end, HostsAndPorts), + ok. + %% Private mongoc_connect(Config) -> mongoc:connect(?config(seed, Config), From 6e1f762d7c8483ecbe5bac6fa26114f313bb663f Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 15:31:15 -0400 Subject: [PATCH 11/26] i --- test/replica_set_SUITE.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index df25de8d..67b8e106 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -16,7 +16,7 @@ -define(DB, <<"test">>). all() -> - [todo_test]. + [todo_test, rp_mode_test]. init_per_suite(Config) -> application:ensure_all_started(mongodb), From 2696f621b9115393b6ef518d2356affee877f956 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 15:36:28 -0400 Subject: [PATCH 12/26] i --- test/replica_set_SUITE.erl | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 67b8e106..10624f67 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -21,10 +21,11 @@ all() -> init_per_suite(Config) -> application:ensure_all_started(mongodb), [{seed, - {rs, <<"rs0">>, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]}}, - {user, <<"rs_user">>}, - {password, <<"rs_test">>}, - {collection, <<"test">>}] ++ Config. + {rs, <<"rs0">>, [<<"localhost:27018">>, <<"localhost:27019">>, <<"localhost:27020">>]}}, + {user, <<"rs_user">>}, + {password, <<"rs_test">>}, + {collection, <<"test">>}] + ++ Config. end_per_suite(_Config) -> ok. @@ -58,11 +59,16 @@ rp_mode_test(Config) -> {rs, _, Hosts} = ?config(seed, Config), HostsAndPorts = [binary:split(Host, <<":">>) || Host <- Hosts], lists:map(fun([Host, Port]) -> - {ok, Connection} = mc_worker_api:connect([{host, Host}, {port, Port}, {login, ?config(user,Config)}, {password, ?config(password, Config)}]), - {true, IsMaster} = mc_worker_api:command(Connection, {isMaster, 1}), - ct:pal("IsMaster ~p", [IsMaster]) - end, HostsAndPorts), - ok. + {ok, Connection} = + mc_worker_api:connect([{host, Host}, + {port, list_to_integer(Port)}, + {login, ?config(user, Config)}, + {password, ?config(password, Config)}]), + {true, IsMaster} = mc_worker_api:command(Connection, {isMaster, 1}), + ct:pal("IsMaster ~p", [IsMaster]) + end, + HostsAndPorts), + ok. %% Private mongoc_connect(Config) -> From 44f8c7d193e553f094bf7025f00d9daaba5e59d7 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 15:41:50 -0400 Subject: [PATCH 13/26] i --- test/replica_set_SUITE.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 10624f67..1a29b37e 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -61,7 +61,7 @@ rp_mode_test(Config) -> lists:map(fun([Host, Port]) -> {ok, Connection} = mc_worker_api:connect([{host, Host}, - {port, list_to_integer(Port)}, + {port, binary_to_integer(Port)}, {login, ?config(user, Config)}, {password, ?config(password, Config)}]), {true, IsMaster} = mc_worker_api:command(Connection, {isMaster, 1}), From 22af76c9a52d6264db93a255f5f00a732db72d03 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 16:04:57 -0400 Subject: [PATCH 14/26] i --- test/replica_set_SUITE.erl | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 1a29b37e..263d8070 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -10,11 +10,6 @@ -compile(export_all). --define(HOSTS, ). --define(USER, ). --define(PASSWORD, ). --define(DB, <<"test">>). - all() -> [todo_test, rp_mode_test]. @@ -59,11 +54,13 @@ rp_mode_test(Config) -> {rs, _, Hosts} = ?config(seed, Config), HostsAndPorts = [binary:split(Host, <<":">>) || Host <- Hosts], lists:map(fun([Host, Port]) -> - {ok, Connection} = - mc_worker_api:connect([{host, Host}, - {port, binary_to_integer(Port)}, - {login, ?config(user, Config)}, - {password, ?config(password, Config)}]), + ConnectArgs = + [{host, Host}, + {port, binary_to_integer(Port)}, + {login, ?config(user, Config)}, + {password, ?config(password, Config)}], + ct:pal("ConnectArgs ~p, [ConnectArgs]"), + {ok, Connection} = mc_worker_api:connect(ConnectArgs), {true, IsMaster} = mc_worker_api:command(Connection, {isMaster, 1}), ct:pal("IsMaster ~p", [IsMaster]) end, From eeafc3646bbf4051cf439d6af63dd440539bb787 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 16:12:41 -0400 Subject: [PATCH 15/26] i --- .github/workflows/test_coverage.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/test_coverage.yml b/.github/workflows/test_coverage.yml index 93264df9..5203289c 100644 --- a/.github/workflows/test_coverage.yml +++ b/.github/workflows/test_coverage.yml @@ -34,12 +34,14 @@ jobs: retention-days: 1 - name: Coverage Report uses: actions/upload-artifact@v2 + if: always() with: name: Coverage Report path: _build/test/cover/ retention-days: 5 - name: CT Logs uses: actions/upload-artifact@v2 + if: always() with: name: ct_logs path: _build/test/logs/ From dbaa31b034b6ae2716ec9730ebf90d49587a94a6 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 16:17:06 -0400 Subject: [PATCH 16/26] i --- .github/workflows/test_coverage.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test_coverage.yml b/.github/workflows/test_coverage.yml index 5203289c..919a35c8 100644 --- a/.github/workflows/test_coverage.yml +++ b/.github/workflows/test_coverage.yml @@ -15,8 +15,8 @@ jobs: - run: ./scripts/install_mongo_debian.sh 5.0.2 - run: ./scripts/start_mongo_single_node.sh - run: ./scripts/start_mongo_cluster.sh - - run: ./rebar3 eunit --verbose --cover --cover_export_name eunit.coverdata - - run: ./rebar3 ct --verbose --cover --cover_export_name ct.coverdata + - run: ./rebar3 eunit --verbose --cover --cover_export_name eunit + - run: ./rebar3 ct --verbose --cover --cover_export_name ct - run: ./rebar3 cover --verbose - name: Archive Replica Set Logs uses: actions/upload-artifact@v2 From 58b453d140c9fcbd202afcb1a2d9c66ee7f6ba85 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 16:22:35 -0400 Subject: [PATCH 17/26] i --- test/replica_set_SUITE.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 263d8070..c174f367 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -59,7 +59,7 @@ rp_mode_test(Config) -> {port, binary_to_integer(Port)}, {login, ?config(user, Config)}, {password, ?config(password, Config)}], - ct:pal("ConnectArgs ~p, [ConnectArgs]"), + ct:pal("ConnectArgs ~p", [ConnectArgs]), {ok, Connection} = mc_worker_api:connect(ConnectArgs), {true, IsMaster} = mc_worker_api:command(Connection, {isMaster, 1}), ct:pal("IsMaster ~p", [IsMaster]) From aa2b66c5fab57bef96564bc546f14801bdedccb1 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 16:33:11 -0400 Subject: [PATCH 18/26] i --- test/replica_set_SUITE.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index c174f367..ad8dc679 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -53,9 +53,9 @@ todo_test(Config) -> rp_mode_test(Config) -> {rs, _, Hosts} = ?config(seed, Config), HostsAndPorts = [binary:split(Host, <<":">>) || Host <- Hosts], - lists:map(fun([Host, Port]) -> + lists:map(fun([_Host, Port]) -> ConnectArgs = - [{host, Host}, + [%{host, Host}, {port, binary_to_integer(Port)}, {login, ?config(user, Config)}, {password, ?config(password, Config)}], From 578588f75ebaba7ce29e1a3c6e6a70609d864dc9 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 19:01:21 -0400 Subject: [PATCH 19/26] i --- test/replica_set_SUITE.erl | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index ad8dc679..4842c004 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -53,18 +53,20 @@ todo_test(Config) -> rp_mode_test(Config) -> {rs, _, Hosts} = ?config(seed, Config), HostsAndPorts = [binary:split(Host, <<":">>) || Host <- Hosts], - lists:map(fun([_Host, Port]) -> + TaggedPorts = lists:map(fun([_, Port]) -> ConnectArgs = - [%{host, Host}, - {port, binary_to_integer(Port)}, + [ {port, binary_to_integer(Port)}, {login, ?config(user, Config)}, {password, ?config(password, Config)}], - ct:pal("ConnectArgs ~p", [ConnectArgs]), {ok, Connection} = mc_worker_api:connect(ConnectArgs), - {true, IsMaster} = mc_worker_api:command(Connection, {isMaster, 1}), - ct:pal("IsMaster ~p", [IsMaster]) + {true, #{<<"ismaster">> := IsPrimary}} = mc_worker_api:command(Connection, {isMaster, 1}), + {Port, IsPrimary} end, HostsAndPorts), + [{PrimaryPort, true}] = lists:filter(fun({_Port, IsPrimary}) -> IsPrimary end, TaggedPorts), + SecondaryPorts = lists:subtract(TaggedPorts, [{PrimaryPort, true}]), + ct:pal("PrimaryPort ~p, [PrimaryPort]"), + ct:pal("SecondaryPorts ~p, [SecondaryPorts]"), ok. %% Private From 4491150ded496114910addc27910418cf1822b62 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 19:12:27 -0400 Subject: [PATCH 20/26] i --- test/replica_set_SUITE.erl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 4842c004..f17c280a 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -65,8 +65,8 @@ rp_mode_test(Config) -> HostsAndPorts), [{PrimaryPort, true}] = lists:filter(fun({_Port, IsPrimary}) -> IsPrimary end, TaggedPorts), SecondaryPorts = lists:subtract(TaggedPorts, [{PrimaryPort, true}]), - ct:pal("PrimaryPort ~p, [PrimaryPort]"), - ct:pal("SecondaryPorts ~p, [SecondaryPorts]"), + ct:pal("PrimaryPort ~p", [PrimaryPort]), + ct:pal("SecondaryPorts ~p", [SecondaryPorts]), ok. %% Private From cc7f8c0b8d8b65432a4aa88e80d6bad261cb3fe2 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 19:34:38 -0400 Subject: [PATCH 21/26] i --- test/replica_set_SUITE.erl | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index f17c280a..ccf0d8a0 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -53,18 +53,25 @@ todo_test(Config) -> rp_mode_test(Config) -> {rs, _, Hosts} = ?config(seed, Config), HostsAndPorts = [binary:split(Host, <<":">>) || Host <- Hosts], - TaggedPorts = lists:map(fun([_, Port]) -> - ConnectArgs = - [ {port, binary_to_integer(Port)}, - {login, ?config(user, Config)}, - {password, ?config(password, Config)}], - {ok, Connection} = mc_worker_api:connect(ConnectArgs), - {true, #{<<"ismaster">> := IsPrimary}} = mc_worker_api:command(Connection, {isMaster, 1}), - {Port, IsPrimary} - end, - HostsAndPorts), - [{PrimaryPort, true}] = lists:filter(fun({_Port, IsPrimary}) -> IsPrimary end, TaggedPorts), - SecondaryPorts = lists:subtract(TaggedPorts, [{PrimaryPort, true}]), + BaseConnectArgs = [{login, ?config(user, Config)}, {password, ?config(password, Config)}], + TaggedPorts = + lists:map(fun([_, Port]) -> + ConnectArgs = + [{port, binary_to_integer(Port)}] ++ BaseConnectArgs, + {ok, Connection} = mc_worker_api:connect(ConnectArgs), + {true, #{<<"ismaster">> := IsPrimary}} = + mc_worker_api:command(Connection, {isMaster, 1}), + mc_worker_api:disconnect(Connection), + {Port, IsPrimary} + end, + HostsAndPorts), + [{PrimaryPort, true}] = + lists:filter(fun({_Port, IsPrimary}) -> IsPrimary end, TaggedPorts), + SPL = lists:subtract(TaggedPorts, [{PrimaryPort, true}]), + SecondaryPorts = [Port || {Port, _} <- SPL], + {ok, PrimaryConn} = mc_worker_api:connect([{port, PrimaryPort}]++BaseConnectArgs), + InsertResult = mc_worker_api:insert(PrimaryConn, #{<<"foo">> => <<"bar">>}), + ct:pal("InsertResult ~p", [InsertResult]), ct:pal("PrimaryPort ~p", [PrimaryPort]), ct:pal("SecondaryPorts ~p", [SecondaryPorts]), ok. From fc445d18fbffdf0a8ea6137957def31d3ab248a0 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 19:44:23 -0400 Subject: [PATCH 22/26] i --- test/replica_set_SUITE.erl | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index ccf0d8a0..ade9f6ba 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -56,8 +56,7 @@ rp_mode_test(Config) -> BaseConnectArgs = [{login, ?config(user, Config)}, {password, ?config(password, Config)}], TaggedPorts = lists:map(fun([_, Port]) -> - ConnectArgs = - [{port, binary_to_integer(Port)}] ++ BaseConnectArgs, + ConnectArgs = [{port, binary_to_integer(Port)}] ++ BaseConnectArgs, {ok, Connection} = mc_worker_api:connect(ConnectArgs), {true, #{<<"ismaster">> := IsPrimary}} = mc_worker_api:command(Connection, {isMaster, 1}), @@ -67,13 +66,20 @@ rp_mode_test(Config) -> HostsAndPorts), [{PrimaryPort, true}] = lists:filter(fun({_Port, IsPrimary}) -> IsPrimary end, TaggedPorts), + ct:pal("PrimaryPort ~p", [PrimaryPort]), SPL = lists:subtract(TaggedPorts, [{PrimaryPort, true}]), - SecondaryPorts = [Port || {Port, _} <- SPL], - {ok, PrimaryConn} = mc_worker_api:connect([{port, PrimaryPort}]++BaseConnectArgs), - InsertResult = mc_worker_api:insert(PrimaryConn, #{<<"foo">> => <<"bar">>}), + [SecondaryPort | _] = [Port || {Port, _} <- SPL], + ct:pal("SecondaryPort ~p", [SecondaryPort]), + {ok, PrimaryConn} = mc_worker_api:connect([{port, PrimaryPort}] ++ BaseConnectArgs), + InsertResult = + mc_worker_api:insert(PrimaryConn, #{<<"foo">> => <<"bar">>, <<"a">> => <<"b">>}), ct:pal("InsertResult ~p", [InsertResult]), - ct:pal("PrimaryPort ~p", [PrimaryPort]), - ct:pal("SecondaryPorts ~p", [SecondaryPorts]), + {ok, SecondarConn} = mc_worker_api:connect([{port, SecondaryPort}] ++ BaseConnectArgs), + FindOneResult = + mc_worker_api:find_one(SecondarConn, + ?config(collection, Config), + #{<<"foo">> => <<"bar">>}), + ct:pal("FindOneResult ~p", [FindOneResult]), ok. %% Private From b2d09a518b10d7c580e92f8fed23aed1a7f7fd9f Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 19:52:29 -0400 Subject: [PATCH 23/26] i --- test/replica_set_SUITE.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index ade9f6ba..46d0704d 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -61,7 +61,7 @@ rp_mode_test(Config) -> {true, #{<<"ismaster">> := IsPrimary}} = mc_worker_api:command(Connection, {isMaster, 1}), mc_worker_api:disconnect(Connection), - {Port, IsPrimary} + {binary_to_integer(Port), IsPrimary} end, HostsAndPorts), [{PrimaryPort, true}] = From e061c7ba5f1bdd68a0a6e6fa782dcf10544a8f37 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 19:58:43 -0400 Subject: [PATCH 24/26] i --- test/replica_set_SUITE.erl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 46d0704d..577d3a99 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -72,7 +72,9 @@ rp_mode_test(Config) -> ct:pal("SecondaryPort ~p", [SecondaryPort]), {ok, PrimaryConn} = mc_worker_api:connect([{port, PrimaryPort}] ++ BaseConnectArgs), InsertResult = - mc_worker_api:insert(PrimaryConn, #{<<"foo">> => <<"bar">>, <<"a">> => <<"b">>}), + mc_worker_api:insert(PrimaryConn, + ?config(collection, Config), + #{<<"foo">> => <<"bar">>, <<"a">> => <<"b">>}), ct:pal("InsertResult ~p", [InsertResult]), {ok, SecondarConn} = mc_worker_api:connect([{port, SecondaryPort}] ++ BaseConnectArgs), FindOneResult = From ee49b095439c7163c62abea4488503d889e1cec5 Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 20:57:51 -0400 Subject: [PATCH 25/26] i --- .github/workflows/test.yml | 2 +- scripts/start_mongo_cluster.sh | 37 +++++++++++++++++++++++++++++----- test/replica_set_SUITE.erl | 4 ++-- 3 files changed, 35 insertions(+), 8 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index a769690b..921113f2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: erlang: [22, 23] - mongodb: ["4.4.8", "5.0.2"] + mongodb: ["3.6.23", "4.4.8", "5.0.2"] container: image: erlang:${{ matrix.erlang }} steps: diff --git a/scripts/start_mongo_cluster.sh b/scripts/start_mongo_cluster.sh index c23b1d6e..2fb9164b 100755 --- a/scripts/start_mongo_cluster.sh +++ b/scripts/start_mongo_cluster.sh @@ -4,6 +4,19 @@ set -ex +mongo --port 27018 admin --eval 'db.adminCommand({ + shutdown: 1, + force: true +})' || true +mongo --port 27019 admin --eval 'db.adminCommand({ + shutdown: 1, + force: true +})' || true +mongo --port 27020 admin --eval 'db.adminCommand({ + shutdown: 1, + force: true +})' || true + rm -rf rs0-0 rs0-1 rs0-2 rs0-logs rs0-key mkdir -p rs0-0 rs0-1 rs0-2 rs0-logs rs0-key @@ -44,13 +57,26 @@ mongo --host rs0/localhost:27018,localhost:27019,localhost:27020 \ pwd: "rs_test", roles: [{role: "clusterAdmin", db: "admin"}, {role: "userAdminAnyDatabase", db: "admin"}, + {role: "readWriteAnyDatabase", db: "admin"}, "readWrite"]})' # Shutdown nodes in replica set -mongod --shutdown --dbpath rs0-0 -mongod --shutdown --dbpath rs0-1 -mongod --shutdown --dbpath rs0-2 - +mongo --port 27018 admin --eval 'db.adminCommand({ + shutdown: 1, + force: true +})' || true +mongo --port 27019 admin --eval 'db.adminCommand({ + shutdown: 1, + force: true +})' || true +mongo --port 27020 admin --eval 'db.adminCommand({ + shutdown: 1, + force: true +})' || true +#mongod --shutdown --dbpath rs0-0 +#mongod --shutdown --dbpath rs0-1 +#mongod --shutdown --dbpath rs0-2 +sleep 10 # Restart replica set nodes with authentication enabled mongod --replSet rs0 --auth --keyFile rs0-key/key --port 27018 --bind_ip localhost --dbpath rs0-0 --oplogSize 128 >> rs0-logs/rs0-0-auth.log.txt & mongod --replSet rs0 --auth --keyFile rs0-key/key --port 27019 --bind_ip localhost --dbpath rs0-1 --oplogSize 128 >> rs0-logs/rs0-1-auth.log.txt & @@ -63,9 +89,10 @@ timeout 5m sh -c 'until nc -z localhost 27019; do sleep 1; done' echo "Waiting on MongoDB to restart on 27020" timeout 5m sh -c 'until nc -z localhost 27020; do sleep 1; done' +# mongodb://rs_user:rs_test@localhost:27018,localhost:27019,localhost:27020/?authSource=admin&replicaSet=rs0 # Verify that we can auth to the restarted replica set mongo --host rs0/localhost:27018,localhost:27019,localhost:27020 \ --username rs_user \ --password rs_test \ --authenticationDatabase admin \ - --eval 'db.serverStatus()' > /dev/null + --eval 'db.serverStatus()' diff --git a/test/replica_set_SUITE.erl b/test/replica_set_SUITE.erl index 577d3a99..a622eaf5 100644 --- a/test/replica_set_SUITE.erl +++ b/test/replica_set_SUITE.erl @@ -76,9 +76,9 @@ rp_mode_test(Config) -> ?config(collection, Config), #{<<"foo">> => <<"bar">>, <<"a">> => <<"b">>}), ct:pal("InsertResult ~p", [InsertResult]), - {ok, SecondarConn} = mc_worker_api:connect([{port, SecondaryPort}] ++ BaseConnectArgs), + {ok, SecondaryConn} = mc_worker_api:connect([{port, SecondaryPort}, { {r_mode, slave_ok}}] ++ BaseConnectArgs), FindOneResult = - mc_worker_api:find_one(SecondarConn, + mc_worker_api:find_one(SecondaryConn, ?config(collection, Config), #{<<"foo">> => <<"bar">>}), ct:pal("FindOneResult ~p", [FindOneResult]), From 934a53c74e0b7d41b19720da9510b0bfd7220a4f Mon Sep 17 00:00:00 2001 From: Drew Varner Date: Thu, 2 Sep 2021 20:59:54 -0400 Subject: [PATCH 26/26] i --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 921113f2..07b131fa 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,7 +11,7 @@ jobs: strategy: matrix: erlang: [22, 23] - mongodb: ["3.6.23", "4.4.8", "5.0.2"] + mongodb: ["4.4.8"] container: image: erlang:${{ matrix.erlang }} steps: