Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Set JSON as default into 'View Results Tree' #5235

Closed
asfimport opened this issue Feb 6, 2020 · 3 comments
Closed

Set JSON as default into 'View Results Tree' #5235

asfimport opened this issue Feb 6, 2020 · 3 comments

Comments

@asfimport
Copy link
Collaborator

vlatko606 (Bug 64119):
I can find way to set: order of the renders, but is it possible to set JSON as default?

What ever I set, text is always set as default render.

*The config file that i used is: jmeter.proporties

*JMeter version: 5.11

*view.results.tree.renderers_order=.RenderAsJSON,.RenderAsText,.RenderAsRegexp,.RenderAsBoundaryExtractor,.RenderAsCssJQuery,.RenderAsXPath,org.apache.jmeter.extractor.json.render.RenderAsJsonRenderer,.RenderAsHTML,.RenderAsHTMLFormatted,.RenderAsHTMLWithEmbedded,.RenderAsDocument,.RenderAsXML

Created attachment m6dHW.png: jmeter

jmeter

OS: All

@asfimport
Copy link
Collaborator Author

@FSchumacher (migrated from Bugzilla):
I think it makes sense to use the order property for renderers to select the default renderer as well.

What are others thinking?

Created attachment bug64119-order-renderer.diff: Use the order property to set the default renderer

bug64119-order-renderer.diff
diff --git a/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java b/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
index 315345378e..5e5e1549e0 100644
--- a/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
+++ b/src/components/src/main/java/org/apache/jmeter/visualizers/ViewResultsFullVisualizer.java
@@ -449,15 +449,18 @@ implements ActionListener, TreeSelectionListener, Clearable, ItemListener {
         } catch (IOException e1) {
             // ignored
         }
-        String textRenderer = JMeterUtils.getResString("view_results_render_text"); // $NON-NLS-1$
-        Object textObject = null;
+        String defaultRenderer = expandToClassname(".RenderAsText"); // $NON-NLS-1$
+        if (VIEWERS_ORDER.length() > 0) {
+            defaultRenderer = expandToClassname(VIEWERS_ORDER.split(",", 2)[0]);
+        }
+        Object defaultObject = null;
         Map<String, ResultRenderer> map = new HashMap<>(classesToAdd.size());
         for (String clazz : classesToAdd) {
             try {
                 // Instantiate render classes
                 final ResultRenderer renderer = (ResultRenderer) Class.forName(clazz).getDeclaredConstructor().newInstance();
-                if (textRenderer.equals(renderer.toString())){
-                    textObject=renderer;
+                if (defaultRenderer.equals(clazz)) {
+                    defaultObject=renderer;
                 }
                 renderer.setBackgroundColor(getBackground());
                 map.put(renderer.getClass().getName(), renderer);
@@ -473,9 +476,7 @@ implements ActionListener, TreeSelectionListener, Clearable, ItemListener {
         }
         if (VIEWERS_ORDER.length() > 0) {
             Arrays.stream(VIEWERS_ORDER.split(","))
-                    .map(key -> key.startsWith(".")
-                            ? "org.apache.jmeter.visualizers" + key //$NON-NLS-1$
-                            : key)
+                    .map(this::expandToClassname)
                     .forEach(key -> {
                         ResultRenderer renderer = map.remove(key);
                         if (renderer != null) {
@@ -490,10 +491,17 @@ implements ActionListener, TreeSelectionListener, Clearable, ItemListener {
         }
         // Add remaining (plugins or missed in property)
         map.values().forEach(renderer -> selectRenderPanel.addItem(renderer));
-        nodesModel.setSelectedItem(textObject); // preset to "Text" option
+        nodesModel.setSelectedItem(defaultObject); // preset to "Text" option or the first option from the view.results.tree.renderers_order property
         return selectRenderPanel;
     }
 
+    private String expandToClassname(String name) {
+        if (name.startsWith(".")) {
+            return "org.apache.jmeter.visualizers" + name; // $NON-NLS-1$
+        }
+        return name;
+    }
+
     /** {@inheritDoc} */
     @Override
     public void actionPerformed(ActionEvent event) {

@asfimport
Copy link
Collaborator Author

@pmouawad (migrated from Bugzilla):
Hi Felix,
Makes sense to me.

Regards

@asfimport
Copy link
Collaborator Author

@FSchumacher (migrated from Bugzilla):
Will be contained in the next version of JMeter.

@vlatko606 can you try the next nightly and report back, if it works for you?

commit 243e0d1
AuthorDate: Tue Feb 11 23:33:21 2020 +0100

Use order property for renderes to select default renderer

Use first renderer from view.results.tree.renderers_order property as default in View Results Tree

https://github.com/apache/jmeter/issues/5235

.../visualizers/ViewResultsFullVisualizer.java | 24 ++++++++++++++--------
xdocs/changes.xml | 2 ++
2 files changed, 18 insertions(+), 8 deletions(-)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant