https://bz.apache.org/bugzilla/show_bug.cgi?id=65417
Bug ID: 65417
Summary: org.apache.jmeter.services.FileServer not providing
correct base dir path on JMeter server (load generator
in distributed setup)
Product: JMeter
Version: 5.4.1
Hardware: PC
OS: Linux
Status: NEW
Severity: major
Priority: P2
Component: HTTP
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: JMETER_5.5
We're running JMeter distributed setup and have created an alpine-based
jre-headless docker image containing JMeter v5.4.1.
There's a groovy script in our JMeter test plan using JSR223PostProcessor which
is simply logging the FileServer base dir path and it runs fine on testing both
JMeter client and server running on same PC or in single docker container:
Groovy Script:
import org.apache.jmeter.services.FileServer
def inputPath = FileServer.getFileServer().getBaseDir()
log.info(inputPath);
Result:
2021-06-30 17:09:20,491 INFO o.a.j.e.J.JSR223 PostProcessor: /root/artifacts
While running the same test plan using same docker image with JMeter client and
server running on separate docker containers (on same or different machines),
it shows the following path on JMeter SERVER (taken from worker/JMeter server
logs):
2021-06-30 17:09:20,488 INFO o.a.j.e.J.JSR223 PostProcessor:
/root/artifacts/root/artifacts
This is incorrect (repeated path) and is critical as we have a logic to access
a file to populate POST body in HTTP request which throws
FileNotFoundException.
2021-06-30 17:09:20,489 WARN o.a.j.f.Groovy: Error running groovy script
javax.script.ScriptException: javax.script.ScriptException:
java.io.FileNotFoundException: /root/artifacts/root/artifacts/message.json (No
such file or directory)
at
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:158)
~[groovy-jsr223-3.0.7.jar:3.0.7]
at javax.script.AbstractScriptEngine.eval(Unknown Source)
~[java.scripting:?]
at org.apache.jmeter.functions.Groovy.execute(Groovy.java:120)
[ApacheJMeter_functions.jar:5.4.1]
at
org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:138)
[ApacheJMeter_core.jar:5.4.1]
at
org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:113)
[ApacheJMeter_core.jar:5.4.1]
at
org.apache.jmeter.testelement.property.FunctionProperty.getStringValue(FunctionProperty.java:100)
[ApacheJMeter_core.jar:5.4.1]
at
org.apache.jmeter.testelement.AbstractTestElement.getPropertyAsString(AbstractTestElement.java:280)
[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.config.Argument.getValue(Argument.java:145)
[ApacheJMeter_core.jar:5.4.1]
at
org.apache.jmeter.protocol.http.util.HTTPArgument.getEncodedValue(HTTPArgument.java:249)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.protocol.http.util.HTTPArgument.getEncodedValue(HTTPArgument.java:230)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.setupHttpEntityEnclosingRequestData(HTTPHC4Impl.java:1643)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.handleMethod(HTTPHC4Impl.java:886)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:641)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:66)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1296)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1285)
[ApacheJMeter_http.jar:5.4.1]
at
org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:638)
[ApacheJMeter_core.jar:5.4.1]
at
org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:558)
[ApacheJMeter_core.jar:5.4.1]
at
org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489)
[ApacheJMeter_core.jar:5.4.1]
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256)
[ApacheJMeter_core.jar:5.4.1]
at java.lang.Thread.run(Unknown Source) [?:?]
Caused by: javax.script.ScriptException: java.io.FileNotFoundException:
/root/artifacts/root/artifacts/message.json (No such file or directory)
at
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:320)
~[groovy-jsr223-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155)
~[groovy-jsr223-3.0.7.jar:3.0.7]
... 20 more
Caused by: java.io.FileNotFoundException:
/root/artifacts/root/artifacts/message.json (No such file or directory)
at java.io.FileInputStream.open0(Native Method) ~[?:?]
at java.io.FileInputStream.open(Unknown Source) ~[?:?]
at java.io.FileInputStream.<init>(Unknown Source) ~[?:?]
at groovy.util.CharsetToolkit.<init>(CharsetToolkit.java:78)
~[groovy-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.runtime.ResourceGroovyMethods.newReader(ResourceGroovyMethods.java:1780)
~[groovy-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.runtime.ResourceGroovyMethods.getText(ResourceGroovyMethods.java:591)
~[groovy-3.0.7.jar:3.0.7]
at org.codehaus.groovy.runtime.dgm$1040.doMethodInvoke(Unknown Source)
~[groovy-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.reflection.GeneratedMetaMethod$Proxy.doMethodInvoke(GeneratedMetaMethod.java:83)
~[groovy-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.runtime.metaclass.MethodMetaProperty$GetBeanMethodMetaProperty.getProperty(MethodMetaProperty.java:76)
~[groovy-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.runtime.callsite.GetEffectivePojoPropertySite.getProperty(GetEffectivePojoPropertySite.java:63)
~[groovy-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty(AbstractCallSite.java:329)
~[groovy-3.0.7.jar:3.0.7]
at Script1.run(Script1.groovy:1) ~[?:?]
at
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
~[groovy-jsr223-3.0.7.jar:3.0.7]
at
org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:155)
~[groovy-jsr223-3.0.7.jar:3.0.7]
... 20 more
Also, please suggest any workaround if feasible by the time this is
investigated.
--
You are receiving this mail because:
You are the assignee for the bug.