2017-02-16 5 views
2

Derzeit arbeite ich an einem jmeter basierten Projekt, das die Tests mit jmeter maven plugin ausführt. Bisher funktioniert alles, bis ich perfmon Plugins hinzugefügt haben, und fügte hinzu, sie Transaktionen pro Sekunde und Reaktionszeiten über die Zeit mit der jmeter UI zu erhalten, folgen Sie den Anweisungen hereWie benutzt man Perfmon Plugins mit Jmeter-Maven-Plugin?

es in Maven Rennen ergibt sich nun zu:

[INFO] Error in NonGUIDriver java.lang.IllegalArgumentException: Problem loading XML from:'/Users/foo/Tools/src/platform-load-test/jersey2-load-test/target/jmeter/testFiles/JerseyAsync.jmx', missing class com.thoughtworks.xstream.converters.ConversionException: 
[INFO] ---- Debugging information ---- 
[INFO] cause-exception  : com.thoughtworks.xstream.converters.ConversionException 
[INFO] cause-message  : 
[INFO] first-jmeter-class : org.apache.jmeter.save.converters.HashTreeConverter.unmarshal(HashTreeConverter.java:67) 
[INFO] class    : org.apache.jmeter.save.ScriptWrapper 
[INFO] required-type  : org.apache.jorphan.collections.ListedHashTree 
[INFO] converter-type  : org.apache.jmeter.save.ScriptWrapperConverter 
[INFO] path    : /jmeterTestPlan/hashTree/hashTree/hashTree/kg.apc.jmeter.perfmon.PerfMonCollector 
[INFO] line number   : 259 
[INFO] version    : 3.1 r1770033 
[INFO] ------------------------------- 

die documentation folgende zusätzliche Bibliotheken hinzufügen (da ich die perfmon Zuhörer über jmeter ui Plugin-Manager hinzugefügt habe), habe ich meine pom aktualisieren, um den jmeter Erweiterungen Abschnitt ergänzt:

<plugin> 
    <groupId>com.lazerycode.jmeter</groupId> 
    <artifactId>jmeter-maven-plugin</artifactId> 
    <version>2.1.0</version> 
    <executions> 
     <execution> 
     <id>jmeter-tests</id> 
     <phase>pre-integration-test</phase> 
     <goals> 
      <goal>jmeter</goal> 
     </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <ignoreResultFailures>true</ignoreResultFailures> 
     <jmeterExtensions> 
     <jmeterExtension>kg.apc:jmeter-plugins-perfmon:2.1</jmeterExtension> 
     </jmeterExtensions> 
    </configuration> 
</plugin> 

und der Analyseteil:

<plugin> 
    <groupId>com.lazerycode.jmeter</groupId> 
    <artifactId>jmeter-analysis-maven-plugin</artifactId> 
    <version>1.0.6</version> 
    <executions> 
     <execution> 
      <id>analyze-results</id> 
      <phase>post-integration-test</phase> 
      <goals> 
       <goal>analyze</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <source>${project.basedir}/target/jmeter/results/*.jtl</source> 
     <targetDirectory>${project.basedir}/target/reports</targetDirectory> 
    </configuration> 
</plugin> 

Dies führt jedoch zu:

[INFO] ------------------------------------------------------- 
[INFO] Configuring JMeter... 
[INFO] ------------------------------------------------------- 
[WARNING] The POM for commons-math3:commons-math3:jar:3.4.1 is missing, no dependency information available 
[WARNING] The POM for commons-pool2:commons-pool2:jar:2.3 is missing, no dependency information available 
[INFO] ------------------------------------------------------------------------ 
[INFO] BUILD FAILURE 
[INFO] ------------------------------------------------------------------------ 
[INFO] Total time: 9.196 s 
[INFO] Finished at: 2017-02-16T16:13:31+08:00 
[INFO] Final Memory: 20M/437M 
[INFO] ------------------------------------------------------------------------ 
[ERROR] Failed to execute goal com.lazerycode.jmeter:jmeter-maven-plugin:2.1.0:configure (configure) on project jersey2-load-test: Failure to find commons-math3:commons-math3:jar:3.4.1 in https://repo.maven.apache.org/maven2 was cached in the local repository, resolution will not be reattempted until the update interval of central has elapsed or updates are forced -> [Help 1] 

die darauf hinweisen, dass es invalid dependencies declared Unter der Annahme, im in dem richtigen Pfad der Zugabe von jar-Erweiterung für jmeter, sind wie tun i Schließen Sie die ungültigen Abhängigkeiten aus und fügen Sie die richtigen hinzu, indem Sie den Abschnitt "jmeter extension" des Plugins verwenden? Sonst wie kann ich die Perfmon Plugin Abhängigkeiten richtig hinzufügen, wenn Sie jmeter maven plugin benutzen?

Antwort

2

Der Fehler, den Sie sehen, ist, weil jmeter-plugins von JMeter 2.13 abhängt, das einen gebrochenen Abhängigkeitsbaum der Maven hat. Dies muss das jmeter-plugins-Team beheben (es muss eine Version von jmeter-Plugins freigegeben werden, die von JMeter 3.1 abhängig ist).

Der Build brechen wird, weil das Plugin versucht, einige transitive Abhängigkeiten für jmeter-Plugins herunterladen, die nicht existieren, können Sie dieses Problem umgehen, indem Sie:

<downloadExtensionDependencies>false</downloadExtensionDependencies> 

Dies bedeutet jedoch, dass Sie müssen alle Abhängigkeiten manuell setzen, von denen jmeter-plugins in Ihrem <jmeterExtensions> Block abhängt. Hier

ist der Abhängigkeitsbaum:

[INFO] \- kg.apc:jmeter-plugins-perfmon:jar:2.1:compile 
[INFO] +- kg.apc:jmeter-plugins-cmn-jmeter:jar:0.3:compile 
[INFO] | +- org.apache.jmeter:jorphan:jar:2.13:compile 
[INFO] | | +- bsf:bsf:jar:2.4.0:compile 
[INFO] | | +- org.beanshell:bsh:jar:2.0b5:compile 
[INFO] | | +- org.bouncycastle:bcmail-jdk15on:jar:1.49:compile 
[INFO] | | +- org.bouncycastle:bcprov-jdk15on:jar:1.49:compile 
[INFO] | | +- org.bouncycastle:bcpkix-jdk15on:jar:1.49:compile 
[INFO] | | +- commons-codec:commons-codec:jar:1.10:compile 
[INFO] | | +- commons-collections:commons-collections:jar:3.2.1:compile 
[INFO] | | +- commons-httpclient:commons-httpclient:jar:3.1:compile 
[INFO] | | +- commons-io:commons-io:jar:2.4:compile 
[INFO] | | +- commons-jexl:commons-jexl:jar:1.1:compile 
[INFO] | | +- org.apache.commons:commons-jexl:jar:2.1.1:compile 
[INFO] | | +- org.apache.commons:commons-lang3:jar:3.3.2:compile 
[INFO] | | +- commons-logging:commons-logging:jar:1.2:compile 
[INFO] | | +- commons-net:commons-net:jar:3.3:compile 
[INFO] | | +- dnsjava:dnsjava:jar:2.1.7:compile 
[INFO] | | +- excalibur-datasource:excalibur-datasource:jar:2.1:compile 
[INFO] | | | +- hsqldb:hsqldb:jar:1.8.0.1:compile 
[INFO] | | | +- avalon-framework:avalon-framework-api:jar:4.3:compile 
[INFO] | | | +- avalon-framework:avalon-framework-impl:jar:4.3:compile 
[INFO] | | | | +- xml-apis:xmlParserAPIs:jar:2.0.2:compile 
[INFO] | | | | \- jmock:jmock:jar:1.0.1:compile 
[INFO] | | | +- avalon-logkit:avalon-logkit:jar:2.1:compile 
[INFO] | | | | +- javax.servlet:servlet-api:jar:2.3:compile 
[INFO] | | | | +- geronimo-spec:geronimo-spec-javamail:jar:1.3.1-rc3:compile 
[INFO] | | | | \- geronimo-spec:geronimo-spec-jms:jar:1.1-rc4:compile 
[INFO] | | | +- excalibur-instrument:excalibur-instrument-api:jar:2.1:compile 
[INFO] | | | +- concurrent:concurrent:jar:1.3.4:compile 
[INFO] | | | +- excalibur-component:excalibur-testcase:jar:2.1:compile 
[INFO] | | | +- excalibur-component:excalibur-component:jar:2.1:compile 
[INFO] | | | | +- excalibur-instrument:excalibur-instrument-mgr-api:jar:2.1:compile 
[INFO] | | | | \- excalibur-instrument:excalibur-instrument-mgr-impl:jar:2.1:compile 
[INFO] | | | \- qdox:qdox:jar:1.5:compile 
[INFO] | | +- excalibur-instrument:excalibur-instrument:jar:1.0:compile 
[INFO] | | +- excalibur-logger:excalibur-logger:jar:1.1:compile 
[INFO] | | +- excalibur-pool:excalibur-pool-api:jar:2.1:compile 
[INFO] | | +- excalibur-pool:excalibur-pool-impl:jar:2.1:compile 
[INFO] | | | \- junitperf:junitperf:jar:1.8:compile 
[INFO] | | +- excalibur-pool:excalibur-pool-instrumented:jar:2.1:compile 
[INFO] | | +- org.htmlparser:htmllexer:jar:2.1:compile 
[INFO] | | +- org.htmlparser:htmlparser:jar:2.1:compile 
[INFO] | | +- org.apache.httpcomponents:httpclient:jar:4.2.6:compile 
[INFO] | | +- org.apache.httpcomponents:httpmime:jar:4.2.6:compile 
[INFO] | | +- org.apache.httpcomponents:httpcore:jar:4.2.5:compile 
[INFO] | | +- oro:oro:jar:2.0.8:compile 
[INFO] | | +- jcharts:jcharts:jar:0.7.5:compile 
[INFO] | | +- org.jdom:jdom:jar:1.1.3:compile 
[INFO] | | +- org.mozilla:rhino:jar:1.7R5:compile 
[INFO] | | +- junit:junit:jar:4.12:compile 
[INFO] | | | \- org.hamcrest:hamcrest-core:jar:1.3:compile 
[INFO] | | +- soap:soap:jar:2.3.1:compile 
[INFO] | | +- net.sf.jtidy:jtidy:jar:r938:compile 
[INFO] | | +- org.apache.tika:tika-core:jar:1.7:compile 
[INFO] | | +- org.apache.tika:tika-parsers:jar:1.7:compile 
[INFO] | | | +- org.gagravarr:vorbis-java-tika:jar:0.6:compile 
[INFO] | | | +- edu.ucar:netcdf:jar:4.2.20:compile 
[INFO] | | | | \- edu.ucar:unidataCommon:jar:4.2.20:compile 
[INFO] | | | |  \- net.jcip:jcip-annotations:jar:1.0:compile 
[INFO] | | | +- net.sourceforge.jmatio:jmatio:jar:1.0:compile 
[INFO] | | | +- org.apache.james:apache-mime4j-core:jar:0.7.2:compile 
[INFO] | | | +- org.apache.james:apache-mime4j-dom:jar:0.7.2:compile 
[INFO] | | | +- org.apache.commons:commons-compress:jar:1.8.1:compile 
[INFO] | | | +- org.tukaani:xz:jar:1.5:compile 
[INFO] | | | +- org.apache.pdfbox:pdfbox:jar:1.8.8:compile 
[INFO] | | | | +- org.apache.pdfbox:fontbox:jar:1.8.8:compile 
[INFO] | | | | \- org.apache.pdfbox:jempbox:jar:1.8.8:compile 
[INFO] | | | +- org.bouncycastle:bcmail-jdk15:jar:1.45:compile 
[INFO] | | | +- org.bouncycastle:bcprov-jdk15:jar:1.45:compile 
[INFO] | | | +- org.apache.poi:poi:jar:3.11:compile 
[INFO] | | | +- org.apache.poi:poi-scratchpad:jar:3.11:compile 
[INFO] | | | +- org.apache.poi:poi-ooxml:jar:3.11:compile 
[INFO] | | | | \- org.apache.poi:poi-ooxml-schemas:jar:3.11:compile 
[INFO] | | | |  \- org.apache.xmlbeans:xmlbeans:jar:2.6.0:compile 
[INFO] | | | +- org.ccil.cowan.tagsoup:tagsoup:jar:1.2.1:compile 
[INFO] | | | +- org.ow2.asm:asm-debug-all:jar:4.1:compile 
[INFO] | | | +- com.googlecode.mp4parser:isoparser:jar:1.0.2:compile 
[INFO] | | | | \- org.aspectj:aspectjrt:jar:1.8.0:compile 
[INFO] | | | +- com.drewnoakes:metadata-extractor:jar:2.6.2:compile 
[INFO] | | | | \- com.adobe.xmp:xmpcore:jar:5.1.2:compile 
[INFO] | | | +- de.l3s.boilerpipe:boilerpipe:jar:1.1.0:compile 
[INFO] | | | +- rome:rome:jar:1.0:compile 
[INFO] | | | | \- jdom:jdom:jar:1.0:compile 
[INFO] | | | +- org.gagravarr:vorbis-java-core:jar:0.6:compile 
[INFO] | | | +- com.googlecode.juniversalchardet:juniversalchardet:jar:1.0.3:compile 
[INFO] | | | +- com.uwyn:jhighlight:jar:1.0:compile 
[INFO] | | | \- com.pff:java-libpst:jar:0.8.1:compile 
[INFO] | | +- com.thoughtworks.xstream:xstream:jar:1.4.8:compile 
[INFO] | | +- xmlpull:xmlpull:jar:1.1.3.1:compile 
[INFO] | | +- xpp3:xpp3_min:jar:1.1.4c:compile 
[INFO] | | +- xalan:xalan:jar:2.7.2:compile 
[INFO] | | +- xalan:serializer:jar:2.7.2:compile 
[INFO] | | +- xerces:xercesImpl:jar:2.11.0:compile 
[INFO] | | +- xml-apis:xml-apis:jar:1.4.01:compile 
[INFO] | | +- org.apache.xmlgraphics:xmlgraphics-commons:jar:1.5:compile 
[INFO] | | +- javax.mail:mail:jar:1.5.0-b01:compile 
[INFO] | | | \- javax.activation:activation:jar:1.1:compile 
[INFO] | | +- org.apache.geronimo.specs:geronimo-jms_1.1_spec:jar:1.1.1:compile 
[INFO] | | +- org.jsoup:jsoup:jar:1.8.1:compile 
[INFO] | | +- org.jodd:jodd-core:jar:3.6.4:compile 
[INFO] | | +- org.jodd:jodd-lagarto:jar:3.6.4:compile 
[INFO] | | +- org.jodd:jodd-log:jar:3.6.4:compile 
[INFO] | | +- org.mongodb:mongo-java-driver:jar:2.11.3:compile 
[INFO] | | +- com.fifesoft:rsyntaxtextarea:jar:2.5.6:compile 
[INFO] | | +- org.slf4j:slf4j-api:jar:1.7.10:compile 
[INFO] | | \- org.slf4j:slf4j-nop:jar:1.7.10:compile 
[INFO] | +- org.apache.jmeter:ApacheJMeter_core:jar:2.13:compile 
[INFO] | \- kg.apc:jmeter-plugins-charts:jar:0.1:compile 
[INFO] \- kg.apc:perfmon:jar:2.2.2:compile 
[INFO]  +- kg.apc:cmdrunner:jar:1.0.1:compile 
[INFO]  +- org.fusesource:sigar:jar:1.6.4:compile 
[INFO]  | \- log4j:log4j:jar:1.2.15:compile 
[INFO]  +- avalon-framework:avalon-framework:jar:4.1.5:compile 
[INFO]  \- logkit:logkit:jar:2.0:compile 

Sie weg nur eine Teilmenge dieser Bibliotheken erhalten können mit dem Hinzufügen, vorausgesetzt, dass Sie nicht Codepfade gehen nach unten, dem Code von ihnen verlangen.

Dies hebt hervor, warum es wichtig ist, Abhängigkeiten zu markieren, auf die Sie nur beim Testen als <scope>test</scope> angewiesen sind, damit sie nicht als Kernabhängigkeit heruntergezogen werden, die für die Ausführung Ihres Hauptcodes erforderlich ist.

Die oben genannten Informationen in das Wiki noch nicht gemacht hat (es gibt eine ständige Aufgabe, diese Informationen fügen und alles über auf der Website zu bewegen), ist es jedoch in der Changelog:

https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/blob/master/CHANGELOG.md

0

ich herunterladen jmeter-plugins-Manager-0.15.jar mit maven-antrun-Plugin und dann verwende ich Befehlszeilen Ausführungen (auch ant) ​​die meisten frischen Plugins zum Download:

 <plugin><artifactId>maven-antrun-plugin</artifactId> 
      <executions> 
       <execution><id>init</id><phase>initialize</phase><goals><goal>run</goal></goals> 
        <configuration> 
         <target> 
          <get src="http://jmeter-plugins.org/get/" dest="target/jmeter/lib/ext/jmeter-plugins-manager.jar"/> 
          <get src="http://central.maven.org/maven2/kg/apc/cmdrunner/2.0/cmdrunner-2.0.jar" dest="target/jmeter/lib/cmdrunner-2.0.jar"/> 
          <java classname="org.jmeterplugins.repository.PluginManagerCMDInstaller"> 
           <classpath> 
            <pathelement location="target/jmeter/lib/ext/jmeter-plugins-manager.jar"/> 
           </classpath> 
          </java> 
          <ant antfile="plugins.xml" target="plugins" inheritAll="true" /> 
         </target> 
        </configuration> 
       </execution> 
      </executions> 
      <dependencies> 
       <dependency><groupId>ant-contrib</groupId><artifactId>ant-contrib</artifactId><version>1.0b3</version> 
        <exclusions> 
         <exclusion><groupId>ant</groupId><artifactId>ant</artifactId></exclusion> 
        </exclusions> 
       </dependency> 
      </dependencies> 
     </plugin> 

wo Plugins.xml ist:

<project xmlns:ac="antlib:net.sf.antcontrib"> 
<target name="plugins"> 
    <loadfile property="file" srcfile="plugins"/> 
    <ac:for param="line" list="${file}" delimiter="${line.separator}"> 
     <ac:sequential> 
      <exec executable="target/jmeter/bin/PluginsManagerCMD.sh"> 
       <arg value="install"/> 
       <arg value="@{line}"/> 
      </exec> 
     </ac:sequential> 
    </ac:for> 
</target> 

und Plugins Datei die Liste der Plugin-IDs enthält:

jpgc-dummy 
jpgc-fifo 
jpgc-graphs-basic 
jpgc-perfmon 
jpgc-tst 
jpgc-functions 
jpgc-casutg 
jpgc-ffw 
jpgc-prmctl