mstover1    2003/06/13 09:18:44

  Modified:    bin      jmeter.properties
               src/core/org/apache/jmeter JMeter.java
               src/core/org/apache/jmeter/util JMeterUtils.java
  Log:
  Can now start remote hosts from non-gui jmeter client
  
  Revision  Changes    Path
  1.79      +1 -1      jakarta-jmeter/bin/jmeter.properties
  
  Index: jmeter.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/bin/jmeter.properties,v
  retrieving revision 1.78
  retrieving revision 1.79
  diff -u -r1.78 -r1.79
  --- jmeter.properties 10 Jun 2003 16:27:18 -0000      1.78
  +++ jmeter.properties 13 Jun 2003 16:18:44 -0000      1.79
  @@ -74,7 +74,7 @@
   # log_level.[package_name].[classname]=[PRIORITY_LEVEL]
   # But omit "org.apache" from the package name.  The classname is optional.  Further 
examples below.
   
  -log_level.jmeter=WARN
  +log_level.jmeter=INFO
   log_level.jmeter.junit=DEBUG
   #log_level.jmeter.engine=WARN
   #log_level.jmeter.gui=WARN
  
  
  
  1.15      +71 -13    jakarta-jmeter/src/core/org/apache/jmeter/JMeter.java
  
  Index: JMeter.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/JMeter.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- JMeter.java       11 Jun 2003 14:48:48 -0000      1.14
  +++ JMeter.java       13 Jun 2003 16:18:44 -0000      1.15
  @@ -58,6 +58,8 @@
   import java.io.File;
   import java.io.FileInputStream;
   import java.net.Authenticator;
  +import java.util.Iterator;
  +import java.util.LinkedList;
   import java.util.List;
   import java.util.Properties;
   
  @@ -69,6 +71,8 @@
   import org.apache.jmeter.control.gui.AbstractControllerGui;
   import org.apache.jmeter.control.gui.TestPlanGui;
   import org.apache.jmeter.control.gui.WorkBenchGui;
  +import org.apache.jmeter.engine.ClientJMeterEngine;
  +import org.apache.jmeter.engine.JMeterEngine;
   import org.apache.jmeter.engine.RemoteJMeterEngine;
   import org.apache.jmeter.engine.RemoteJMeterEngineImpl;
   import org.apache.jmeter.engine.StandardJMeterEngine;
  @@ -85,6 +89,7 @@
   import org.apache.jmeter.processor.gui.AbstractPostProcessorGui;
   import org.apache.jmeter.processor.gui.AbstractPreProcessorGui;
   import org.apache.jmeter.reporters.ResultCollector;
  +import org.apache.jmeter.samplers.Remoteable;
   import org.apache.jmeter.samplers.gui.AbstractSamplerGui;
   import org.apache.jmeter.save.SaveService;
   import org.apache.jmeter.testelement.TestListener;
  @@ -120,6 +125,7 @@
        private   static final int JMETER_PROPERTY = 'J';
        private   static final int SYSTEM_PROPERTY = 'D';
        private   static final int LOGLEVEL = 'L';
  +    private static final int REMOTE_OPT = 'r';
   
        /**
         *  Define the understood options. Each CLOptionDescriptor contains:
  @@ -205,6 +211,11 @@
                                | CLOptionDescriptor.ARGUMENTS_REQUIRED_2,
                                LOGLEVEL,
                                "Define loglevel: [category=]level e.g. jorphan=INFO 
or jmeter.util=DEBUG"),
  +            new CLOptionDescriptor(
  +                            "runremote",
  +                            CLOptionDescriptor.ARGUMENT_DISALLOWED,
  +                            REMOTE_OPT,
  +                            "Start remote servers from non-gui mode")
                        };
   
        public JMeter() {
  @@ -276,7 +287,8 @@
                        } else {
                                startNonGui(
                                        parser.getArgumentById(TESTFILE_OPT),
  -                                     parser.getArgumentById(LOGFILE_OPT));
  +                                     parser.getArgumentById(LOGFILE_OPT),
  +                    parser.getArgumentById(REMOTE_OPT));
                        }
                } catch (IllegalUserActionException e) {
                        System.out.println(e.getMessage());
  @@ -394,7 +406,7 @@
                }
        }
   
  -     public void startNonGui(CLOption testFile, CLOption logFile)
  +     public void startNonGui(CLOption testFile, CLOption logFile,CLOption 
remoteStart)
                throws IllegalUserActionException, IllegalAccessException, 
ClassNotFoundException, InstantiationException {
                JMeter driver = new JMeter();
           PluginManager.install(this, false);
  @@ -403,13 +415,13 @@
                        throw new IllegalUserActionException();
                }
                if (logFile == null) {
  -                     driver.run(testFile.getArgument(), null);
  +                     driver.run(testFile.getArgument(), null,remoteStart != null);
                } else {
  -                     driver.run(testFile.getArgument(), logFile.getArgument());
  +                     driver.run(testFile.getArgument(), 
logFile.getArgument(),remoteStart != null);
                }
        }
   
  -     private void run(String testFile, String logFile) {// run test in batch mode
  +     private void run(String testFile, String logFile, boolean remoteStart) {// run 
test in batch mode
                FileInputStream reader = null;
                try {
                        File f = new File(testFile);
  @@ -430,25 +442,69 @@
                        }
                        tree.add(tree.getArray()[0],new ListenToTest());               
         
                        println("Created the tree successfully");
  -                     StandardJMeterEngine engine = new StandardJMeterEngine();
  -                     engine.configure(tree);
  -                     println("Starting the test");
  -                     engine.runTest();
  -
  +                     JMeterEngine engine = null;
  +            if(!remoteStart)
  +            {
  +                engine = new StandardJMeterEngine();
  +                engine.configure(tree);
  +                            println("Starting the test");
  +                            engine.runTest();
  +            }
  +            else
  +            {
  +                String remote_hosts_string = 
JMeterUtils.getPropDefault("remote_hosts",
  +                                   "127.0.0.1");
  +                 java.util.StringTokenizer st = new 
java.util.StringTokenizer(remote_hosts_string, ",");
  +                 List engines = new LinkedList();
  +                 while(st.hasMoreElements())
  +                 {
  +                     String el = (String)st.nextElement();
  +                     engines.add(doRemoteInit(el.trim(),tree));
  +                 }
  +                 Iterator iter = engines.iterator();
  +                 while(iter.hasNext())
  +                 {
  +                     engine = (JMeterEngine)iter.next();
  +                     engine.runTest();
  +                 }
  +            }
                } catch (Exception e) {
                        System.out.println("Error in NonGUIDriver" + e.getMessage());
                        log.error("",e);
                }
        }
  +    
  +    private JMeterEngine doRemoteInit(String hostName,HashTree testTree)
  +    {
  +        JMeterEngine engine = null;
  +        try
  +        {
  +            engine = new ClientJMeterEngine(hostName);
  +        }
  +        catch (Exception e)
  +        {
  +            log.fatalError("Failure connecting to remote host",e);
  +            System.exit(0);
  +        }
  +        engine.configure(testTree);
  +        return engine;        
  +    }
        
        /**
         * Listen to test and exit program after test completes, after a 5 second 
delay to give listeners
         * a chance to close out their files.
         */
  -     private class ListenToTest implements TestListener,Runnable
  +     private class ListenToTest implements TestListener,Runnable,Remoteable
        {
  -             public void testEnded(String host)
  +        int started = 0;
  +             public synchronized void testEnded(String host)
                {
  +            started--;
  +            log.info("Remote host " + host + " finished");
  +            if(started == 0)
  +            {
  +                testEnded();
  +            }
                }
                
                public void testEnded()
  @@ -457,8 +513,10 @@
                        stopSoon.start();                       
                }
                
  -             public void testStarted(String host)
  +             public synchronized void testStarted(String host)
                {
  +            started++;
  +            log.info("Started remote host: " + host);
                }
                
                public void testStarted()
  
  
  
  1.33      +3 -1      jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterUtils.java
  
  Index: JMeterUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jmeter/src/core/org/apache/jmeter/util/JMeterUtils.java,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- JMeterUtils.java  13 Jun 2003 14:51:50 -0000      1.32
  +++ JMeterUtils.java  13 Jun 2003 16:18:44 -0000      1.33
  @@ -991,3 +991,5 @@
   
   
   
  +
  +
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to