File

spec/scansion/basic_roster.scs @ 12462:11765f0605ec

mod_s2s: Store real stanzas in session.sendq, rather than strings This is the "right" thing to do. Strings were more memory-efficient, but e.g. bypassed stanza filters at reconnection time. Also not being stanzas prevents us from potential future work, such as merging sendq with mod_smacks. Regarding performance: we should counter the probable negative effect of this change with other positive changes that are desired anyway - e.g. a limit on the size of the sendq, improved in-memory representation of stanzas, s2s backoff (e.g. if a remote server is persistently unreachable, cache this failure for a while and don't just keep forever queuing stanzas for it).
author Matthew Wild <mwild1@gmail.com>
date Wed, 23 Mar 2022 15:25:22 +0000
parent 9305:f14c81fd44a4
line wrap: on
line source

# Basic roster test

[Client] Romeo
	jid: user@localhost
	password: password

[Client] Juliet
	jid: juliet@localhost
	password: password

---------

Romeo connects

Juliet connects

Romeo sends:
	<presence/>

Romeo receives:
	<presence from="${Romeo's full JID}" />

Romeo sends:
	<iq type="get" id="roster1">
		<query xmlns='jabber:iq:roster'/>
	</iq>

Romeo receives:
	<iq type="result" id="roster1">
		<query ver='{scansion:any}' xmlns="jabber:iq:roster"/>
	</iq>

# Add nurse to roster

Romeo sends:
	<iq type="set" id="roster2">
		<query xmlns="jabber:iq:roster">
			<item jid='nurse@localhost'/>
		</query>
	</iq>

# Receive the roster add result

Romeo receives:
	<iq type="result" id="roster2"/>

# Receive the roster push

Romeo receives:
	<iq type="set" id="{scansion:any}">
		<query xmlns='jabber:iq:roster' ver='{scansion:any}'>
			<item jid='nurse@localhost' subscription='none'/>
		</query>
	</iq>

Romeo sends:
	<iq type="result" id="fixme"/>

# Fetch the roster, it should include nurse now

Romeo sends:
	<iq type="get" id="roster3">
		<query xmlns='jabber:iq:roster'/>
	</iq>

Romeo receives:
	<iq type="result" id="roster3">
		<query xmlns='jabber:iq:roster' ver="{scansion:any}">
			<item subscription='none' jid='nurse@localhost'/>
		</query>
	</iq>

Romeo disconnects