Search code examples
jmeterjmeter-plugins

Getting org.xml.sax.SAXParseException via JMeter Plugins manager but JMeter tool is able to run the test


Using JMeter v5.4.3 and Jmeter plugins manager CMD (v1.7):

We're getting the following error while running jmeter plugins manager on a JMX and the required plugins are not getting installed, but surprisingly the same JMX is running fine on JMeter. Anything we're missing here?

{"asctime": "2022-03-24 07:32:29,478", "name": "execOp", "levelname": "INFO", "correlationId": "1e519b37-d640-48bb-b2c8-c8dea8bbb010", "servicename": "JMeter Job Agent", "classname": "execOp", "testRunId": "b4969e62-5a1c-446f-8602-d584dd54cd25", "testRunName": "1e519b37-d640-48bb-b2c8-c8dea8bbb00e", "message": "['PluginsManagerCMD.sh', 'install-for-jmx', '/root/artifacts/testplan.jmx']"}
2022-03-24 07:32:30,367 INFO o.j.r.PluginManagerCMD: Command is: install-for-jmx
2022-03-24 07:32:30,418 INFO o.j.r.JARSourceHTTP: Requesting https://jmeter-plugins.org/repo/?installID=linux-a07ec75f950934652462a757ae53bcb4-nongui
2022-03-24 07:32:31,424 INFO o.j.r.PluginManager: Plugins Status: [jpgc-plugins-manager=1.7, jmeter-core=5.4.3, jmeter-ftp=5.4.3, jmeter-http=5.4.3, jmeter-jdbc=5.4.3, jmeter-jms=5.4.3, jmeter-junit=5.4.3, jmeter-java=5.4.3, jmeter-ldap=5.4.3, jmeter-mail=5.4.3, jmeter-mongodb=5.4.3, jmeter-native=5.4.3, jmeter-tcp=5.4.3, jmeter-components=5.4.3]
2022-03-24 07:32:31,426 INFO o.j.r.PluginManagerCMD: Params line is: /root/artifacts/testplan.jmx
2022-03-24 07:32:31,499 WARN o.j.r.p.TestPlanAnalyzer: Cannot parse file: /root/artifacts/testplan.jmx
org.xml.sax.SAXParseException: Character reference "&#x0" is an invalid XML character.
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) ~[xercesImpl-2.12.0.jar:?]
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) ~[xercesImpl-2.12.0.jar:?]
    at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) ~[?:?]
    at org.jmeterplugins.repository.plugins.TestPlanAnalyzer.getNodeListWithClassNames(TestPlanAnalyzer.java:112) [jmeter-plugins-manager-1.7.jar:?]
    at org.jmeterplugins.repository.plugins.TestPlanAnalyzer.analyze(TestPlanAnalyzer.java:37) [jmeter-plugins-manager-1.7.jar:?]
    at org.jmeterplugins.repository.plugins.PluginSuggester.analyzeTestPlan(PluginSuggester.java:51) [jmeter-plugins-manager-1.7.jar:?]
    at org.jmeterplugins.repository.PluginManagerCMD.installPluginsForJmx(PluginManagerCMD.java:127) [jmeter-plugins-manager-1.7.jar:?]
    at org.jmeterplugins.repository.PluginManagerCMD.processParams(PluginManagerCMD.java:81) [jmeter-plugins-manager-1.7.jar:?]
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:62) [cmdrunner-2.2.jar:?]
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:21) [cmdrunner-2.2.jar:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:?]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:?]
    at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:115) [cmdrunner-2.2.jar:?]
2022-03-24 07:32:31,516 INFO o.j.r.JARSourceHTTP: Downloading: http://search.maven.org/remotecontent?filepath=net/sf/json-lib/json-lib/2.4/json-lib-2.4-jdk15.jar
2022-03-24 07:32:31,517 INFO o.j.r.PluginManagerCMD: Downloading json-lib...
2022-03-24 07:32:31,793 INFO o.j.r.PluginManagerCMD: Downloaded json-lib...
2022-03-24 07:32:31,795 INFO o.j.r.PluginManager: Plugins manager will apply some modifications

Solution

  • Why "surprisingly"? Your .jmx script file contains a null character which is not allowed character in XML.

    JMeter ignores this in order to allow maximum flexibility and JMeter Plugins Manager doesn't.

    Plugins Manager is a separate project which is not related to JMeter upstream by any means.

    Moreover it's a message of WARN severity so you can just ignore it (or if it causes problems in automated log analysis you can configure JMeter logging to not display this warning by adding the next line to log4j2.xml file)

    <Logger name="org.jmeterplugins.repository.plugins.TestPlanAnalyzer" level="error" />