package com.limegroup.gnutella.connection; import junit.framework.Test; import com.limegroup.gnutella.Response; import com.limegroup.gnutella.messages.Message; import com.limegroup.gnutella.messages.PingReply; import com.limegroup.gnutella.messages.QueryReply; import com.limegroup.gnutella.messages.QueryRequest; import com.limegroup.gnutella.util.BaseTestCase; /** * Unit tests for PriorityMessageQueue */ public class PriorityMessageQueueTest extends BaseTestCase { /** * A non-blank IP. */ private static final byte[] IP = new byte[] { 1, 1, 1, 1 }; public PriorityMessageQueueTest(String name) { super(name); } public static Test suite() { return buildTestSuite(PriorityMessageQueueTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public void testLegacy() { Message m=null; //By guid volume PriorityMessageQueue q=new PriorityMessageQueue( 1000, Integer.MAX_VALUE, 100); m=new QueryReply(new byte[16], (byte)5, 6341, IP, 0, new Response[0], new byte[16], false, false, false, false, false, false); m.setPriority(1000); q.add(m); m=new QueryReply(new byte[16], (byte)5, 6331, IP, 0, new Response[0], new byte[16], false, false, false, false, false, false); m.setPriority(1000); q.add(m); m=new QueryReply(new byte[16], (byte)5, 6349, IP, 0, new Response[0], new byte[16], false, false, false, false, false, false); m.setPriority(9000); q.add(m); m=new QueryReply(new byte[16], (byte)5, 6340, IP, 0, new Response[0], new byte[16], false, false, false, false, false, false); m.setPriority(0); q.add(m); m=q.removeNextInternal(); assertEquals(6340, ((QueryReply)m).getPort()); m=q.removeNextInternal(); assertEquals(6331, ((QueryReply)m).getPort()); m=q.removeNextInternal(); assertEquals(6341, ((QueryReply)m).getPort()); m=q.removeNextInternal(); assertEquals(6349, ((QueryReply)m).getPort()); assertNull(q.removeNext()); m=null; //By hops q=new PriorityMessageQueue(1000, Integer.MAX_VALUE, 100); QueryRequest query = QueryRequest.createQuery("low hops", (byte)5); q.add(query); query=QueryRequest.createQuery("high hops",(byte)5); for (int i=0; i<8; i++) query.hop(); q.add(query); query=QueryRequest.createQuery("medium hops", (byte)5); query.hop(); q.add(query); query=QueryRequest.createQuery("medium hops2", (byte)5); query.hop(); q.add(query); query=(QueryRequest)q.removeNextInternal(); assertEquals("low hops", query.getQuery()); query=(QueryRequest)q.removeNextInternal(); assertEquals("medium hops2", query.getQuery()); query=(QueryRequest)q.removeNextInternal(); assertEquals("medium hops", query.getQuery()); query=(QueryRequest)q.removeNextInternal(); assertEquals("high hops", query.getQuery()); assertNull(q.removeNextInternal()); query=null; //By negative hops q=new PriorityMessageQueue(1000, Integer.MAX_VALUE, 100); PingReply pong=PingReply.create( new byte[16], (byte)5, 6340, IP, 0, 0); q.add(pong); pong=PingReply.create(new byte[16], (byte)5, 6330, IP, 0, 0); q.add(pong); pong=PingReply.create(new byte[16], (byte)5, 6342, IP, 0, 0); pong.hop(); pong.hop(); q.add(pong); pong=PingReply.create(new byte[16], (byte)5, 6341, IP, 0, 0); pong.hop(); q.add(pong); pong=(PingReply)q.removeNextInternal(); assertEquals(6342, pong.getPort()); pong=(PingReply)q.removeNextInternal(); assertEquals(6341, pong.getPort()); pong=(PingReply)q.removeNextInternal(); assertEquals(6330, pong.getPort()); pong=(PingReply)q.removeNextInternal(); assertEquals(6340, pong.getPort()); assertNull(q.removeNextInternal()); } }