001    /*
002     * $Id: ExecutableChannelsTest.java 1263 2007-07-29 10:21:40Z kredel $
003     */
004    
005    package edu.jas.util;
006    
007    import java.io.FileNotFoundException;
008    import java.io.IOException;
009    
010    import junit.framework.Test;
011    import junit.framework.TestCase;
012    import junit.framework.TestSuite;
013    
014    import org.apache.log4j.BasicConfigurator;
015    
016    //import edu.unima.ky.parallel.ChannelFactory;
017    
018    
019    /**
020     * ExecutableChannels tests with JUnit.
021     * @author Heinz Kredel
022     */
023    
024    public class ExecutableChannelsTest extends TestCase {
025    
026    /**
027     * main.
028     */
029       public static void main (String[] args) {
030              BasicConfigurator.configure();
031              junit.textui.TestRunner.run( suite() );
032       }
033    
034    /**
035     * Constructs a <CODE>ExecutableChannelsTest</CODE> object.
036     * @param name String.
037     */
038       public ExecutableChannelsTest(String name) {
039              super(name);
040       }
041    
042    /**
043     * suite.
044     */ 
045     public static Test suite() {
046         TestSuite suite= new TestSuite(ExecutableChannelsTest.class);
047         return suite;
048       }
049    
050       private static final String host = "localhost";
051       private static final int port = ChannelFactory.DEFAULT_PORT;
052       private static final String mfile = ExecutableChannels.DEFAULT_MFILE;
053    
054       private ExecutableChannels ec;
055       private ExecutableServer es;
056    
057       protected void setUp() {
058           ec = null;
059           es = new ExecutableServer(port);
060           es.init();
061       }
062    
063       protected void tearDown() {
064           es.terminate();
065           es = null;
066           if ( ec != null ) {
067              ec.close();
068              ec = null;
069           }
070       }
071    
072    
073    /**
074     * Tests if the ExecutableChannels could be initialized with null.
075     */
076     public void testExecutableChannels1() {
077         String[] servers = null;
078         ec = new ExecutableChannels(servers);
079         assertEquals("numServers<0", -1, ec.numServers() );
080         assertEquals("numChannels<0", -1, ec.numChannels() );
081         String ts = "" + ec;
082         assertEquals("toString", "ExecutableChannels()", ts );
083       }
084    
085    
086    /**
087     * Tests if the ExecutableChannels could be initialized with small server array.
088     */
089     public void testExecutableChannels2() {
090         int nums = 1;
091         String[] servers = new String[nums];
092         for ( int i = 0; i < nums; i++ ) {
093             servers[i] = host + ":" + port;
094         }
095         ec = new ExecutableChannels(servers);
096         assertEquals("numServers==1", 1, ec.numServers() );
097         assertEquals("numChannels<0", -1, ec.numChannels() );
098         String ts = "" + ec;
099         assertEquals("toString", "ExecutableChannels("+host+":"+port+")", ts );
100       }
101    
102    
103    /**
104     * Tests if the ExecutableChannels could be initialized with big server array.
105     */
106     public void testExecutableChannels3() {
107         int nums = 100;
108         String[] servers = new String[nums];
109         for ( int i = 0; i < nums; i++ ) {
110             servers[i] = host + ":" + port;
111         }
112         ec = new ExecutableChannels(servers);
113         assertEquals("numServers==100", 100, ec.numServers() );
114         assertEquals("numChannels<0", -1, ec.numChannels() );
115         String ts = "" + ec;
116         int l = "ExecutableChannels()".length() + nums * servers[0].length() + nums-1;
117         assertEquals("toString.length()", l, ts.length());
118       }
119    
120    
121    /**
122     * Tests if the ExecutableChannels could be initialized and opened.
123     */
124     public void testExecutableChannels4() {
125         int nums = 2;
126         int numc = nums - 1;
127         String[] servers = new String[nums];
128         for ( int i = 0; i < nums; i++ ) {
129             servers[i] = host + ":" + port;
130         }
131         ec = new ExecutableChannels(servers);
132         assertEquals("numServers==2", nums, ec.numServers() );
133         assertEquals("numChannels<0", -1, ec.numChannels() );
134         String ts = "" + ec;
135         int l = "ExecutableChannels()".length() + nums * servers[0].length() + nums-1;
136         assertEquals("toString.length()", l, ts.length());
137         try {
138             ec.open();
139             assertEquals("numServers==1", nums, ec.numServers() );
140             assertEquals("numServers==numChannels", numc, ec.numChannels() );
141         } catch (IOException e) {
142             fail("open()"+e);
143         }
144         ec.close();
145         assertEquals("numChannels<0", -1, ec.numChannels() );
146       }
147    
148    
149    /**
150     * Tests if 11 ExecutableChannels could be initialized and opened.
151     */
152     public void testExecutableChannels5() {
153         int nums = 11; // max 11 by some limit on number of threads
154         int numc = nums - 1;
155         String[] servers = new String[nums];
156         for ( int i = 0; i < nums; i++ ) {
157             servers[i] = host + ":" + port;
158         }
159         ec = new ExecutableChannels(servers);
160         assertEquals("numServers==1", nums, ec.numServers() );
161         assertEquals("numChannels<0", -1, ec.numChannels() );
162         String ts = "" + ec;
163         int l = "ExecutableChannels()".length() + nums * servers[0].length() + nums-1;
164         assertEquals("toString.length()", l, ts.length());
165         try {
166             ec.open();
167             assertEquals("numServers==1", nums, ec.numServers() );
168             assertEquals("numServers==numChannels", numc, ec.numChannels() );
169         } catch (IOException e) {
170             fail("open()"+e);
171         }
172         ec.close();
173         assertEquals("numChannels<0", -1, ec.numChannels() );
174       }
175    
176    
177    /**
178     * Tests if 10 ExecutableChannels to 1 server could be initialized and opened.
179     */
180     public void testExecutableChannels6() {
181         int nums = 2; // max 11 by some limit on number of threads
182         int numc = 10; // max 11 by some limit on number of threads
183         String[] servers = new String[nums];
184         for ( int i = 0; i < nums; i++ ) {
185             servers[i] = host + ":" + port;
186         }
187         ec = new ExecutableChannels(servers);
188         assertEquals("numServers==1", nums, ec.numServers() );
189         assertEquals("numChannels<0", -1, ec.numChannels() );
190         try {
191             ec.open(numc);
192             assertEquals("numServers==1", nums, ec.numServers() );
193             assertEquals("numServers==numChannels", numc, ec.numChannels() );
194         } catch (IOException e) {
195             fail("open()"+e);
196         }
197         ec.close();
198         assertEquals("numChannels<0", -1, ec.numChannels() );
199       }
200    
201    
202    /**
203     * Tests if 5 ExecutableChannels to 10 servers could be initialized and opened.
204     */
205     public void testExecutableChannels7() {
206         int nums = 10; // max 11 by some limit on number of threads
207         int numc = 5; // max 11 by some limit on number of threads
208         String[] servers = new String[nums];
209         for ( int i = 0; i < nums; i++ ) {
210             servers[i] = host + ":" + port;
211         }
212         ec = new ExecutableChannels(servers);
213         assertEquals("numServers==1", nums, ec.numServers() );
214         assertEquals("numChannels<0", -1, ec.numChannels() );
215         try {
216             ec.open(numc);
217             assertEquals("numServers==1", nums, ec.numServers() );
218             assertEquals("numServers==numChannels", numc, ec.numChannels() );
219         } catch (IOException e) {
220             fail("open()"+e);
221         }
222         ec.close();
223         assertEquals("numChannels<0", -1, ec.numChannels() );
224       }
225    
226    
227    /**
228     * Tests if the ExecutableChannels could be initialized with servers from file.
229     */
230     public void testExecutableChannels8() {
231         try {
232             ec = new ExecutableChannels( mfile );
233         } catch (FileNotFoundException e) {
234             fail("readfile()"+e);
235         }
236         assertEquals("numServers==4", 4, ec.numServers() );
237         assertEquals("numChannels<0", -1, ec.numChannels() );
238         int numc = ec.numServers();
239         try {
240             ec.open(numc);
241             assertEquals("numServers==numChannels", numc, ec.numChannels() );
242         } catch (IOException e) {
243             fail("open()"+e);
244         }
245         ec.close();
246         assertEquals("numChannels<0", -1, ec.numChannels() );
247       }
248    
249    
250    /**
251     * Tests if the ExecutableChannels could be initialized with servers from file.
252     */
253     public void testExecutableChannels9() {
254         try {
255             ec = new ExecutableChannels( mfile );
256         } catch (FileNotFoundException e) {
257             fail("readfile()"+e);
258         }
259         assertEquals("numServers==4", 4, ec.numServers() );
260         assertEquals("numChannels<0", -1, ec.numChannels() );
261         int numc = 10;
262         try {
263             ec.open(numc);
264             assertEquals("numServers==numChannels", numc, ec.numChannels() );
265         } catch (IOException e) {
266             fail("open()"+e);
267         }
268         ec.close();
269         assertEquals("numChannels<0", -1, ec.numChannels() );
270       }
271    
272    
273    }