001 /*
002 * $Id: TaggedSocketChannelTest.java 3279 2010-08-21 20:18:25Z kredel $
003 */
004
005 package edu.jas.util;
006
007 import java.io.IOException;
008
009 import junit.framework.Test;
010 import junit.framework.TestCase;
011 import junit.framework.TestSuite;
012
013
014 import org.apache.log4j.BasicConfigurator;
015
016 /**
017 * TaggedSocketChannel tests with JUnit.
018 * @author Heinz Kredel.
019 */
020
021 public class TaggedSocketChannelTest extends TestCase {
022
023 public static void main (String[] args) {
024 BasicConfigurator.configure();
025 junit.textui.TestRunner.run( suite() );
026 }
027
028 public TaggedSocketChannelTest(String name) {
029 super(name);
030 }
031
032 public static Test suite() {
033 TestSuite suite= new TestSuite(TaggedSocketChannelTest.class);
034 return suite;
035 }
036
037 private ChannelFactory cf;
038 private SocketChannel sc1;
039 private SocketChannel sc2;
040 private TaggedSocketChannel tsc1;
041 private TaggedSocketChannel tsc2;
042 private String host;
043 private int port;
044
045 final Integer tag1 = new Integer(1);
046
047
048 protected void setUp() {
049 host = "localhost";
050 port = 4711;
051 cf = new ChannelFactory(port);
052 cf.init();
053 try {
054 sc1 = cf.getChannel(host,port);
055 sc2 = cf.getChannel();
056 tsc1 = new TaggedSocketChannel(sc1);
057 tsc1.init();
058 tsc2 = new TaggedSocketChannel(sc2);
059 tsc2.init();
060 } catch(IOException e) {
061 fail("IOException"+e);
062 } catch (InterruptedException e) {
063 fail("InterruptedException"+e);
064 }
065 }
066
067 protected void tearDown() {
068 cf.terminate();
069 tsc1.close();
070 tsc2.close();
071 sc1.close();
072 sc2.close();
073 try {
074 Thread.sleep(1);
075 } catch(InterruptedException e) {
076 fail("InterruptedException"+e);
077 }
078 }
079
080 public void testTaggedSocketChannel0() {
081 // test setUp() and tearDown()
082 }
083
084
085 public void testTaggedSocketChannel1() {
086 Object o = new IllegalArgumentException("leer");
087 Integer err = new Integer(-1);
088 try {
089 tsc1.send(err,o);
090 fail("no Exception thrown");
091 } catch(IOException e) {
092 fail("Exception"+e);
093 } catch(IllegalArgumentException e) {
094 // ok
095 }
096 err = null;
097 try {
098 tsc1.send(err,o);
099 fail("no Exception thrown");
100 } catch(IOException e) {
101 fail("Exception"+e);
102 } catch(IllegalArgumentException e) {
103 // ok
104 }
105 }
106
107
108 public void testTaggedSocketChannel2() {
109 Object o = new Integer(0);
110 try {
111 tsc1.send(tag1,o);
112 assertEquals(o,tsc2.receive(tag1));
113 } catch(IOException e) {
114 fail("Exception"+e);
115 } catch(InterruptedException e) {
116 fail("Exception"+e);
117 } catch(ClassNotFoundException e) {
118 fail("Exception"+e);
119 }
120 }
121
122
123 public void testTaggedSocketChannel3() {
124 Object o = new Integer(0);
125 try {
126 tsc1.send(tag1,o);
127 tsc2.send(tag1,o);
128 assertEquals(o,tsc1.receive(tag1));
129 assertEquals(o,tsc2.receive(tag1));
130 } catch(IOException e) {
131 fail("Exception"+e);
132 } catch(InterruptedException e) {
133 fail("Exception"+e);
134 } catch(ClassNotFoundException e) {
135 fail("Exception"+e);
136 }
137 }
138
139
140 public void testTaggedSocketChannel4() {
141 int n = 10;
142 Object o;
143 try {
144 for (int i = 0; i < n; i++) {
145 o = new Integer(i);
146 tsc1.send(tag1,o);
147 }
148 assertEquals("#tags == 0 ", 0, tsc1.tagSize());
149 for (int i = 0; i < n; i++) {
150 o = new Integer(i);
151 assertEquals(o,tsc2.receive(tag1));
152 }
153 assertTrue("#tags == 1 ", tsc2.tagSize() == 1);
154 assertTrue("#messages == 0 ", tsc1.messages() == 0);
155 assertTrue("#messages == 0 ", tsc2.messages() == 0);
156 } catch(IOException e) {
157 fail("Exception"+e);
158 } catch(InterruptedException e) {
159 fail("Exception"+e);
160 } catch(ClassNotFoundException e) {
161 fail("Exception"+e);
162 }
163 }
164
165
166 public void testTaggedSocketChannel5() {
167 int n = 10;
168 String msg = "Hello_";
169 Integer o;
170 try {
171 for (int i = 0; i < n; i++) {
172 o = new Integer(i);
173 tsc1.send(o,msg+i);
174 }
175 assertTrue("#tags == 0 ", tsc1.tagSize() == 0);
176 assertTrue("#messages == 0 ", tsc1.messages() == 0);
177 assertTrue("#messages >= 0 ", tsc2.messages() >= 0); // not all 10 arrive in time
178 for (int i = 0; i < n; i++) {
179 o = new Integer(i);
180 assertEquals(msg+i,tsc2.receive(o));
181 }
182 //System.out.println("tsc2 = " + tsc2);
183 assertTrue("#tags == 10 ", tsc2.tagSize() == 10);
184 assertTrue("#messages == 0 ", tsc2.messages() <= 1);
185 } catch(IOException e) {
186 fail("Exception"+e);
187 } catch(InterruptedException e) {
188 fail("Exception"+e);
189 } catch(ClassNotFoundException e) {
190 fail("Exception"+e);
191 }
192 }
193
194 }
195