@@ -50,7 +50,7 @@ init_per_suite(Config) ->
5050 [{plugin_id , PluginId }, {plugin_filename , Filename }, {plugin_config , PluginConfig } | Config ].
5151
5252end_per_suite (_Config ) ->
53- ok = emqx_omp_test_api_helpers :delete_all_plugins (),
53+ % ok = emqx_omp_test_api_helpers:delete_all_plugins(),
5454 ok = emqx_omp_test_helpers :stop (),
5555 ok .
5656
@@ -127,16 +127,18 @@ end_per_testcase(_Case, _Config) ->
127127% %--------------------------------------------------------------------
128128
129129t_different_subscribers (_Config ) ->
130+ Topic = unique_topic (),
131+
130132 % publish message
131- Payload = emqx_guid : to_hexstr ( emqx_guid : gen () ),
133+ Payload = unique_payload ( ),
132134 ClientPub = emqtt_connect (),
133- _ = emqtt :publish (ClientPub , << " t/1 " >> , Payload , 1 ),
135+ _ = emqtt :publish (ClientPub , Topic , Payload , 1 ),
134136 ok = emqtt :stop (ClientPub ),
135137 ct :sleep (500 ),
136138
137139 % A new subscriber should receive the message
138140 ClientSub0 = emqtt_connect (),
139- _ = emqtt :subscribe (ClientSub0 , << " t/1 " >> , 1 ),
141+ _ = emqtt :subscribe (ClientSub0 , Topic , 1 ),
140142 receive
141143 {publish , #{payload := Payload }} ->
142144 ok
@@ -149,7 +151,7 @@ t_different_subscribers(_Config) ->
149151 % % Another subscriber should NOT receive the message:
150152 % % it should be deleted.
151153 ClientSub1 = emqtt_connect (),
152- _ = emqtt :subscribe (ClientSub1 , << " t/1 " >> , 1 ),
154+ _ = emqtt :subscribe (ClientSub1 , Topic , 1 ),
153155 receive
154156 {publish , #{payload := Payload } = Msg1 } ->
155157 ct :fail (" Message received: ~p " , [Msg1 ])
@@ -159,17 +161,19 @@ t_different_subscribers(_Config) ->
159161 ok = emqtt :stop (ClientSub1 ).
160162
161163t_subscribition_persistence (_Config ) ->
162- SubscriberOpts = [{clientid , <<" subscriber" >>}, {clean_start , true }],
164+ ClientId = unique_clientid (),
165+ Topic = unique_topic (),
166+ SubscriberOpts = [{clientid , ClientId }, {clean_start , true }],
163167
164168 % % Subscribe to topic and disconnect loosing session (clean_start = true)
165169 ClientSub0 = emqtt_connect (SubscriberOpts ),
166- _ = emqtt :subscribe (ClientSub0 , << " t/2 " >> , 1 ),
170+ _ = emqtt :subscribe (ClientSub0 , Topic , 1 ),
167171 ok = emqtt :stop (ClientSub0 ),
168172
169173 % % Publish message to topic
170- Payload0 = emqx_guid : to_hexstr ( emqx_guid : gen () ),
174+ Payload0 = unique_payload ( ),
171175 ClientPub = emqtt_connect (),
172- _ = emqtt :publish (ClientPub , << " t/2 " >> , Payload0 , 1 ),
176+ _ = emqtt :publish (ClientPub , Topic , Payload0 , 1 ),
173177 ct :sleep (500 ),
174178
175179 % % Reconnect subscriber
@@ -194,8 +198,8 @@ t_subscribition_persistence(_Config) ->
194198 after 1000 ->
195199 ok
196200 end ,
197- Payload1 = emqx_guid : to_hexstr ( emqx_guid : gen () ),
198- _ = emqtt :publish (ClientPub , << " t/2 " >> , Payload1 , 1 ),
201+ Payload1 = unique_payload ( ),
202+ _ = emqtt :publish (ClientPub , Topic , Payload1 , 1 ),
199203 receive
200204 {publish , #{payload := Payload1 }} ->
201205 ok
@@ -207,8 +211,37 @@ t_subscribition_persistence(_Config) ->
207211 ok = emqtt :stop (ClientPub ),
208212 ok = emqtt :stop (ClientSub2 ).
209213
210- % % TODO
211- % % Test message order
214+ t_message_order (_Config ) ->
215+ Topic = unique_topic (),
216+
217+ % publish message
218+ ClientPub = emqtt_connect (),
219+ lists :foreach (
220+ fun (I ) ->
221+ Payload = integer_to_binary (I ),
222+ _ = emqtt :publish (ClientPub , Topic , Payload , 1 )
223+ end ,
224+ lists :seq (1 , 200 )
225+ ),
226+ ok = emqtt :stop (ClientPub ),
227+ ct :sleep (500 ),
228+
229+ % % Collect messages
230+ ClientSub = emqtt_connect (),
231+ _ = emqtt :subscribe (ClientSub , Topic , 1 ),
232+ Messages = receive_messages (),
233+ ok = emqtt :stop (ClientSub ),
234+
235+ % % Check messages order
236+ ? assertEqual (lists :seq (1 , 200 ), Messages ).
237+
238+ receive_messages () ->
239+ receive
240+ {publish , #{payload := Payload }} ->
241+ [binary_to_integer (Payload ) | receive_messages ()]
242+ after 500 ->
243+ []
244+ end .
212245
213246% %--------------------------------------------------------------------
214247% % Internal functions
@@ -262,7 +295,8 @@ plugin_config() ->
262295 delete_message_sql => <<" delete from mqtt_msg where msgid = ${id}" >>,
263296 insert_message_sql => <<
264297 " insert into mqtt_msg(msgid, sender, topic, qos, retain, payload, arrived)"
265- " values(${id}, ${from}, ${topic}, ${qos}, ${flags.retain}, ${payload}, FROM_UNIXTIME(${timestamp}/1000))"
298+ " values(${id}, ${from}, ${topic}, ${qos}, ${flags.retain}, "
299+ " ${payload}, FROM_UNIXTIME(${timestamp}/1000))"
266300 >>,
267301 insert_subscription_sql => <<
268302 " insert into mqtt_sub(clientid, topic, qos)"
@@ -291,3 +325,15 @@ set_server(redis_tcp, Config) ->
291325 emqx_utils_maps :deep_put ([redis , servers ], Config , <<" redis:6379" >>);
292326set_server (redis_ssl , Config ) ->
293327 emqx_utils_maps :deep_put ([redis , servers ], Config , <<" redis-ssl:6380" >>).
328+
329+ unique_id () ->
330+ <<(emqx_guid :to_hexstr (emqx_guid :gen ()))/binary >>.
331+
332+ unique_topic () ->
333+ <<" t/" , (unique_id ())/binary >>.
334+
335+ unique_clientid () ->
336+ <<" c/" , (unique_id ())/binary >>.
337+
338+ unique_payload () ->
339+ <<" p/" , (unique_id ())/binary >>.
0 commit comments