You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by js...@apache.org on 2003/12/18 03:27:08 UTC

cvs commit: jakarta-jmeter/src/components/org/apache/jmeter/control ThroughputController.java

jsalvata    2003/12/17 18:27:08

  Modified:    src/components/org/apache/jmeter/control
                        ThroughputController.java
  Log:
  Added 5 new test cases *3 of which fail*. Will fix or roll back
  soon. My apologies for the inconveniencies: it's not new
  bugs, only new tests.
  
  Revision  Changes    Path
  1.12      +254 -1    jakarta-jmeter/src/components/org/apache/jmeter/control/ThroughputController.java
  
  Index: ThroughputController.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/control/ThroughputController.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- ThroughputController.java	5 Oct 2003 01:18:34 -0000	1.11
  +++ ThroughputController.java	18 Dec 2003 02:27:08 -0000	1.12
  @@ -59,7 +59,10 @@
   
   import org.apache.jmeter.engine.event.LoopIterationEvent;
   import org.apache.jmeter.engine.event.LoopIterationListener;
  +import org.apache.jmeter.junit.JMeterTestCase;
  +import org.apache.jmeter.junit.stubs.TestSampler;
   import org.apache.jmeter.samplers.Sampler;
  +import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.testelement.TestListener;
   import org.apache.jmeter.testelement.property.BooleanProperty;
   import org.apache.jmeter.testelement.property.FloatProperty;
  @@ -456,6 +459,256 @@
           public Integer getInteger()
           {
               return i;
  +        }
  +    }
  +    /////////////////////////// Start of Test Code ///////////////////////////
  +
  +    public static class Test extends JMeterTestCase
  +    {
  +        public Test(String name)
  +        {
  +            super(name);
  +        }
  +
  +        public void testByNumber() throws Exception
  +        {
  +            ThroughputController sub_1 = new ThroughputController();
  +            sub_1.setStyle(BYNUMBER);
  +            sub_1.setMaxThroughput(2);
  +            sub_1.addTestElement(new TestSampler("one"));
  +            sub_1.addTestElement(new TestSampler("two"));
  +
  +            LoopController controller = new LoopController();
  +            controller.setLoops(5);
  +            controller.addTestElement(new TestSampler("zero"));
  +            controller.addTestElement(sub_1);
  +            controller.addIterationListener(sub_1);
  +            controller.addTestElement(new TestSampler("three"));
  +
  +            String[] order =
  +                new String[] {
  +                    "zero",
  +                    "one",
  +                    "two",
  +                    "three",
  +                    "zero",
  +                    "one",
  +                    "two",
  +                    "three",
  +                    "zero",
  +                    "three",
  +                    "zero",
  +                    "three",
  +                    "zero",
  +                    "three",
  +                };
  +            int counter= 0;
  +            sub_1.testStarted();
  +            controller.initialize();
  +            for (int i=0; i<3; i++)
  +            {
  +                TestElement sampler = null;
  +                while ((sampler = controller.next()) != null)
  +                {
  +                    assertEquals("Counter: "+counter+", i: "+i
  +                            +", executions: "+sub_1.getExecutions()
  +                            +", iteration: "+sub_1.getIteration(),
  +                        order[counter],
  +                        sampler.getPropertyAsString(TestElement.NAME)
  +                        );
  +                    counter++;
  +                }
  +                assertEquals(counter, order.length);
  +                counter= 0;
  +            }
  +            sub_1.testEnded();
  +        }
  +
  +        public void testByNumberZero() throws Exception
  +        {
  +            ThroughputController sub_1 = new ThroughputController();
  +            sub_1.setStyle(BYNUMBER);
  +            sub_1.setMaxThroughput(0);
  +            sub_1.addTestElement(new TestSampler("one"));
  +            sub_1.addTestElement(new TestSampler("two"));
  +        
  +            LoopController controller = new LoopController();
  +            controller.setLoops(5);
  +            controller.addTestElement(new TestSampler("zero"));
  +            controller.addTestElement(sub_1);
  +            controller.addIterationListener(sub_1);
  +            controller.addTestElement(new TestSampler("three"));
  +        
  +            String[] order =
  +                new String[] {
  +                    "zero",
  +                    "three",
  +                    "zero",
  +                    "three",
  +                    "zero",
  +                    "three",
  +                    "zero",
  +                    "three",
  +                    "zero",
  +                    "three",
  +                };
  +            int counter= 0;
  +            sub_1.testStarted();
  +            controller.initialize();
  +            for (int i=0; i<3; i++)
  +            {
  +                TestElement sampler = null;
  +                while ((sampler = controller.next()) != null)
  +                {
  +                    assertEquals("Counter: "+counter+", i: "+i,
  +                        order[counter],
  +                        sampler.getPropertyAsString(TestElement.NAME)
  +                        );
  +                    counter++;
  +                }
  +                assertEquals(counter, order.length);
  +                counter= 0;
  +            }
  +            sub_1.testEnded();
  +        }
  +
  +        public void testByPercent33() throws Exception
  +        {
  +            ThroughputController sub_1 = new ThroughputController();
  +            sub_1.setStyle(BYPERCENT);
  +            sub_1.setPercentThroughput(33.33f);
  +            sub_1.addTestElement(new TestSampler("one"));
  +            sub_1.addTestElement(new TestSampler("two"));
  +
  +            LoopController controller = new LoopController();
  +            controller.setLoops(7);
  +            controller.addTestElement(new TestSampler("zero"));
  +            controller.addTestElement(sub_1);
  +            controller.addIterationListener(sub_1);
  +            controller.addTestElement(new TestSampler("three"));
  +            // Expected results established using the DDA
  +            // algorithm (see http://www.siggraph.org/education/materials/HyperGraph/scanline/outprims/drawline.htm):
  +            String[] order =
  +                new String[] {
  +                    "zero", // 0/1 vs. 1/1 -> 0 is closer to 33.33
  +                    "three",
  +                    "zero",  // 0/2 vs. 1/2 -> 50.0 is closer to 33.33
  +                    "one",
  +                    "two",
  +                    "three",
  +                    "zero", // 1/3 vs. 2/3 -> 33.33 is closer to 33.33
  +                    "three",
  +                    "zero", // 1/4 vs. 2/4 -> 25.0 is closer to 33.33
  +                    "three",
  +                    "zero", // 1/5 vs. 2/5 -> 40.0 is closer to 33.33
  +                    "one",
  +                    "two",
  +                    "three",
  +                    "zero", // 2/6 vs. 3/6 -> 33.33 is closer to 33.33
  +                    "three",
  +                    "zero", // 2/7 vs. 3/7 --> 28.57 is closer to 33.33
  +                    "three",
  +                };
  +            int counter= 0;
  +            sub_1.testStarted();
  +            controller.initialize();
  +            for (int i=0; i<3; i++)
  +            {
  +                TestElement sampler = null;
  +                while ((sampler = controller.next()) != null)
  +                {
  +                    assertEquals("Counter: "+counter+", i: "+i,
  +                        order[counter],
  +                        sampler.getPropertyAsString(TestElement.NAME)
  +                        );
  +                    counter++;
  +                }
  +                assertEquals(counter, order.length);
  +                counter= 0;
  +            }
  +            sub_1.testEnded();
  +        }
  +
  +        public void testByPercentZero() throws Exception
  +        {
  +            ThroughputController sub_1 = new ThroughputController();
  +            sub_1.setStyle(BYPERCENT);
  +            sub_1.setPercentThroughput(0.0f);
  +            sub_1.addTestElement(new TestSampler("one"));
  +            sub_1.addTestElement(new TestSampler("two"));
  +        
  +            LoopController controller = new LoopController();
  +            controller.setLoops(150);
  +            controller.addTestElement(new TestSampler("zero"));
  +            controller.addTestElement(sub_1);
  +            controller.addIterationListener(sub_1);
  +            controller.addTestElement(new TestSampler("three"));
  +        
  +            String[] order =
  +                new String[] {
  +                    "zero",
  +                    "three",
  +                };
  +            int counter= 0;
  +            sub_1.testStarted();
  +            controller.initialize();
  +            for (int i=0; i<3; i++)
  +            {
  +                TestElement sampler = null;
  +                while ((sampler = controller.next()) != null)
  +                {
  +                    assertEquals("Counter: "+counter+", i: "+i,
  +                        order[counter%order.length],
  +                        sampler.getPropertyAsString(TestElement.NAME)
  +                        );
  +                    counter++;
  +                }
  +                assertEquals(counter, 150*order.length);
  +                counter= 0;
  +            }
  +            sub_1.testEnded();
  +        }
  +
  +        public void testByPercent100() throws Exception
  +        {
  +            ThroughputController sub_1 = new ThroughputController();
  +            sub_1.setStyle(BYPERCENT);
  +            sub_1.setPercentThroughput(100.0f);
  +            sub_1.addTestElement(new TestSampler("one"));
  +            sub_1.addTestElement(new TestSampler("two"));
  +        
  +            LoopController controller = new LoopController();
  +            controller.setLoops(150);
  +            controller.addTestElement(new TestSampler("zero"));
  +            controller.addTestElement(sub_1);
  +            controller.addIterationListener(sub_1);
  +            controller.addTestElement(new TestSampler("three"));
  +        
  +            String[] order =
  +                new String[] {
  +                    "zero",
  +                    "one",
  +                    "two",
  +                    "three",
  +                };
  +            int counter= 0;
  +            sub_1.testStarted();
  +            controller.initialize();
  +            for (int i=0; i<3; i++)
  +            {
  +                TestElement sampler = null;
  +                while ((sampler = controller.next()) != null)
  +                {
  +                    assertEquals("Counter: "+counter+", i: "+i,
  +                        order[counter%order.length],
  +                        sampler.getPropertyAsString(TestElement.NAME)
  +                        );
  +                    counter++;
  +                }
  +                assertEquals(counter, 150*order.length);
  +                counter= 0;
  +            }
  +            sub_1.testEnded();
           }
       }
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org