Bug 44142

Summary: JMETER function __machineName do not work
Product: JMeter - Now in Github Reporter: Michael Kless <michael.kless>
Component: MainAssignee: JMeter issues mailing list <issues>
Status: RESOLVED FIXED    
Severity: normal    
Priority: P3    
Version: 2.3.1   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   

Description Michael Kless 2007-12-27 02:24:03 UTC
Hello folks,

using function __machineName on WindowsXP with java version "1.4.2_10" do not 
work and writes errors to jmeter.log:

2007/12/27 10:58:49 ERROR - jmeter.threads.JMeterThread:  
java.lang.NullPointerException
	at org.apache.jmeter.functions.MachineName.execute(MachineName.java:66)
	at org.apache.jmeter.engine.util.CompoundVariable.execute
(CompoundVariable.java:128)
	at org.apache.jmeter.engine.util.CompoundVariable.execute
(CompoundVariable.java:97)
	at 
org.apache.jmeter.testelement.property.FunctionProperty.getStringValue
(FunctionProperty.java:85)
	at org.apache.jmeter.testbeans.TestBeanHelper.prepare
(TestBeanHelper.java:70)
	at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:297)
	at java.lang.Thread.run(Unknown Source)


Java-Vesion:
------------
java version "1.4.2_10"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_10-b03)
Java HotSpot(TM) Client VM (build 1.4.2_10-b03, mixed mode)

We are planing a distributed (Remote-)Database-Test-Plan, and we want to 
prevent sharing conflicts by using the machineName as a part of the database 
tablenames.

Please have a look to the problem.

Thanks in advance,

Michael.
Comment 1 Sebb 2008-01-02 17:35:19 UTC
How does the function call look in the test plan?
I've found that ${__machineName} causes the problem, but ${__machineName()} 
and ${__machineName(var)} work fine.

Obviously the NPE needs to be fixed, but hopefully you will find that one of 
the alternatives works for you.
Comment 2 Sebb 2008-01-03 05:26:15 UTC
The __machineName function parameter is currently required, so 
${__machineName} is not valid syntax - but it should not generate an NPE.

${__machineName()} is currently parsed as if there was one parameter - the 
empty string - which is why that syntax works OK.

I'll probably make the parameter optional.
Comment 3 Michael Kless 2008-01-03 06:11:13 UTC
(In reply to comment #2)
> The __machineName function parameter is currently required, so 
> ${__machineName} is not valid syntax - but it should not generate an NPE.
> ${__machineName()} is currently parsed as if there was one parameter - the 
> empty string - which is why that syntax works OK.
> I'll probably make the parameter optional.

Thank you, these hint solves our problem: ${__machineName()} works fine. My 
recommendation: Just correct the documentation of Functions and Variables 
(chapter 19 in ..\jakarta-jmeter-2.3.1\docs\usermanual\functions.html) rather 
than make the parameter optional.

Kind regards,

Michael.
Comment 4 Sebb 2008-01-03 06:25:19 UTC
Thanks for confirming that the problem is resolved.

Re-opening as the NPE is not yet fixed.

Note that the documentation *IS* currently correct - it states that the 
parameter is required.

I think it still make sense to make the variable name optional.
Comment 5 Sebb 2008-01-03 07:22:28 UTC
Fixed in SVN: r608515 (parsing) and r608524 (optional varname)
Comment 6 The ASF infrastructure team 2022-09-24 20:37:40 UTC
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/2057