2017-06-28 4 views
-1

J'essaye de connecter jmeter à distance via mon code Java (jmeter non-gui), mais je reçois une erreur : méthode rconfigure() java.rmi.UnmarshalExceptionLorsque j'essaie de connecter jmeter à distance via mon code Java (jauge non-gui), j'obtiens une erreur

Voici mon code:

public static void main(String[] argv) throws Exception { 

    // Set jmeter home path 
    File jmeterHome = new File("E:\\apache-jmeter-3.2"); 

    if (jmeterHome.exists()) { 

     // Inserting the properties of Jmeter. 

     File jmeterProperties = new File(
       "E:\\apache-jmeter-3.2\\bin\\jmeter.properties"); 
     if (jmeterProperties.exists()) { 
      // Creating JMeter Engine 

      StandardJMeterEngine jmeter = new StandardJMeterEngine(); 
      // JMeter initialization (properties, log levels, locale, etc) 

      JMeterUtils.setJMeterHome(jmeterHome.getPath()); 
      JMeterUtils.loadJMeterProperties(jmeterProperties.getPath()); 

      // you can comment this line out to see extra log messages of 
      // i.e DEBUG level 

      JMeterUtils.initLogging(); 
      JMeterUtils.initLocale(); 

      // JMeter Test Plan, basically JOrphan HashTree 
      HashTree testPlanTree = new HashTree(); 

      // First HTTP Sampler 
      HTTPSamplerProxy sampler = new HTTPSamplerProxy(); 
      sampler.setDomain("https://google.com/"); 
      sampler.setPort(8080); 
      sampler.setPath("/"); 
      sampler.setMethod("GET"); 

      sampler.setProperty(TestElement.TEST_CLASS, 
        HTTPSamplerProxy.class.getName()); 

      sampler.setProperty(TestElement.GUI_CLASS, 
        HttpTestSampleGui.class.getName()); 

      // Loop Controller 
      LoopController loopController = new LoopController(); 
      loopController.setLoops(10); 
      loopController.setFirst(true); 
      loopController.setProperty(TestElement.TEST_CLASS, 
        LoopController.class.getName()); 
      loopController.setProperty(TestElement.GUI_CLASS, 
        LoopControlPanel.class.getName()); 
      loopController.initialize(); 

      // InterleaveControler 

      // InterleaveControl controller = new InterleaveControl(); 

      // Thread Group 
      ThreadGroup threadGroup = new ThreadGroup(); 
      threadGroup.setName("Sample Thread Group"); 
      threadGroup.setNumThreads(100); 
      threadGroup.setRampUp(10); 
      threadGroup.setSamplerController(loopController); 
      threadGroup.setProperty(TestElement.TEST_CLASS, 
        ThreadGroup.class.getName()); 
      threadGroup.setProperty(TestElement.GUI_CLASS, 
        ThreadGroupGui.class.getName()); 

      // Test Plan 
      TestPlan testPlan = new TestPlan("Test planing"); 
      testPlan.setProperty(TestElement.GUI_CLASS, 
        TestPlanGui.class.getName()); 
      testPlan.setUserDefinedVariables((Arguments) new ArgumentsPanel() 
        .createTestElement()); 

      // Construct Test Plan from previously initialized elements 
      testPlanTree.add(testPlan); 
      HashTree threadGroupHashTree = testPlanTree.add(testPlan, 
        threadGroup); 
      threadGroupHashTree.add(sampler); 

      // save generated test plan to JMeter's .jmx file format 
      SaveService.loadProperties(); 
      SaveService.saveTree(testPlanTree, new FileOutputStream(
        "E:\\JunitJArs\\junitjunitjmeter_api.csv")); 

      // add Summarizer output to get test progress in stdout like: 
      // summary = 2 in 1.3s = 1.5/s Avg: 631 Min: 290 Max: 973 Err: 0 
      // (0.00%) 

      Summariser summer = null; 
      String summariserName = JMeterUtils.getPropDefault(
        "summariser.name", "summary"); 
      if (summariserName.length() > 0) { 
       summer = new Summariser(summariserName); 
      } 

      // Store execution results into a .jtl file, we can save file as 
      // csv also 

      String reportFile = "C:\\Users\\User\\Desktop\\Jmeter\\new\\report.jtl"; 
      String csvFile = "C:\\Users\\User\\Desktop\\Jmeter\\new\\report.csv"; 

      ResultCollector logger = new ResultCollector(summer); 
      logger.setFilename(reportFile); 

      ResultCollector csvlogger = new ResultCollector(summer); 
      csvlogger.setFilename(csvFile); 

      testPlanTree.add(testPlanTree.getArray()[0], logger); 
      testPlanTree.add(testPlanTree.getArray()[0], csvlogger); 

      // Run Test Plan 

      List<JMeterEngine> engines = new LinkedList<>(); 
      Properties remoteProps = new Properties(); 

      DistributedRunner distributedRunner = new DistributedRunner(
        remoteProps); 

      List<String> hosts = new LinkedList<>(); 

      // adding JMeter slaves here 

      hosts.add("172.16.104.199"); 


      distributedRunner.setStdout(System.out); 
      distributedRunner.setStdErr(System.err); 

      distributedRunner.init(hosts, testPlanTree); 


      engines.addAll(distributedRunner.getEngines()); 
      distributedRunner.start(); 

      // jmeter.configure(testPlanTree); 
      ///jmeter.run(); 
      System.err.println("Your Test excuted"); 
      System.exit(0); 
     } 
    } 
    System.err.println("Jmeter properties error"); 
    System.exit(1); 
} 

dans la console de son montrant

-Configuring remote engine: 172.16.104.199

Starting remote engines

Starting the test @ Wed Jun 28 17:45:07 IST 2017 (1498652107364) Error in rconfigure() method java.rmi.UnmarshalException

J'ai essayé de chercher mais n'a pas obtenu de bon solution

+0

Je suis nouveau à jMeter le cas échéant needfull donné. – KISHOR

+0

pouvez-vous donner une trace d'erreur de pile complète? – user7294900

+0

@ user7294900 Je reçois ceci à chaque fois Configuration du moteur à distance: 172.16.104.160 Connexion refusée pour l'hôte: 172.16.104.160; exception imbriquée est: \t java.net.ConnectException: Connection timed out: connect Échec de la configuration 172.16.104.160 Exception dans le thread "principaux" moteurs à distance d'arrêt moteurs à distance ont été stoppés java.lang.RuntimeException: Après les moteurs à distance ne pouvait pas être configuré: [172.16.104.160] \t à org.apache.jmeter.engine.DistributedRunner.init (DistributedRunner.java:112) \t à withRemote.Remoteee.main (Remoteee.java:187) – KISHOR

Répondre

0

Il peut se produire si la version jdk sur le client est différent que le serveur voir dans Post

+0

J'ai essayé en utilisant la même version de java et la version de jmeter, mais obtenant encore le même problème. Pouvez-vous me dire quelles propriétés (clé et valeur) nous devons passer dans distributedrunner. – KISHOR