mirror of https://github.com/apache/jmeter.git
Bug 63204 - RenderAsJSON#prettyJSON : JSONParser#parse cannot return JSONValue
Also increase coverage
Bugzilla Id: 63204
git-svn-id: https://svn.apache.org/repos/asf/jmeter/trunk@1854276 13f79535-47bb-0310-9956-ffa450edef68
Former-commit-id: c1e9540f2f
This commit is contained in:
parent
911d48dfc7
commit
0d5bf6fd71
|
|
@ -58,7 +58,7 @@ import org.slf4j.LoggerFactory;
|
|||
public class RenderAsJsonRenderer implements ResultRenderer, ActionListener {
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(RenderAsJsonRenderer.class);
|
||||
|
||||
private static final String NO_MATCH = "NO MATCH"; //$NON-NLS-1$
|
||||
private static final String TAB_SEPARATOR = " "; //$NON-NLS-1$
|
||||
|
||||
private static final String JSONPATH_TESTER_COMMAND = "jsonpath_tester"; // $NON-NLS-1$
|
||||
|
|
@ -121,7 +121,7 @@ public class RenderAsJsonRenderer implements ResultRenderer, ActionListener {
|
|||
try {
|
||||
List<Object> matchStrings = extractWithJSonPath(textToParse, jsonPathExpressionField.getText());
|
||||
if (matchStrings.isEmpty()) {
|
||||
return "NO MATCH"; //$NON-NLS-1$
|
||||
return NO_MATCH; //$NON-NLS-1$
|
||||
} else {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
int i = 0;
|
||||
|
|
@ -149,14 +149,8 @@ public class RenderAsJsonRenderer implements ResultRenderer, ActionListener {
|
|||
@Override
|
||||
public void renderResult(SampleResult sampleResult) {
|
||||
String response = ViewResultsFullVisualizer.getResponseAsString(sampleResult);
|
||||
try {
|
||||
jsonDataField.setText(response == null ? "" : RenderAsJSON.prettyJSON(response, TAB_SEPARATOR)); //$NON-NLS-1$
|
||||
jsonDataField.setCaretPosition(0);
|
||||
} catch (Exception e) {
|
||||
log.error("Exception converting to XML: {}, message: {}", response, e.getMessage(), e); //$NON-NLS-1$ $NON-NLS-2$
|
||||
jsonDataField.setText("Exception converting to XML: "+response+ ", message: "+e.getMessage()); //$NON-NLS-1$ $NON-NLS-2$
|
||||
jsonDataField.setCaretPosition(0);
|
||||
}
|
||||
jsonDataField.setText(response == null ? "" : RenderAsJSON.prettyJSON(response, TAB_SEPARATOR)); //$NON-NLS-1$
|
||||
jsonDataField.setCaretPosition(0);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,6 @@ import org.apache.jmeter.util.JMeterUtils;
|
|||
import net.minidev.json.JSONArray;
|
||||
import net.minidev.json.JSONObject;
|
||||
import net.minidev.json.JSONStyle;
|
||||
import net.minidev.json.JSONValue;
|
||||
import net.minidev.json.parser.JSONParser;
|
||||
import net.minidev.json.parser.ParseException;
|
||||
|
||||
|
|
@ -76,9 +75,6 @@ public class RenderAsJSON extends SamplerResultTab implements ResultRenderer {
|
|||
} else if (o instanceof JSONArray) {
|
||||
return ((JSONArray) o)
|
||||
.toJSONString(new PrettyJSONStyle(tabSeparator));
|
||||
} else if (o instanceof JSONValue) {
|
||||
return ((JSONValue) o)
|
||||
.toJSONString(new PrettyJSONStyle(tabSeparator));
|
||||
}
|
||||
} catch (ParseException e) {
|
||||
return json;
|
||||
|
|
|
|||
|
|
@ -57,21 +57,41 @@ class RenderAsJsonRendererSpec extends JMeterSpec {
|
|||
sut.jsonDataField.getText() == ""
|
||||
}
|
||||
|
||||
def "render JSON Response"() {
|
||||
def "render '#input' as JSON Response to '#output'"() {
|
||||
given:
|
||||
sut.init();
|
||||
def sampleResult = new SampleResult();
|
||||
sampleResult.setResponseData("{name:\"Ludwig\",age: 23,city: \"Bonn\"}");
|
||||
when:
|
||||
sampleResult.setResponseData(input);
|
||||
sut.renderResult(sampleResult)
|
||||
then:
|
||||
sut.jsonDataField.getText() == '''{
|
||||
output == sut.jsonDataField.getText()
|
||||
where:
|
||||
input | output
|
||||
"This is not json" | "This is not json"
|
||||
"{name:\"Ludwig\",age: 23,city: \"Bonn\"}" | '''{
|
||||
"city": "Bonn",
|
||||
"name": "Ludwig",
|
||||
"age": 23
|
||||
}'''
|
||||
}
|
||||
|
||||
def "execute '#expression' on '#input' results into '#output'"() {
|
||||
given:
|
||||
sut.init();
|
||||
sut.jsonPathExpressionField.setText(expression);
|
||||
def sampleResult = new SampleResult();
|
||||
when:
|
||||
sut.executeAndJSonPathTester(input);
|
||||
then:
|
||||
output == sut.jsonPathResultField.getText()
|
||||
where:
|
||||
input | expression | output
|
||||
"{name:\"Ludwig\",age: 23,city: \"Bonn\"}" | "\$..name" | "Result[0]=Ludwig\n"
|
||||
"This is not json" | "\$..name" | "NO MATCH"
|
||||
"{name:\"Ludwig\",age: 23,city: \"Bonn\"}" | "\$.." | "Exception: Path must not end with a '.' or '..'"
|
||||
}
|
||||
|
||||
def "clearData clears expected fields"() {
|
||||
given:
|
||||
sut.init()
|
||||
|
|
|
|||
|
|
@ -136,6 +136,7 @@ Summary
|
|||
|
||||
<h3>Listeners</h3>
|
||||
<ul>
|
||||
<li><bug>63204</bug>RenderAsJSON#prettyJSON : JSONParser#parse cannot return JSONValue</li>
|
||||
</ul>
|
||||
|
||||
<h3>Timers, Assertions, Config, Pre- & Post-Processors</h3>
|
||||
|
|
|
|||
Loading…
Reference in New Issue