You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by be...@apache.org on 2009/01/24 09:02:57 UTC
svn commit: r737315 - in /labs/vysper/src:
main/java/org/apache/vysper/xmpp/delivery/
main/java/org/apache/vysper/xmpp/modules/core/im/handler/
test/java/org/apache/vysper/xmpp/modules/core/im/handler/
test/java/org/apache/vysper/xmpp/server/
Author: berndf
Date: Sat Jan 24 08:02:56 2009
New Revision: 737315
URL: http://svn.apache.org/viewvc?rev=737315&view=rev
Log:
[vysper] fix and test more of the presence subscription workflow
Modified:
labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandlerBaseTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java?rev=737315&r1=737314&r2=737315&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/delivery/StanzaReceiverRelay.java Sat Jan 24 08:02:56 2009
@@ -80,6 +80,7 @@
for (StanzaReceiver receiver : receiverMap.values()) {
if (receiver instanceof StanzaReceiverQueue) {
StanzaReceiverQueue stanzaReceiverQueue = (StanzaReceiverQueue) receiver;
+ // emptying by retrieving all stanzas from the queue
while (stanzaReceiverQueue.getNext() != null) {
// continue
}
@@ -87,6 +88,7 @@
}
}
+ countRelayed = 0;
countDelivered = 0;
}
}
Modified: labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java?rev=737315&r1=737314&r2=737315&view=diff
==============================================================================
--- labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java (original)
+++ labs/vysper/src/main/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubscriptionHandler.java Sat Jan 24 08:02:56 2009
@@ -662,7 +662,7 @@
for (String resource : resources) {
Entity userResource = new EntityImpl(user, resource);
Stanza push = RosterStanzaUtils.createRosterItemPushIQ(userResource, sessionContext.nextSequenceValue(), rosterItem);
- sessionContext.getResponseWriter().write(push);
+ relayStanza(userResource, push, sessionContext);
}
} else {
// silently drop the stanza
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandlerBaseTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandlerBaseTestCase.java?rev=737315&r1=737314&r2=737315&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandlerBaseTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceHandlerBaseTestCase.java Sat Jan 24 08:02:56 2009
@@ -119,6 +119,10 @@
return sessionContext.getServerRuntimeContext().getResourceRegistry().getResourceState(initiatingUser.getBoundResourceId());
}
+ protected void assertStanzasDeliveredAndRelayed(int expectedRelayedAndDelivered) {
+ assertStanzasRelayed(expectedRelayedAndDelivered, expectedRelayedAndDelivered);
+ }
+
protected void assertStanzasRelayed(int expectedRelayed, int expectedDelivered) {
assertEquals(expectedRelayed, ((StanzaReceiverRelay) sessionContext.getServerRuntimeContext().getStanzaRelay()).getCountRelayed());
assertEquals(expectedDelivered, ((StanzaReceiverRelay) sessionContext.getServerRuntimeContext().getStanzaRelay()).getCountDelivered());
@@ -215,4 +219,4 @@
public Entity getEntityFQ() {
return fqEntity;
}
-}
\ No newline at end of file
+}
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java?rev=737315&r1=737314&r2=737315&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/modules/core/im/handler/PresenceSubRequestOutHandlerTestCase.java Sat Jan 24 08:02:56 2009
@@ -34,19 +34,25 @@
protected PresenceHandler handler = new PresenceHandler();
- public void testUnrelated_Approved() throws BindException, EntityFormatException {
+ public void testUnrelatedApprovesSubscription_Inbound() throws BindException, EntityFormatException {
- requestSubscribeToUnrelated();
+ requestSubscribeToUnrelated_Outbound();
+ assertStanzasDeliveredAndRelayed(0);
// now entity 'unrelated' approves the subscription
XMPPCoreStanza requestApproval = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(unrelatedUser.getEntityFQ(), initiatingUser.getEntity(), null, PresenceStanzaType.SUBSCRIBED, null, null).getFinalStanza());
handler.executeCore(requestApproval, sessionContext.getServerRuntimeContext(), false, sessionContext);
- assertStanzasRelayed(1+3, 1+3);
+ // 1 subscribed
+ assertTrue(checkPresence(sessionContext.getRecordedResponse(), PresenceStanzaType.SUBSCRIBED, unrelatedUser.getEntity(), null));
+ // 3 roster pushes
+ assertStanzasDeliveredAndRelayed(3);
+
+ resetRecordedStanzas();
}
- private void requestSubscribeToUnrelated() {
+ private void requestSubscribeToUnrelated_Outbound() {
setResourceState(initiatingUser.getBoundResourceId(), ResourceState.AVAILABLE_INTERESTED);
XMPPCoreStanza initialPresence = XMPPCoreStanza.getWrapper(StanzaBuilder.createPresenceStanza(initiatingUser.getEntityFQ(), unrelatedUser.getEntity(), null, PresenceStanzaType.SUBSCRIBE, null, null).getFinalStanza());
@@ -55,7 +61,7 @@
assertEquals(ResourceState.AVAILABLE_INTERESTED, getResourceState());
// 1 to TO + 3 roster pushes
- assertStanzasRelayed(1+3, 1+3);
+ assertStanzasDeliveredAndRelayed(1+3);
// roster push for interested initiator
Stanza initiatorNotification = initiatingUser.getNextStanza();
@@ -81,7 +87,6 @@
assertTrue(checkRosterItem(unrelatedUser.getEntity(), NONE, ASK_SUBSCRIBE));
- // unrelatedUser approves
resetRecordedStanzas();
}
@@ -95,7 +100,7 @@
assertEquals(ResourceState.AVAILABLE_INTERESTED, getResourceState());
// 1 to TO + 3 roster pushes
- assertStanzasRelayed(1+3, 1+3);
+ assertStanzasDeliveredAndRelayed(1+3);
// roster push for interested initiator
Stanza initiatorNotification = initiatingUser.getNextStanza();
@@ -118,7 +123,7 @@
handler.executeCore(initialPresence, sessionContext.getServerRuntimeContext(), true, sessionContext);
assertEquals(ResourceState.AVAILABLE_INTERESTED, getResourceState());
- assertStanzasRelayed(0, 0); // TO subscription already exists
+ assertStanzasDeliveredAndRelayed(0); // TO subscription already exists
}
public void testWithBOTH() throws BindException, EntityFormatException {
@@ -130,7 +135,7 @@
handler.executeCore(initialPresence, sessionContext.getServerRuntimeContext(), true, sessionContext);
assertEquals(ResourceState.AVAILABLE_INTERESTED, getResourceState());
- assertStanzasRelayed(0, 0); // TO subscription already exists with subscribed_BOTH
+ assertStanzasDeliveredAndRelayed(0); // TO subscription already exists with subscribed_BOTH
}
}
\ No newline at end of file
Modified: labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java
URL: http://svn.apache.org/viewvc/labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java?rev=737315&r1=737314&r2=737315&view=diff
==============================================================================
--- labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java (original)
+++ labs/vysper/src/test/java/org/apache/vysper/xmpp/server/TestSessionContext.java Sat Jan 24 08:02:56 2009
@@ -78,7 +78,12 @@
return closed; // checks if close had been called
}
+ /**
+ * @param stanza records the stanza. if NULL, the prev recorded stanza will be reset.
+ * @throws IllegalStateException if NOT NULL, and there is already a stanza recorded
+ */
public void write(Stanza stanza) {
+ if (recordedResponse != null && stanza != null) throw new IllegalStateException("stanza already recorded");
recordedResponse = stanza;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org