1
0
Fork 0
mirror of https://codeberg.org/Mercury-IM/Smack synced 2024-12-23 21:17:58 +01:00

Added some tests to support OpenFire fixes

git-svn-id: http://svn.igniterealtime.org/svn/repos/smack/trunk@11570 b35dd754-fafc-0310-a699-88a17e54d16e
This commit is contained in:
rcollier 2010-01-28 19:51:35 +00:00
parent 8101b21c71
commit f9399d894e
2 changed files with 52 additions and 31 deletions

View file

@ -11,6 +11,7 @@ import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smackx.FormField; import org.jivesoftware.smackx.FormField;
import org.jivesoftware.smackx.pubsub.test.SingleUserTestCase; import org.jivesoftware.smackx.pubsub.test.SingleUserTestCase;
@ -130,10 +131,22 @@ public class SubscriberUseCases extends SingleUserTestCase
// assertEquals(true, sub.isConfigRequired()); // assertEquals(true, sub.isConfigRequired());
// } // }
// //
public void testGetItemsWithSingleSubscription() throws XMPPException
{
LeafNode node = getPubnode(true, false);
node.subscribe(getBareJID(0));
runNodeTests(node);
}
public void testGetItems() throws XMPPException public void testGetItems() throws XMPPException
{ {
LeafNode node = getPubnode(true, false); LeafNode node = getPubnode(true, false);
runNodeTests(node);
}
private void runNodeTests(LeafNode node) throws XMPPException
{
node.send((Item)null); node.send((Item)null);
node.send((Item)null); node.send((Item)null);
node.send((Item)null); node.send((Item)null);
@ -175,15 +188,15 @@ public class SubscriberUseCases extends SingleUserTestCase
assertTrue(payloadItems.size() == 4); assertTrue(payloadItems.size() == 4);
} }
public void getSpecifiedItems() throws XMPPException public void testGetSpecifiedItems() throws XMPPException
{ {
LeafNode node = getPubnode(true, true); LeafNode node = getPubnode(true, true);
node.send(new PayloadItem<SimplePayload>("1", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='/1'/>"))); node.send(new PayloadItem<SimplePayload>("1", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='1'/>")));
node.send(new PayloadItem<SimplePayload>("2", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='/2'/>"))); node.send(new PayloadItem<SimplePayload>("2", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='2'/>")));
node.send(new PayloadItem<SimplePayload>("3", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='/3'/>"))); node.send(new PayloadItem<SimplePayload>("3", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='3'/>")));
node.send(new PayloadItem<SimplePayload>("4", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='/4'/>"))); node.send(new PayloadItem<SimplePayload>("4", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='4'/>")));
node.send(new PayloadItem<SimplePayload>("5", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='/5'/>"))); node.send(new PayloadItem<SimplePayload>("5", new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='5'/>")));
Collection<String> ids = new ArrayList<String>(3); Collection<String> ids = new ArrayList<String>(3);
ids.add("1"); ids.add("1");
@ -193,11 +206,11 @@ public class SubscriberUseCases extends SingleUserTestCase
List<PayloadItem<SimplePayload>> items = node.getItems(ids); List<PayloadItem<SimplePayload>> items = node.getItems(ids);
assertEquals(3, items.size()); assertEquals(3, items.size());
assertEquals(items.get(0).getId(), "1"); assertEquals(items.get(0).getId(), "1");
assertEquals(items.get(0).getPayload().toXML(), "<a xmlns='pubsub:test' href='/1'/>"); assertEquals("<a xmlns='pubsub:test' href='1'/>", items.get(0).getPayload().toXML().replace('\"', '\''));
assertEquals(items.get(1).getId(), "3"); assertEquals(items.get(1).getId(), "3");
assertEquals(items.get(1).getPayload().toXML(), "<a xmlns='pubsub:test' href='/3'/>"); assertEquals("<a xmlns='pubsub:test' href='3'/>", items.get(1).getPayload().toXML().replace('\"', '\''));
assertEquals(items.get(2).getId(), "5"); assertEquals(items.get(2).getId(), "4");
assertEquals(items.get(2).getPayload().toXML(), "<a xmlns='pubsub:test' href='/5'/>"); assertEquals("<a xmlns='pubsub:test' href='4'/>", items.get(3).getPayload().toXML().replace('\"', '\''));
} }
public void testGetLastNItems() throws XMPPException public void testGetLastNItems() throws XMPPException

View file

@ -6,6 +6,7 @@ package org.jivesoftware.smackx.pubsub;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List;
import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue; import java.util.concurrent.BlockingQueue;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -198,32 +199,31 @@ public class TestEvents extends SmackTestCase
* <className>org.jivesoftware.smackx.pubsub.CarExtensionProvider</className> * <className>org.jivesoftware.smackx.pubsub.CarExtensionProvider</className>
* </extensionProvider> * </extensionProvider>
*/ */
/*
public void testSendAndReceiveCarPayload() throws Exception public void testSendAndReceiveCarPayload() throws Exception
{ {
// Setup event source // Setup event source
String nodeId = "TestNode" + System.currentTimeMillis(); String nodeId = "TestNode" + System.currentTimeMillis();
PubSubManager creatorMgr = new PubSubManager(getConnection(0), getService()); PubSubManager creatorMgr = new PubSubManager(getConnection(0), getService());
Node creatorNode = getPubnode(creatorMgr, nodeId, true, true); LeafNode creatorNode = getPubnode(creatorMgr, nodeId, true, true);
BlockingQueue<ItemEventCoordinator> queue = new ArrayBlockingQueue<ItemEventCoordinator>(3); BlockingQueue<ItemEventCoordinator<PayloadItem<CarExtension>>> queue = new ArrayBlockingQueue<ItemEventCoordinator<PayloadItem<CarExtension>>>(3);
// Setup event receiver // Setup event receiver
PubSubManager subMgr = new PubSubManager(getConnection(1), getService()); PubSubManager subMgr = new PubSubManager(getConnection(1), getService());
Node subNode = subMgr.getNode(nodeId); Node subNode = subMgr.getNode(nodeId);
ItemEventCoordinator sub1Handler = new ItemEventCoordinator(queue, "sub1"); ItemEventCoordinator<PayloadItem<CarExtension>> sub1Handler = new ItemEventCoordinator<PayloadItem<CarExtension>>(queue, "sub1");
subNode.addItemEventListener(sub1Handler); subNode.addItemEventListener(sub1Handler);
Subscription sub1 = subNode.subscribe(getConnection(1).getUser()); Subscription sub1 = subNode.subscribe(getConnection(1).getUser());
// Send event // Send event
String itemId = String.valueOf(System.currentTimeMillis()); String itemId = String.valueOf(System.currentTimeMillis());
String payloadString = "<car xmlns='pubsub:test:vehicle'><paint color='green'/><tires num='4'/></car>"; String payloadString = "<car xmlns='pubsub:test:vehicle'><paint color='green'/><tires num='4'/></car>";
creatorNode.send(new Item(itemId, new SimplePayload("car", "pubsub:test:vehicle", payloadString))); creatorNode.send(new PayloadItem(itemId, new SimplePayload("car", "pubsub:test:vehicle", payloadString)));
ItemEventCoordinator coord = queue.take(); ItemEventCoordinator<PayloadItem<CarExtension>> coord = queue.take();
assertEquals(1, coord.events.getItems().size()); assertEquals(1, coord.events.getItems().size());
Item item = coord.events.getItems().get(0); PayloadItem item = coord.events.getItems().get(0);
assertEquals(itemId, item.getId()); assertEquals(itemId, item.getId());
assertTrue(item.getPayload() instanceof CarExtension); assertTrue(item.getPayload() instanceof CarExtension);
@ -231,7 +231,6 @@ public class TestEvents extends SmackTestCase
assertEquals("green", car.getColor()); assertEquals("green", car.getColor());
assertEquals(4, car.getNumTires()); assertEquals(4, car.getNumTires());
} }
*/
public void testSendAndReceiveMultipleSubs() throws Exception public void testSendAndReceiveMultipleSubs() throws Exception
{ {
@ -279,10 +278,10 @@ public class TestEvents extends SmackTestCase
String nodeId = "TestNode" + System.currentTimeMillis(); String nodeId = "TestNode" + System.currentTimeMillis();
PubSubManager creatorMgr = new PubSubManager(getConnection(0), getService()); PubSubManager creatorMgr = new PubSubManager(getConnection(0), getService());
LeafNode creatorNode = getPubnode(creatorMgr, nodeId, true, false); LeafNode creatorNode = getPubnode(creatorMgr, nodeId, true, true);
BlockingQueue<ItemEventCoordinator<Item>> queue = new ArrayBlockingQueue<ItemEventCoordinator<Item>>(3); BlockingQueue<ItemEventCoordinator<PayloadItem<SimplePayload>>> queue = new ArrayBlockingQueue<ItemEventCoordinator<PayloadItem<SimplePayload>>>(3);
ItemEventCoordinator<Item> creatorHandler = new ItemEventCoordinator<Item>(queue, "creator"); ItemEventCoordinator<PayloadItem<SimplePayload>> creatorHandler = new ItemEventCoordinator<PayloadItem<SimplePayload>>(queue, "creator");
creatorNode.addItemEventListener(creatorHandler); creatorNode.addItemEventListener(creatorHandler);
creatorNode.subscribe(getConnection(0).getUser()); creatorNode.subscribe(getConnection(0).getUser());
@ -290,11 +289,11 @@ public class TestEvents extends SmackTestCase
PubSubManager subMgr = new PubSubManager(getConnection(1), getService()); PubSubManager subMgr = new PubSubManager(getConnection(1), getService());
LeafNode subNode = (LeafNode)subMgr.getNode(nodeId); LeafNode subNode = (LeafNode)subMgr.getNode(nodeId);
ItemEventCoordinator<Item> sub1Handler = new ItemEventCoordinator<Item>(queue, "sub1"); ItemEventCoordinator<PayloadItem<SimplePayload>> sub1Handler = new ItemEventCoordinator<PayloadItem<SimplePayload>>(queue, "sub1");
subNode.addItemEventListener(sub1Handler); subNode.addItemEventListener(sub1Handler);
Subscription sub1 = subNode.subscribe(getConnection(1).getUser()); Subscription sub1 = subNode.subscribe(getConnection(1).getUser());
ItemEventCoordinator<Item> sub2Handler = new ItemEventCoordinator<Item>(queue, "sub2"); ItemEventCoordinator<PayloadItem<SimplePayload>> sub2Handler = new ItemEventCoordinator<PayloadItem<SimplePayload>>(queue, "sub2");
subNode.addItemEventListener(sub2Handler); subNode.addItemEventListener(sub2Handler);
Subscription sub2 = subNode.subscribe(getConnection(1).getUser()); Subscription sub2 = subNode.subscribe(getConnection(1).getUser());
@ -304,20 +303,29 @@ public class TestEvents extends SmackTestCase
// Send event // Send event
String itemId = String.valueOf(System.currentTimeMillis()); String itemId = String.valueOf(System.currentTimeMillis());
Collection<Item> items = new ArrayList<Item>(3); Collection<PayloadItem<SimplePayload>> items = new ArrayList<PayloadItem<SimplePayload>>(3);
items.add(new Item("First-" + itemId)); String ids[] = {"First-" + itemId, "Second-" + itemId, "Third-" + itemId};
items.add(new Item("Second-" + itemId)); items.add(new PayloadItem<SimplePayload>(ids[0], new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='1'/>")));
items.add(new Item("Third-" + itemId)); items.add(new PayloadItem<SimplePayload>(ids[1], new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='1'/>")));
items.add(new PayloadItem<SimplePayload>(ids[2], new SimplePayload("a", "pubsub:test", "<a xmlns='pubsub:test' href='1'/>")));
creatorNode.send(items); creatorNode.send(items);
for(int i=0; i<3; i++) for(int i=0; i<3; i++)
{ {
ItemEventCoordinator<Item> coord = queue.poll(5, TimeUnit.SECONDS); ItemEventCoordinator<PayloadItem<SimplePayload>> coord = queue.poll(5, TimeUnit.SECONDS);
if (coord == creatorHandler) if (coord == creatorHandler)
assertEquals(1, coord.events.getSubscriptions().size()); assertEquals(1, coord.events.getSubscriptions().size());
else else
assertEquals(2, coord.events.getSubscriptions().size()); assertEquals(2, coord.events.getSubscriptions().size());
assertEquals(3, coord.events.getItems().size()); List<PayloadItem<SimplePayload>> itemResults = coord.events.getItems();
assertEquals(3, itemResults.size());
// assertEquals(ids[0], itemResults.get(0).getId());
// assertEquals("<a xmlns='pubsub:test' href='1'/>", itemResults.get(0).getPayload().toXML().replace('\"', '\''));
// assertEquals(ids[1], itemResults.get(1).getId());
// assertEquals("<a xmlns='pubsub:test' href='2'/>", itemResults.get(1).getPayload().toXML().replace('\"', '\''));
// assertEquals(ids[21], itemResults.get(2).getId());
// assertEquals("<a xmlns='pubsub:test' href='3'/>", itemResults.get(3).getPayload().toXML().replace('\"', '\''));
} }
} }
@ -476,7 +484,7 @@ public class TestEvents extends SmackTestCase
assertTrue(check1); assertTrue(check1);
assertTrue(check2); assertTrue(check2);
} }
class ItemEventCoordinator <T extends Item> implements ItemEventListener<T> class ItemEventCoordinator <T extends Item> implements ItemEventListener<T>
{ {
private BlockingQueue<ItemEventCoordinator<T>> theQueue; private BlockingQueue<ItemEventCoordinator<T>> theQueue;