@@ -86,6 +86,7 @@ init_per_testcase(TestCase, Config) ->
8686 ServerName2 = list_to_atom (atom_to_list (TestCase ) ++ " 2" ),
8787 ServerName3 = list_to_atom (atom_to_list (TestCase ) ++ " 3" ),
8888 ServerName4 = list_to_atom (atom_to_list (TestCase ) ++ " 4" ),
89+ ServerName5 = list_to_atom (atom_to_list (TestCase ) ++ " 5" ),
8990 [{test_case , TestCase },
9091 {modname , TestCase },
9192 {cluster_name , TestCase },
@@ -96,7 +97,9 @@ init_per_testcase(TestCase, Config) ->
9697 {uid3 , atom_to_binary (ServerName3 , utf8 )},
9798 {server_id3 , {ServerName3 , node ()}},
9899 {uid4 , atom_to_binary (ServerName4 , utf8 )},
99- {server_id4 , {ServerName4 , node ()}}
100+ {server_id4 , {ServerName4 , node ()}},
101+ {uid5 , atom_to_binary (ServerName5 , utf8 )},
102+ {server_id5 , {ServerName5 , node ()}}
100103 | Config ].
101104
102105enqueue (Server , Msg ) ->
@@ -710,19 +713,32 @@ force_start_follower_as_single_member_nonvoter(Config) ->
710713 {ok , [_ ], ServerId3 } = ra :members (ServerId3 ),
711714 ok = enqueue (ServerId3 , msg2 ),
712715
713- % % add a member
716+ % % add a promotable member
714717 ServerId4 = ? config (server_id4 , Config ),
715718 UId4 = ? config (uid4 , Config ),
716719 Conf4 = conf (ClusterName , UId4 , ServerId4 , PrivDir , [ServerId3 ]),
717- {ok , _ , _ } = ra :add_member (ServerId3 , #{id => ServerId4 , membership => promotable , uid => <<" test " >>}),
720+ {ok , _ , _ } = ra :add_member (ServerId3 , #{id => ServerId4 , membership => promotable , uid => <<" test4 " >>}),
718721 % % the membership has changed but member not running yet
719722 % % it is nonvoter and does not affect quorum size
720723 {ok , _ , _ } = ra :process_command (ServerId3 , {enq , banana }),
721724 % % start new member
722- ok = ra :start_server (? SYS , Conf4 #{membership => promotable , uid => <<" test " >>}),
725+ ok = ra :start_server (? SYS , Conf4 #{membership => promotable , uid => <<" test4 " >>}),
723726 {ok , _ , ServerId3 } = ra :members (ServerId4 ),
724727 ok = enqueue (ServerId3 , msg3 ),
725728
729+ % % add a non-voter member
730+ ServerId5 = ? config (server_id5 , Config ),
731+ UId5 = ? config (uid5 , Config ),
732+ Conf5 = conf (ClusterName , UId5 , ServerId5 , PrivDir , [ServerId3 ]),
733+ {ok , _ , _ } = ra :add_member (ServerId3 , #{id => ServerId5 , membership => non_voter , uid => <<" test5" >>}),
734+ % % the membership has changed but member not running yet
735+ % % it is nonvoter and does not affect quorum size
736+ {ok , _ , _ } = ra :process_command (ServerId3 , {enq , banana }),
737+ % % start new member
738+ ok = ra :start_server (? SYS , Conf5 #{membership => non_voter , uid => <<" test5" >>}),
739+ {ok , _ , ServerId3 } = ra :members (ServerId5 ),
740+ ok = enqueue (ServerId3 , msg4 ),
741+
726742 ok .
727743
728744initial_members_query (Config ) ->
0 commit comments