All Downloads are FREE. Search and download functionalities are using the official Maven repository.

kg.apc.jmeter.dummy.DummyPanel Maven / Gradle / Ivy

The newest version!
package kg.apc.jmeter.dummy;

import kg.apc.jmeter.gui.GuiBuilderHelper;
import kg.apc.jmeter.modifiers.DummySubPostProcessor;
import kg.apc.jmeter.samplers.DummySampler;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.testelement.TestElement;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.reflect.ClassFinder;

import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.util.Objects;

public class DummyPanel extends JPanel {
    private JCheckBox isSuccessful;
    private JTextField responseCode;
    private JTextField responseMessage;
    private JTextField responseTime;
    private JTextArea responseData;
    private JTextArea requestData;
    private JCheckBox isWaiting;
    private JTextField latency;
    private JTextField connect;
    private JTextField url;
    private JComboBox resultClass;

    public DummyPanel() {
        super(new GridBagLayout());
    }

    public void configure(TestElement element) {
        isSuccessful.setSelected(element.getPropertyAsBoolean(DummyElement.IS_SUCCESSFUL));
        isWaiting.setSelected(element.getPropertyAsBoolean(DummyElement.IS_WAITING));
        responseCode.setText(element.getPropertyAsString(DummyElement.RESPONSE_CODE));
        responseMessage.setText(element.getPropertyAsString(DummyElement.RESPONSE_MESSAGE));
        requestData.setText(element.getPropertyAsString(DummyElement.REQUEST_DATA));
        responseData.setText(element.getPropertyAsString(DummyElement.RESPONSE_DATA));
        responseTime.setText(element.getPropertyAsString(DummyElement.RESPONSE_TIME));
        latency.setText(element.getPropertyAsString(DummyElement.LATENCY));
        connect.setText(element.getPropertyAsString(DummyElement.CONNECT));
        url.setText(element.getPropertyAsString(DummyElement.URL));
        resultClass.setSelectedItem(element.getPropertyAsString(DummyElement.RESULT_CLASS));
    }

    public void modifyTestElement(TestElement te) {
        DummyElement dummy;
        if (te instanceof DummySampler) {
            dummy = ((DummySampler) te).getDummy();
        } else if (te instanceof DummySubPostProcessor) {
            dummy = ((DummySubPostProcessor) te).getDummy();
        } else {
            return;
        }

        dummy.setSimulateWaiting(isWaiting.isSelected());
        dummy.setSuccessful(isSuccessful.isSelected());
        dummy.setResponseCode(responseCode.getText());
        dummy.setResponseMessage(responseMessage.getText());
        dummy.setRequestData(requestData.getText());
        dummy.setResponseData(responseData.getText());
        dummy.setResponseTime(responseTime.getText());
        dummy.setLatency(latency.getText());
        dummy.setConnectTime(connect.getText());
        dummy.setURL(url.getText());
        dummy.setResultClass(Objects.requireNonNull(resultClass.getSelectedItem()).toString());
    }

    public void initFields() {
        isSuccessful.setSelected(true);
        isWaiting.setSelected(true);
        responseCode.setText("200");
        responseMessage.setText("OK");
        requestData.setText("Dummy Sampler used to simulate requests and responses\nwithout actual network activity. This helps debugging tests.");
        responseData.setText("Dummy Sampler used to simulate requests and responses\nwithout actual network activity. This helps debugging tests.");
        responseTime.setText("${__Random(50,500)}");
        latency.setText("${__Random(1,50)}");
        connect.setText("${__Random(1,5)}");
        url.setText("");
        resultClass.setSelectedItem(SampleResult.class.getCanonicalName());
    }

    public JPanel init() {
        GridBagConstraints labelConstraints = new GridBagConstraints();
        labelConstraints.anchor = GridBagConstraints.FIRST_LINE_END;

        GridBagConstraints editConstraints = new GridBagConstraints();
        editConstraints.anchor = GridBagConstraints.FIRST_LINE_START;
        editConstraints.weightx = 1.0;
        editConstraints.fill = GridBagConstraints.HORIZONTAL;


        addToPanel(this, labelConstraints, 0, 0, new JLabel("Successful sample: ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 0, isSuccessful = new JCheckBox());
        addToPanel(this, labelConstraints, 0, 1, new JLabel("Response Code (eg 200): ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 1, responseCode = new JTextField(20));

        editConstraints.insets = new java.awt.Insets(2, 0, 0, 0);
        labelConstraints.insets = new java.awt.Insets(2, 0, 0, 0);

        addToPanel(this, labelConstraints, 0, 2, new JLabel("Response Message (eg OK): ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 2, responseMessage = new JTextField(20));
        addToPanel(this, labelConstraints, 0, 3, new JLabel("Connect Time (milliseconds): ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 3, connect = new JTextField(20));
        addToPanel(this, labelConstraints, 0, 4, new JLabel("Latency (milliseconds): ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 4, latency = new JTextField(20));
        addToPanel(this, labelConstraints, 0, 5, new JLabel("Response Time (milliseconds): ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 5, responseTime = new JTextField(20));
        addToPanel(this, labelConstraints, 0, 6, new JLabel("Simulate Response Time (sleep): ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 6, isWaiting = new JCheckBox());

        editConstraints.insets = new java.awt.Insets(4, 0, 0, 0);
        labelConstraints.insets = new java.awt.Insets(4, 0, 0, 0);

        addToPanel(this, labelConstraints, 0, 7, new JLabel("Request Data: ", JLabel.RIGHT));
        editConstraints.fill = GridBagConstraints.BOTH;
        requestData = new JTextArea();
        addToPanel(this, editConstraints, 1, 7, GuiBuilderHelper.getTextAreaScrollPaneContainer(requestData, 10));

        addToPanel(this, labelConstraints, 0, 8, new JLabel("Response Data: ", JLabel.RIGHT));
        editConstraints.fill = GridBagConstraints.BOTH;

        responseData = new JTextArea();
        addToPanel(this, editConstraints, 1, 8, GuiBuilderHelper.getTextAreaScrollPaneContainer(responseData, 10));

        addToPanel(this, labelConstraints, 0, 9, new JLabel("URL: ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 9, url = new JTextField());

        String[] classesThatExtend;
        try {
            String[] paths = JMeterUtils.getSearchPaths();
            Class[] lookup = {SampleResult.class};
            classesThatExtend = ClassFinder.findClassesThatExtend(paths, lookup).toArray(new String[0]);
            if (classesThatExtend.length < 1) {
                throw new IOException("Go to default");
            }
        } catch (IOException e) {
            classesThatExtend = new String[]{SampleResult.class.getCanonicalName()};
        }
        resultClass = new JComboBox<>(classesThatExtend);
        addToPanel(this, labelConstraints, 0, 10, new JLabel("SampleResult class: ", JLabel.RIGHT));
        addToPanel(this, editConstraints, 1, 10, resultClass);

        JPanel container = new JPanel(new BorderLayout());
        container.add(this, BorderLayout.NORTH);
        return container;
    }

    private void addToPanel(JPanel panel, GridBagConstraints constraints, int col, int row, JComponent component) {
        constraints.gridx = col;
        constraints.gridy = row;
        panel.add(component, constraints);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy