@@ -1020,17 +1020,27 @@ session_upgrade_v3_v5_qos0(Config) ->
1020
1020
session_upgrade_v3_v5_qos (Qos , Config ) ->
1021
1021
ClientId = Topic = atom_to_binary (? FUNCTION_NAME ),
1022
1022
Pub = connect (<<" publisher" >>, Config ),
1023
- Subv3 = connect (ClientId , Config , [{proto_ver , v3 } | non_clean_sess_opts ()]),
1023
+ Subv3 = connect (ClientId , Config ,
1024
+ [{proto_ver , v3 },
1025
+ {auto_ack , false }] ++
1026
+ non_clean_sess_opts ()),
1024
1027
? assertEqual (3 , proplists :get_value (proto_ver , emqtt :info (Subv3 ))),
1025
1028
{ok , _ , [Qos ]} = emqtt :subscribe (Subv3 , Topic , Qos ),
1026
1029
Sender = spawn_link (? MODULE , send , [self (), Pub , Topic , 0 ]),
1027
1030
receive {publish , #{payload := <<" 1" >>,
1028
- client_pid := Subv3 }} -> ok
1031
+ client_pid := Subv3 ,
1032
+ packet_id := PacketId }} ->
1033
+ case Qos of
1034
+ 0 -> ok ;
1035
+ 1 -> emqtt :puback (Subv3 , PacketId )
1036
+ end
1029
1037
after ? TIMEOUT -> ct :fail (" did not receive 1" )
1030
1038
end ,
1031
1039
% % Upgrade session from v3 to v5 while another client is sending messages.
1032
1040
ok = emqtt :disconnect (Subv3 ),
1033
- Subv5 = connect (ClientId , Config , [{proto_ver , v5 }, {clean_start , false }]),
1041
+ Subv5 = connect (ClientId , Config , [{proto_ver , v5 },
1042
+ {clean_start , false },
1043
+ {auto_ack , true }]),
1034
1044
? assertEqual (5 , proplists :get_value (proto_ver , emqtt :info (Subv5 ))),
1035
1045
Sender ! stop ,
1036
1046
NumSent = receive {N , Sender } -> N
0 commit comments