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