distributedqueuetest.java

来自「JGRoups源码」· Java 代码 · 共 189 行

JAVA
189
字号
// $Id: DistributedQueueTest.java,v 1.9 2006/08/13 09:05:10 mimbert Exp $package org.jgroups.blocks;import junit.framework.Test;import junit.framework.TestCase;import junit.framework.TestSuite;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import java.util.Vector;public class DistributedQueueTest extends TestCase{	final int NUM_ITEMS = 10;	static Log logger = LogFactory.getLog(DistributedQueueTest.class);    String props;	public DistributedQueueTest(String testName)	{		super(testName);	}	public static Test suite()	{		return new TestSuite(DistributedQueueTest.class);	}	protected DistributedQueue queue1;	protected DistributedQueue queue2;	protected DistributedQueue queue3;	public void setUp() throws Exception	{        super.setUp();        props="UDP(mcast_recv_buf_size=80000;mcast_send_buf_size=150000;mcast_port=45566;" +                "mcast_addr=228.8.8.8;ip_ttl=32):" +                "PING(timeout=2000;num_initial_members=3):" +                "FD_SOCK:" +                "VERIFY_SUSPECT(timeout=1500):" +                "UNICAST(timeout=600,1200,2000,2500):" +                "FRAG(frag_size=8096;down_thread=false;up_thread=false):" +                "TOTAL_TOKEN(unblock_sending=10;block_sending=50):" +                "pbcast.GMS(print_local_addr=true;join_timeout=3000;join_retry_timeout=2000;shun=true):" +                "STATE_TRANSFER:" +                "QUEUE";		queue1 = new DistributedQueue("testing", null, props, 5000);        log("created queue1");        // give some time for the channel to become a coordinator		try		{			Thread.sleep(1000);		}		catch (Exception ex)		{		}		queue2 = new DistributedQueue("testing", null, props, 5000);        log("created queue2");        try		{			Thread.sleep(1000);		}		catch (InterruptedException ex)		{		}		queue3 = new DistributedQueue("testing", null, props, 5000);        log("created queue3");        try		{			Thread.sleep(1000);		}		catch (InterruptedException ex)		{		}	}	public void tearDown() throws Exception	{        super.tearDown();        log("stopping queue1");        queue1.stop();        log("stopped queue1");        log("stopping queue2");        queue2.stop();        log("stopped queue2");        log("stopping queue3");        queue3.stop();        log("stopped queue3");    }    void log(String msg) {        System.out.println("-- [" + Thread.currentThread().getName() + "]: " + msg);    }    class PutTask implements Runnable	{		protected DistributedQueue queue;		protected String name;		protected boolean finished;		public PutTask(String name, DistributedQueue q)		{			queue = q;			this.name = name;			finished = false;		}		public void run()		{			for (int i = 0; i < NUM_ITEMS; i++)			{				queue.add(name + '_' + i);			}			finished = true;            log("added " + NUM_ITEMS + " elements - done");        }		public boolean finished()		{			return finished;		}	}	public void testMultipleWriter() throws Exception	{		PutTask t1 = new PutTask("Queue1", queue1);		PutTask t2 = new PutTask("Queue2", queue2);		PutTask t3 = new PutTask("Queue3", queue3);		Thread rTask1 = new Thread(t1);		Thread rTask2 = new Thread(t2);		Thread rTask3 = new Thread(t3);		rTask1.start();		rTask2.start();		rTask3.start();		while (!t1.finished() || !t2.finished() || !t3.finished())		{			try			{				Thread.sleep(1000);			}			catch (InterruptedException ex)			{			}		}		assertEquals(queue1.size(), queue2.size());		assertEquals(queue1.size(), queue3.size());		checkContents(queue1.getContents(), queue2.getContents());		checkContents(queue1.getContents(), queue3.getContents());	}	protected void checkContents(Vector q1, Vector q2)	{		for (int i = 0; i < q1.size(); i++)		{			Object e1 = q1.elementAt(i);			Object e2 = q2.elementAt(i);			boolean t = e1.equals(e2);			if (!t)			{				logger.error("Data order differs :" + e1 + "!=" + e2);			} else			logger.debug("Data order ok :" + e1 + "==" + e2);			assertTrue(e1.equals(e2));		}	}		public static void main(String[] args)	{		junit.textui.TestRunner.run(suite());	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?