enable(Config) ->
Server = ?config(server, Config),
ServerJID = jid:make(<<"">>, Server, <<"">>),
- %% Send messages of type 'headline' so the server discards them silently
+ ct:comment("Send messages of type 'headline' so the server discards them silently"),
Msg = #message{to = ServerJID, type = headline,
body = [#text{data = <<"body">>}]},
- %% Enable the session management with resumption enabled
+ ct:comment("Enable the session management with resumption enabled"),
send(Config, #sm_enable{resume = true, xmlns = ?NS_STREAM_MGMT_3}),
#sm_enabled{id = ID, resume = true} = recv(Config),
- %% Initial request; 'h' should be 0.
+ ct:comment("Initial request; 'h' should be 0"),
send(Config, #sm_r{xmlns = ?NS_STREAM_MGMT_3}),
#sm_a{h = 0} = recv(Config),
- %% sending two messages and requesting again; 'h' should be 3.
+ ct:comment("Sending two messages and requesting again; 'h' should be 3"),
send(Config, Msg),
send(Config, Msg),
send(Config, Msg),
send(Config, #sm_r{xmlns = ?NS_STREAM_MGMT_3}),
#sm_a{h = 3} = recv(Config),
+ ct:comment("Closing socket"),
close_socket(Config),
{save_config, set_opt(sm_previd, ID, Config)}.
MyJID = my_jid(Config),
Txt = #text{data = <<"body">>},
Msg = #message{from = ServerJID, to = MyJID, body = [Txt]},
- %% Route message. The message should be queued by the C2S process.
+ ct:comment("Route message. The message should be queued by the C2S process"),
ejabberd_router:route(Msg),
+ ct:comment("Resuming the session"),
send(Config, #sm_resume{previd = ID, h = 0, xmlns = ?NS_STREAM_MGMT_3}),
#sm_resumed{previd = ID, h = 3} = recv(Config),
+ ct:comment("Receiving unacknowledged stanza"),
#message{from = ServerJID, to = MyJID, body = [Txt]} = recv_message(Config),
#sm_r{} = recv(Config),
send(Config, #sm_a{h = 1, xmlns = ?NS_STREAM_MGMT_3}),
- %% Send another stanza to increment the server's 'h' for sm_resume_failed.
+ ct:comment("Checking if the server counts stanzas correctly"),
+ send(Config, #sm_r{xmlns = ?NS_STREAM_MGMT_3}),
+ #sm_a{h = 3} = recv(Config),
+ ct:comment("Send another stanza to increment the server's 'h' for sm_resume_failed"),
send(Config, #presence{to = ServerJID}),
+ ct:comment("Closing socket"),
close_socket(Config),
{save_config, set_opt(sm_previd, ID, Config)}.
resume_failed(Config) ->
{_, SMConfig} = ?config(saved_config, Config),
ID = ?config(sm_previd, SMConfig),
- ct:sleep(5000), % Wait for session to time out.
+ ct:comment("Waiting for the session to time out"),
+ ct:sleep(5000),
+ ct:comment("Trying to resume timed out session"),
send(Config, #sm_resume{previd = ID, h = 1, xmlns = ?NS_STREAM_MGMT_3}),
#sm_failed{reason = 'item-not-found', h = 4} = recv(Config),
disconnect(Config).