Bug 61561 - Function helper dialog should display exception in result
Summary: Function helper dialog should display exception in result
Status: RESOLVED FIXED
Alias: None
Product: JMeter
Classification: Unclassified
Component: Main (show other bugs)
Version: 3.3
Hardware: All All
: P2 enhancement (vote)
Target Milestone: ---
Assignee: JMeter issues mailing list
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2017-09-25 05:58 UTC by orimarko
Modified: 2017-09-25 19:09 UTC (History)
1 user (show)



Attachments
RandomDate function (97.57 KB, image/png)
2017-09-25 10:41 UTC, orimarko
Details
jmeter.log error (14.72 KB, text/plain)
2017-09-25 10:42 UTC, orimarko
Details

Note You need to log in before you can comment on or make changes to this bug.
Description orimarko 2017-09-25 05:58:21 UTC
I opened the Function Helper and tried the new function __RandomDate, Click Generate and got an error (other functions are working)

2017-09-25 08:44:30,112 ERROR o.a.j.f.RandomDate: Failed to parse the date '' to shift with formatter 'Value(YearOfEra,4,19,EXCEEDS_PAD)'-'Value(MonthOfYear,2)'-'Value(DayOfMonth,2)java.time.format.DateTimeFormatterBuilder$DefaultValueParser@6426866cjava.time.format.DateTimeFormatterBuilder$DefaultValueParser@4b46653bjava.time.format.DateTimeFormatterBuilder$DefaultValueParser@108462fd'
java.time.format.DateTimeParseException: Text '' could not be parsed at index 0
    at java.time.format.DateTimeFormatter.parseResolved0(Unknown Source) ~[?:1.8.0_144]
    at java.time.format.DateTimeFormatter.parse(Unknown Source) ~[?:1.8.0_144]
    at java.time.LocalDate.parse(Unknown Source) ~[?:1.8.0_144]
    at org.apache.jmeter.functions.RandomDate.execute(RandomDate.java:189) [ApacheJMeter_functions.jar:3.3 r1808647]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:137) [ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112) [ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.functions.gui.FunctionHelper.actionPerformed(FunctionHelper.java:181) [ApacheJMeter_core.jar:3.3 r1808647]
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) [?:1.8.0_144]
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) [?:1.8.0_144]
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) [?:1.8.0_144]
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) [?:1.8.0_144]
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) [?:1.8.0_144]
    at java.awt.Component.processMouseEvent(Unknown Source) [?:1.8.0_144]
    at javax.swing.JComponent.processMouseEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.Component.processEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.Container.processEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.Component.dispatchEventImpl(Unknown Source) [?:1.8.0_144]
    at java.awt.Container.dispatchEventImpl(Unknown Source) [?:1.8.0_144]
    at java.awt.Component.dispatchEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.Container.dispatchEventImpl(Unknown Source) [?:1.8.0_144]
    at java.awt.Window.dispatchEventImpl(Unknown Source) [?:1.8.0_144]
    at java.awt.Component.dispatchEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) [?:1.8.0_144]
    at java.awt.EventQueue.access$500(Unknown Source) [?:1.8.0_144]
    at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_144]
    at java.awt.EventQueue$3.run(Unknown Source) [?:1.8.0_144]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_144]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) [?:1.8.0_144]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) [?:1.8.0_144]
    at java.awt.EventQueue$4.run(Unknown Source) [?:1.8.0_144]
    at java.awt.EventQueue$4.run(Unknown Source) [?:1.8.0_144]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_144]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) [?:1.8.0_144]
    at java.awt.EventQueue.dispatchEvent(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_144]
2017-09-25 08:44:30,113 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.IllegalArgumentException: bound must be greater than origin
    at java.util.concurrent.ThreadLocalRandom.nextLong(Unknown Source) ~[?:1.8.0_144]
    at org.apache.jmeter.functions.RandomDate.execute(RandomDate.java:196) ~[ApacheJMeter_functions.jar:3.3 r1808647]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:137) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at org.apache.jmeter.functions.gui.FunctionHelper.actionPerformed(FunctionHelper.java:181) ~[ApacheJMeter_core.jar:3.3 r1808647]
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) ~[?:1.8.0_144]
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) ~[?:1.8.0_144]
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) ~[?:1.8.0_144]
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source) ~[?:1.8.0_144]
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Component.processMouseEvent(Unknown Source) ~[?:1.8.0_144]
    at javax.swing.JComponent.processMouseEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Component.processEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Container.processEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Component.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Container.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Component.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Container.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Window.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
    at java.awt.Component.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventQueue.access$500(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventQueue$3.run(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventQueue$3.run(Unknown Source) ~[?:1.8.0_144]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_144]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) ~[?:1.8.0_144]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventQueue$4.run(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventQueue$4.run(Unknown Source) ~[?:1.8.0_144]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_144]
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventQueue.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_144]
    at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_144]
Comment 1 Antonio Gomes Rodrigues 2017-09-25 07:40:03 UTC
Hi,

Can you provide us the input to the function

Antonio
Comment 2 orimarko 2017-09-25 07:42:32 UTC
(As Generate works) Function is called without any parameters: ${__RandomDate(,,,,)}
Comment 3 Antonio Gomes Rodrigues 2017-09-25 08:01:54 UTC
Ok

I will test it asap and modify the log (I have make a bad copy/paste)

But in my opinion, the error is that the attribute End date is mandatory

Can you try with a End date in the futur?

Antonio
Comment 4 orimarko 2017-09-25 08:06:51 UTC
Click Generate ignores my input and calls the function without any parameters
Comment 5 Antonio Gomes Rodrigues 2017-09-25 10:20:30 UTC
Can you attach jmeter.log and a screenshot of the function Helper

${__RandomDate(,,,,)} can't work because End date is needed (I will fix the log message to be more useful)

But I don't reproduce "Click Generate ignores my input and calls the function without any parameters"

Thank
Antonio
Comment 6 orimarko 2017-09-25 10:41:35 UTC
Created attachment 35370 [details]
RandomDate function
Comment 7 orimarko 2017-09-25 10:42:26 UTC
Created attachment 35371 [details]
jmeter.log error
Comment 8 orimarko 2017-09-25 10:55:55 UTC
Also I notice difference from JMeter 3.2 Generate ${__Random(,,)} throws exception only in JMeter 3.3

2017-09-25 13:53:04,864 ERROR o.a.j.JMeter: Uncaught exception: 
java.lang.NumberFormatException: For input string: ""
	at java.lang.NumberFormatException.forInputString(Unknown Source) ~[?:1.8.0_144]
	at java.lang.Long.parseLong(Unknown Source) ~[?:1.8.0_144]
	at java.lang.Long.parseLong(Unknown Source) ~[?:1.8.0_144]
	at org.apache.jmeter.functions.Random.execute(Random.java:64) ~[ApacheJMeter_functions.jar:3.3 r1808647]
	at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:137) ~[ApacheJMeter_core.jar:3.3 r1808647]
	at org.apache.jmeter.engine.util.CompoundVariable.execute(CompoundVariable.java:112) ~[ApacheJMeter_core.jar:3.3 r1808647]
	at org.apache.jmeter.functions.gui.FunctionHelper.actionPerformed(FunctionHelper.java:181) ~[ApacheJMeter_core.jar:3.3 r1808647]
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) ~[?:1.8.0_144]
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source) ~[?:1.8.0_144]
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source) ~[?:1.8.0_144]
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source) ~[?:1.8.0_144]
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Component.processMouseEvent(Unknown Source) ~[?:1.8.0_144]
	at javax.swing.JComponent.processMouseEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Component.processEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Container.processEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Component.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Container.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Component.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Container.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Window.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
	at java.awt.Component.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventQueue.dispatchEventImpl(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventQueue.access$500(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventQueue$3.run(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventQueue$3.run(Unknown Source) ~[?:1.8.0_144]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_144]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) ~[?:1.8.0_144]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventQueue$4.run(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventQueue$4.run(Unknown Source) ~[?:1.8.0_144]
	at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_144]
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventQueue.dispatchEvent(Unknown Source) ~[?:1.8.0_144]
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) [?:1.8.0_144]
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) [?:1.8.0_144]
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) [?:1.8.0_144]
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_144]
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source) [?:1.8.0_144]
	at java.awt.EventDispatchThread.run(Unknown Source) [?:1.8.0_144]
Comment 9 Philippe Mouawad 2017-09-25 11:11:29 UTC
For me, there is no bug except maybe unclear error message and the fact that error should appear in preview , not only in logs.

Since 3.3, there is a "preview" feature which shows result of calling a function.
As mandatory parameters are not entered, function fails.

What would you expect here ?

Thanks
Comment 10 orimarko 2017-09-25 11:24:10 UTC
I expect a button (Generate or new one) to execute the function inside the input (after Copy and paste function string),So that I can add parameters (in this case mandatory) and then submit function thus get a valid response (and not exception)
Comment 11 Philippe Mouawad 2017-09-25 11:26:35 UTC
(In reply to orimarko from comment #10)
> I expect a button (Generate or new one) to execute the function inside the
> input (after Copy and paste function string),So that I can add parameters
> (in this case mandatory) and then submit function thus get a valid response
> (and not exception)
I am not sure to follow you, can you make a screenshot of what you would expect and what you are currently doing ?

The logic is that you put the parameters in the table of parameters and click Generate which will put the syntax in the field at left of Generate and the result in the text area at the bottom.

Thanks
Comment 12 Philippe Mouawad 2017-09-25 11:38:33 UTC
Author: pmouawad
Date: Mon Sep 25 11:38:06 2017
New Revision: 1809605

URL: http://svn.apache.org/viewvc?rev=1809605&view=rev
Log:
Bug 61561 - Function helper dialog should display exception in result
Bugzilla Id: 61561

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/functions/gui/FunctionHelper.java
    jmeter/trunk/xdocs/changes.xml
Comment 13 Philippe Mouawad 2017-09-25 19:09:31 UTC
Author: pmouawad
Date: Mon Sep 25 19:08:24 2017
New Revision: 1809660

URL: http://svn.apache.org/viewvc?rev=1809660&view=rev
Log:
Bug 61561 - Function helper dialog should display exception in result
Make "Copy and paste function string" read only to avoid confusion
Bugzilla Id: 61561

Modified:
    jmeter/trunk/src/core/org/apache/jmeter/functions/gui/FunctionHelper.java
    jmeter/trunk/src/jorphan/org/apache/jorphan/gui/JLabeledTextField.java