e.g. Calendar Search Help
You must enter a value before pressing Search
jmeter

Class: org.apache.jmeter.functions.PackageTest   ©

 OK to copy?
001 // $Header: /home/cvs/jakarta-jmeter/src/functions/org/apache/jmeter/functions/PackageTest.java,v 1.10.2.6 2004/09/25 20:59:50 sebb Exp $
002 /*
003  * Copyright 2004 The Apache Software Foundation.
004  *
005  * Licensed under the Apache License, Version 2.0 (the "License");
006  * you may not use this file except in compliance with the License.
007  * You may obtain a copy of the License at
008  *
009  *   http://www.apache.org/licenses/LICENSE-2.0
010  *
011  * Unless required by applicable law or agreed to in writing, software
012  * distributed under the License is distributed on an "AS IS" BASIS,
013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014  * See the License for the specific language governing permissions and
015  * limitations under the License.
016  * 
017 */
018 
019 /*
020  * Package to test functions
021  * 
022  * Functions are created and parameters set up in one thread.
023  * 
024  * They are then tested in another thread, or two threads running in parallel
025  * 
026  */
027 package org.apache.jmeter.functions;
028 
029 import java.util.Collection;
030 import java.util.LinkedList;
031 
032 import junit.extensions.ActiveTestSuite;
033 import junit.framework.Test;
034 import junit.framework.TestSuite;
035 
036 import org.apache.jmeter.engine.util.CompoundVariable;
037 import org.apache.jmeter.junit.JMeterTestCase;
038 import org.apache.jmeter.threads.JMeterContext;
039 import org.apache.jmeter.threads.JMeterContextService;
040 import org.apache.jmeter.threads.JMeterVariables;
041 import org.apache.jmeter.util.JMeterUtils;
042 import org.apache.jorphan.logging.LoggingManager;
043 import org.apache.jorphan.util.JMeterStopThreadException;
044 import org.apache.log.Logger;
045 
046 /**
047  * @version $Revision: 1.10.2.6 $ $Date: 2004/09/25 20:59:50 $
048  */
049 public class PackageTest extends JMeterTestCase
050 {
051 
052     transient private static final Logger log = LoggingManager.getLoggerForClass();
053 
054     static{
055         //LoggingManager.setPriority("DEBUG","jmeter");
056         //LoggingManager.setTarget(new java.io.PrintWriter(System.out));
057     }
058 
059     public PackageTest(String arg0)
060     {
061         super(arg0);
062     }
063 
064 
065     // Create the CSVRead function and set its parameters.
066     private static CSVRead setParams(String p1, String p2) throws Exception
067     {
068         CSVRead cr = new CSVRead();
069         Collection parms = new LinkedList();
Rate070         if (p1 != null) parms.add(new CompoundVariable(p1));
Rate071         if (p2 != null) parms.add(new CompoundVariable(p2));
072         cr.setParameters(parms);
073         return cr;
074     }
075 
076     // Create the StringFromFile function and set its parameters.
077     private static StringFromFile SFFParams(String p1, String p2, String p3, String p4)
078     throws Exception
079     {
080         StringFromFile sff = new StringFromFile();
081         Collection parms = new LinkedList();
Rate082         if (p1 != null) parms.add(new CompoundVariable(p1));
Rate083         if (p2 != null) parms.add(new CompoundVariable(p2));
Rate084         if (p3 != null) parms.add(new CompoundVariable(p3));
Rate085         if (p4 != null) parms.add(new CompoundVariable(p4));
086         sff.setParameters(parms);
087         return sff;
088     }
089 
090     // Create the SplitFile function and set its parameters.
091     private static SplitFunction SplitParams(String p1, String p2, String p3)
092     throws Exception
093     {
094         SplitFunction split = new SplitFunction();
095         Collection parms = new LinkedList();
Rate096         parms.add(new CompoundVariable(p1));
Rate097         if (p2 != null) parms.add(new CompoundVariable(p2));
Rate098         if (p3 != null) parms.add(new CompoundVariable(p3));
099         split.setParameters(parms);
100         return split;
101     }
102 
103     // Create the BeanShell function and set its parameters.
104     private static BeanShell BSHFParams(String p1, String p2, String p3)
105     throws Exception
106     {
107         BeanShell bsh = new BeanShell();
108         bsh.setParameters(MakeParams(p1,p2,p3));
109         return bsh;
110     }
111     private static Collection MakeParams(String p1, String p2, String p3)
112     {
113         Collection parms = new LinkedList();
Rate114         if (p1 != null) parms.add(new CompoundVariable(p1));
Rate115         if (p2 != null) parms.add(new CompoundVariable(p2));
Rate116         if (p3 != null) parms.add(new CompoundVariable(p3));
117         return parms;    
118     }
119 
120     public static Test suite() throws Exception
121     {
122            TestSuite allsuites = new TestSuite();
123            
124            TestSuite bsh = new TestSuite("BeanShell");
125            bsh.addTest( new PackageTest("BSH1"));
126            allsuites.addTest(bsh);
127    
128            TestSuite suite = new TestSuite("SingleThreaded");
129              suite.addTest(new PackageTest("CSVParams"));
130            suite.addTest(new PackageTest("CSVNoFile"));
131            suite.addTest(new PackageTest("CSVSetup"));
132            suite.addTest(new PackageTest("CSVRun"));
133 
134            suite.addTest(new PackageTest("CSValias"));
135            suite.addTest(new PackageTest("CSVBlankLine"));
136            allsuites.addTest(suite);
137 
138            //Reset files
139            suite.addTest(new PackageTest("CSVSetup"));
140            TestSuite par = new ActiveTestSuite("Parallel");
141            par.addTest(new PackageTest("CSVThread1"));
142            par.addTest(new PackageTest("CSVThread2"));
143            allsuites.addTest(par);
144            
145            TestSuite sff = new TestSuite("StringFromFile");
146            sff.addTest(new PackageTest("SFFTest1"));
147            sff.addTest(new PackageTest("SFFTest2"));
148            sff.addTest(new PackageTest("SFFTest3"));
149            sff.addTest(new PackageTest("SFFTest4"));
150            sff.addTest(new PackageTest("SFFTest5"));
151            allsuites.addTest(sff);
152            
153            TestSuite split = new TestSuite("SplitFunction");
154            split.addTest(new PackageTest("SplitTest1"));
155            allsuites.addTest(split);
156            
157            return allsuites;
158     }
159     
160     private JMeterContext jmctx = null;
161     private JMeterVariables vars = null;
162     public void setUp()
163     {
164         jmctx = JMeterContextService.getContext();
165         jmctx.setVariables(new JMeterVariables());
166         vars = jmctx.getVariables();
167     }
168 
169     public void BSH1() throws Exception
170     {
171         String fn = "testfiles/BeanShellTest.bsh";
172         BeanShell bsh;
173         try
174         {
175             bsh = BSHFParams(null,null,null);
176             fail("Expected InvalidVariableException");
177         }      catch (InvalidVariableException e) {}
178         
179         try
180         {
181             bsh = BSHFParams("","","");
182             fail("Expected InvalidVariableException");
183         }      catch (InvalidVariableException e) {}
184         
185         bsh = BSHFParams("","",null);
186         assertEquals("",bsh.execute());
187         
188         bsh = BSHFParams("1",null,null);
189         assertEquals("1",bsh.execute());
190 
191         bsh = BSHFParams("1+1","VAR",null);
192         assertEquals("2",bsh.execute());
193         assertEquals("2",vars.get("VAR"));
194 
195         // Check some initial variables
196         bsh = BSHFParams("return threadName",null,null);
197         assertEquals(Thread.currentThread().getName(),bsh.execute());
198         bsh = BSHFParams("return log.getClass().getName()",null,null);
199         assertEquals(log.getClass().getName(),bsh.execute());
200 
201         // Check source works
202         bsh = BSHFParams("source (\"testfiles/BeanShellTest.bsh\")",null,null);
203         assertEquals("9876",bsh.execute());
204 
205         // Check persistence
206         bsh = BSHFParams("${SCR1}",null,null);
207 
208         vars.put("SCR1","var1=11");
209         assertEquals("11",bsh.execute());
210 
211         vars.put("SCR1","var2=22");
212         assertEquals("22",bsh.execute());
213 
214         vars.put("SCR1","x=var1");
215         assertEquals("11",bsh.execute());
216 
217         vars.put("SCR1","++x");
218         assertEquals("12",bsh.execute());
219 
220         vars.put("VAR1","test");
221         vars.put("SCR1","vars.get(\"VAR1\")");
222         assertEquals("test",bsh.execute());
223 
224 
225         // Check init file functioning
226         JMeterUtils.getJMeterProperties()
227             .setProperty(BeanShell.INIT_FILE,fn);
228         bsh = BSHFParams("${SCR2}",null,null);
229         vars.put("SCR2","getprop(\""+BeanShell.INIT_FILE+"\")");
230         assertEquals(fn,bsh.execute());// Check that bsh has read the file
231         vars.put("SCR2","getprop(\"avavaav\",\"default\")");
232         assertEquals("default",bsh.execute());
233         vars.put("SCR2","++i");
234         assertEquals("1",bsh.execute());
235         vars.put("SCR2","++i");
236         assertEquals("2",bsh.execute());
237         
238     }
239     
240     public void SplitTest1() throws Exception
241     {
242         SplitFunction split=null;
243         String src="";
244         
245         try
246         {
247             split = SplitParams("a,b,c",null,null);
248             fail("Expected InvalidVariableException (wrong number of parameters)");
249         }
250         catch (InvalidVariableException e)
251         {
252             //OK
253         }
254         src="a,b,c";
255         split = SplitParams(src,"VAR1",null);
256         assertEquals(src,split.execute());
257         assertEquals(src,vars.get("VAR1"));
258         assertEquals("3",vars.get("VAR1_n"));
259         assertEquals("a",vars.get("VAR1_1"));
260         assertEquals("b",vars.get("VAR1_2"));
261         assertEquals("c",vars.get("VAR1_3"));
262         assertNull(vars.get("VAR1_4"));
263 
264         split = SplitParams(src,"VAR2",",");
265         assertEquals(src,split.execute());
266         assertEquals(src,vars.get("VAR2"));
267         assertEquals("3",vars.get("VAR2_n"));
268         assertEquals("a",vars.get("VAR2_1"));
269         assertEquals("b",vars.get("VAR2_2"));
270         assertEquals("c",vars.get("VAR2_3"));
271         assertNull(vars.get("VAR2_4"));
272 
273 
274         src = "a|b|c";
275         split = SplitParams(src,"VAR3","|");
276         assertEquals(src,split.execute());
277         assertEquals(src,vars.get("VAR3"));
278         assertEquals("3",vars.get("VAR3_n"));
279         assertEquals("a",vars.get("VAR3_1"));
280         assertEquals("b",vars.get("VAR3_2"));
281         assertEquals("c",vars.get("VAR3_3"));
282         assertNull(vars.get("VAR3_4"));
283 
284         src="a|b||";
285         split = SplitParams(src,"VAR4","|");
286         assertEquals(src,split.execute());
287         assertEquals(src,vars.get("VAR4"));
288         assertEquals("3",vars.get("VAR4_n"));
289         assertEquals("a",vars.get("VAR4_1"));
290         assertEquals("b",vars.get("VAR4_2"));
291         assertEquals("?",vars.get("VAR4_3"));
292         assertNull(vars.get("VAR4_5"));
293 
294         src="a,,c";
295         vars.put("VAR",src);
296         split = SplitParams("${VAR}","VAR",null);
297         assertEquals(src,split.execute());
298         assertEquals("3",vars.get("VAR_n"));
299         assertEquals("a",vars.get("VAR_1"));
300         assertEquals("?",vars.get("VAR_2"));
301         assertEquals("c",vars.get("VAR_3"));
302     }
303     
304     public void SFFTest1() throws Exception
305     {
306         StringFromFile sff1 = SFFParams("testfiles/SFFTest#.txt","","1","3");
307         assertEquals("uno",sff1.execute());
308         assertEquals("dos",sff1.execute());
309         assertEquals("tres",sff1.execute());
310         assertEquals("cuatro",sff1.execute());
311         assertEquals("cinco",sff1.execute());
312         assertEquals("one",sff1.execute());
313         assertEquals("two",sff1.execute());
314         sff1.execute();
315         sff1.execute();
316         assertEquals("five",sff1.execute());
317         assertEquals("eins",sff1.execute());
318         sff1.execute();
319         sff1.execute();
320         sff1.execute();
321         assertEquals("fuenf",sff1.execute());
322         try
323         {
324             sff1.execute();
325             fail("Should have thrown JMeterStopThreadException");
326         }
327         catch (JMeterStopThreadException e)
328         {
329             // expected
330         }
331     }
332     
333     public void SFFTest2() throws Exception
334     {
335         StringFromFile sff = SFFParams("testfiles/SFFTest1.txt","",null,null);
336         assertEquals("uno",sff.execute());
337         assertEquals("dos",sff.execute());
338         assertEquals("tres",sff.execute());
339         assertEquals("cuatro",sff.execute());
340         assertEquals("cinco",sff.execute());
341         assertEquals("uno",sff.execute()); // Restarts
342         assertEquals("dos",sff.execute());
343         assertEquals("tres",sff.execute());
344         assertEquals("cuatro",sff.execute());
345         assertEquals("cinco",sff.execute());
346     }
347     
348     public void SFFTest3() throws Exception
349     {
350         StringFromFile sff = SFFParams("testfiles/SFFTest1.txt","","","");
351         assertEquals("uno",sff.execute());
352         assertEquals("dos",sff.execute());
353         assertEquals("tres",sff.execute());
354         assertEquals("cuatro",sff.execute());
355         assertEquals("cinco",sff.execute());
356         assertEquals("uno",sff.execute()); // Restarts
357         assertEquals("dos",sff.execute());
358         assertEquals("tres",sff.execute());
359         assertEquals("cuatro",sff.execute());
360         assertEquals("cinco",sff.execute());
361     }
362     
363     public void SFFTest4() throws Exception
364     {
365         StringFromFile sff = SFFParams("xxtestfiles/SFFTest1.txt","","","");
366         assertEquals(StringFromFile.ERR_IND,sff.execute());
367         assertEquals(StringFromFile.ERR_IND,sff.execute());
368     }
369     
370     // Test that only loops twice
371     public void SFFTest5() throws Exception
372     {
373         StringFromFile sff = SFFParams("testfiles/SFFTest1.txt","","","2");
374         assertEquals("uno",sff.execute());
375         assertEquals("dos",sff.execute());
376         assertEquals("tres",sff.execute());
377         assertEquals("cuatro",sff.execute());
378         assertEquals("cinco",sff.execute());
379         assertEquals("uno",sff.execute());
380         assertEquals("dos",sff.execute());
381         assertEquals("tres",sff.execute());
382         assertEquals("cuatro",sff.execute());
383         assertEquals("cinco",sff.execute());
384         try
385         {
386             sff.execute();
387             fail("Should have thrown JMeterStopThreadException");
388         }
389         catch (JMeterStopThreadException e)
390         {
391             // expected
392         }
393     }
394    
395     // Function objects to be tested
396     private static CSVRead cr1, cr2, cr3, cr4, cr5, cr6;
397     
398     // Helper class used to implement co-routine between two threads
399     private static class Baton{
400         void pass(){
401             done();
402             try
403             {
404                 //System.out.println(">wait:"+Thread.currentThread().getName());
405                 wait(1000);
406             }
407             catch (InterruptedException e)
408             {
409                 System.out.println(e);
410             }
411             //System.out.println("<wait:"+Thread.currentThread().getName());
412 
413         }
414         
415         void done(){
416             //System.out.println(">done:"+Thread.currentThread().getName());
417             notifyAll();
418         }
419 
420     }
421     
422     private static Baton baton = new Baton();
423 
424     public void CSVThread1() throws Exception
425     {
426         Thread.currentThread().setName("One");
427         synchronized(baton){
428             
429             assertEquals("b1",cr1.execute(null,null));
430 
431             assertEquals("",cr4.execute(null,null));
432     
433             assertEquals("b2",cr1.execute(null,null));
434            
435             baton.pass();
436 
437             assertEquals("",cr4.execute(null,null));
438     
439             assertEquals("b4",cr1.execute(null,null));
440 
441             assertEquals("",cr4.execute(null,null));
442 
443             baton.pass();
444 
445             assertEquals("b3",cr1.execute(null,null));
446 
447             assertEquals("",cr4.execute(null,null));
448 
449             baton.done();
450         }
451     }
452 
453     public void CSVThread2() throws Exception
454     {
455         Thread.currentThread().setName("Two");
456         Thread.sleep(500);// Allow other thread to start
457         synchronized(baton){
458 
459             assertEquals("b3",cr1.execute(null,null));
460             
461             assertEquals("",cr4.execute(null,null));
462             
463             baton.pass();
464             
465             assertEquals("b1",cr1.execute(null,null));
466 
467             assertEquals("",cr4.execute(null,null));
468 
469             assertEquals("b2",cr1.execute(null,null));
470             
471             baton.pass();
472 
473             assertEquals("",cr4.execute(null,null));
474 
475             assertEquals("b4",cr1.execute(null,null));
476 
477             baton.done();
478         }
479     }
480 
481     
482     public void CSVRun() throws Exception
483     {
484         assertEquals("b1",cr1.execute(null,null));
485         assertEquals("c1",cr2.execute(null,null));
486         assertEquals("d1",cr3.execute(null,null));
487 
488         assertEquals("",cr4.execute(null,null));
489         assertEquals("b2",cr1.execute(null,null));
490         assertEquals("c2",cr2.execute(null,null));
491         assertEquals("d2",cr3.execute(null,null));
492 
493         assertEquals("",cr4.execute(null,null));
494         assertEquals("b3",cr1.execute(null,null));
495         assertEquals("c3",cr2.execute(null,null));
496         assertEquals("d3",cr3.execute(null,null));
497 
498         assertEquals("",cr4.execute(null,null));
499         assertEquals("b4",cr1.execute(null,null));
500         assertEquals("c4",cr2.execute(null,null));
501         assertEquals("d4",cr3.execute(null,null));
502 
503         assertEquals("",cr4.execute(null,null));
504         assertEquals("b1",cr1.execute(null,null));
505         assertEquals("c1",cr2.execute(null,null));
506         assertEquals("d1",cr3.execute(null,null));
507         
508         assertEquals("a1",cr5.execute(null,null));
509         assertEquals("",cr6.execute(null,null));
510         assertEquals("a2",cr5.execute(null,null));
511         
512     }
513     
514     public void CSVParams() throws Exception
515     {
516         try {
517             setParams(null,null);
518             fail("Should have failed");
519         }
520         catch (InvalidVariableException e)
521         {
522         }
523         try {
524             setParams(null,"");
525             fail("Should have failed");
526         }
527         catch (InvalidVariableException e)
528         {
529         }
530         try {
531             setParams("",null);
532             fail("Should have failed");
533         }
534         catch (InvalidVariableException e)
535         {
536         }
537     }
538 
539     public void CSVSetup() throws Exception
540     {
541         cr1=setParams("testfiles/test.csv","1");
542         cr2=setParams("testfiles/test.csv","2");
543         cr3=setParams("testfiles/test.csv","3");
544         cr4=setParams("testfiles/test.csv","next");
545         cr5=setParams("","0");
546         cr6=setParams("","next");
547     }
548     
549     public void CSValias() throws Exception
550     {
551         cr1 = setParams("testfiles/test.csv","*A");
552         cr2 = setParams("*A","1");
553         cr3 = setParams("*A","next");
554 
555         cr4 = setParams("testfiles/test.csv","*B");
556         cr5 = setParams("*B","2");
557         cr6 = setParams("*B","next");
558 
559         String s;
560         
561         s = cr1.execute(null,null); // open as *A
562         assertEquals("",s);
563         s = cr2.execute(null,null); // col 1, line 1, *A
564         assertEquals("b1",s);
565         
566 
567         s = cr4.execute(null,null);// open as *B
568         assertEquals("",s);
569         s = cr5.execute(null,null);// col2 line 1
570         assertEquals("c1",s);
571         
572         s = cr3.execute(null,null);// *A next
573         assertEquals("",s);
574         s = cr2.execute(null,null);// col 1, line 2, *A
575         assertEquals("b2",s);
576         
577         s = cr5.execute(null,null);// col2, line 1, *B
578         assertEquals("c1",s);
579 
580         s = cr6.execute(null,null);// *B next
581         assertEquals("",s);
582 
583         s = cr5.execute(null,null);// col2, line 2, *B
584         assertEquals("c2",s);
585 
586     }
587 
588     public void CSVNoFile() throws Exception
589     {
590         String s;
591 
592         cr1 = setParams("xtestfiles/test.csv","1");
593         log.info("Expecting file not found");
594         s = cr1.execute(null,null);
595         assertEquals("",s);
596 
597         cr2 = setParams("xtestfiles/test.csv","next");
598         log.info("Expecting no entry for file");
599         s = cr2.execute(null,null);
600         assertEquals("",s);
601 
602         cr3 = setParams("xtestfiles/test.csv","*ABC");
603         log.info("Expecting file not found");
604         s = cr3.execute(null,null);
605         assertEquals("",s);
606 
607         cr4 = setParams("*ABC","1");
608         log.info("Expecting cannot open file");
609         s = cr4.execute(null,null);
610         assertEquals("",s);
611     }
612     
613     // Check blank lines are treated as EOF
614     public void CSVBlankLine() throws Exception
615     {
616         CSVRead csv1 = setParams("testfiles/testblank.csv","1");
617         CSVRead csv2 = setParams("testfiles/testblank.csv","next");
618         
619         String s;
620         
621         for (int i = 1; i<=2; i++)
622         {
623             s= csv1.execute(null,null);
624             assertEquals("b1",s);
625             
626             s= csv2.execute(null,null);
627             assertEquals("",s);
628             
629             s= csv1.execute(null,null);
630             assertEquals("b2",s);
631             
632             s= csv2.execute(null,null);
633             assertEquals("",s);
634         }
635         
636     }
637 }

            
All Examples in File:
Example
Line
Rating (found
useful by...)
70 0% of 0
71 0% of 0
82 0% of 0
83 0% of 0
84 0% of 0
85 0% of 0
96 0% of 0
97 0% of 0
98 0% of 0
114 0% of 0
115 0% of 0
116 0% of 0