2017-02-16 103 views
2

我目前在使用jmeter maven插件运行测试的基于jmeter的项目上工作。到目前为止一切正常,直到我添加了perfmon的插件,将它们添加使用JMeter的UI获得每秒和响应时间交易一段时间后,按照说明here如何使用jmeter-maven-plugin使用perfmon插件?

现在行家运行它结果:

[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] ------------------------------- 

documentation添加额外的库(因为我已经添加了通过JMeter的用户界面的插件管理器中的perfmon的听众),我已经更新我的POM添加JMeter的扩展部分:

<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> 

和分析部分:

<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> 

然而,这个结果:

[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] 

其中指出,有invalid dependencies declared 在加入罐子扩展JMeter的正确路径假设IM,我怎么排除无效的依赖关系,并使用插件的jmeter扩展部分添加正确的依赖项?否则,如何在使用jmeter maven插件时正确添加perfmon插件依赖项?

回答

2

您看到的错误是因为jmeter-plugins依赖于JMeter 2.13,它具有破坏的maven依赖关系树。这是jmeter-plugins团队需要解决的问题(他们需要发布取决于JMeter 3.1的jmeter插件版本)。

构建是打破由于插件尝试下载JMeter的,有些插件传递依赖的是不存在的,你可以解决此通过设置:

<downloadExtensionDependencies>false</downloadExtensionDependencies> 

但这不过意味着你需要手动设置您的<jmeterExtensions>块中的jmeter插件所依赖的所有依赖项。

这里的依赖关系树:

[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 

你可以逃脱仅添加这些库的一个子集,假设你不走这需要代码他们的代码路径。

这样做强调了为什么标记依赖关系是很重要的,因为依赖关系在测试中仅依赖于<scope>test</scope>,因此它们不会被拉下作为运行主代码所需的核心依赖关系。

以上资料并没有使它成为了维基,但(那里是一个长期任务,以增加这些信息和整个移动所有的网站),它却是在更新日志可用:

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

0

我下载使用maven-antrun-插件的JMeter - 插件管理器,0.15.jar,然后我用命令行执行(也蚂蚁)下载最新鲜的插件:

 <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> 

哪里插件。XML是:

<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> 

和插件文件包含插件ID列表:

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