jmeter源码---Mainframe

33 篇文章 3 订阅
31 篇文章 6 订阅

概述

创建jmeter主界面,包含菜单、测试树、GUI组件;这里用到最多的是swing相关知识进行主界面的布局,涉及的组件有JTree、JButton、JPanel、JScrollPane、JTextArea、JLabel、JDialog、JSplitPane、JCheckBox、JFileChooser等

介绍

该类实现了TestStateListener, Remoteable, DropTargetListener, Clearable, ActionListener
其中有运行主要的方法MainFrame(TreeModel treeModel, JMeterTreeListener treeListener)、init()、testStarted()、testEnded()

设置默认图标

private final String iconSize = JMeterUtils.getPropDefault(JMeterToolBar.TOOLBAR_ICON_SIZE, JMeterToolBar.DEFAULT_TOOLBAR_ICON_SIZE); 
/** An image which is displayed when a test is running. */
private final ImageIcon runningIcon = JMeterUtils.getImage("status/" + iconSize +"/user-online-2.png");
/** An image which is displayed when a test is not currently running. */
private final ImageIcon stoppedIcon = JMeterUtils.getImage("status/" + iconSize +"/user-offline-2.png");
/** An image which is displayed to indicate FATAL, ERROR or WARNING. */
private final ImageIcon warningIcon = JMeterUtils.getImage("status/" + iconSize +"/pictogram-din-w000-general.png")

构造函数

public MainFrame(TreeModel treeModel, JMeterTreeListener treeListener) {……}

创建测试树,并绑定鼠标和键盘事件、热键等

private JTree makeTree(TreeModel treeModel, JMeterTreeListener treeListener) {

    ……
    treeListener.setJTree(treevar);
    treevar.addTreeSelectionListener(treeListener);
    treevar.addMouseListener(treeListener);
    treevar.addKeyListener(treeListener);

    // enable drag&drop, install a custom transfer handler
    treevar.setDragEnabled(true);
    treevar.setDropMode(DropMode.ON_OR_INSERT);
    treevar.setTransferHandler(new JMeterTreeTransferHandler());
    addQuickComponentHotkeys(treevar);
    return treevar;
}

init函数

初始化GUI组件和布局:
JPanel all:整个界面
setJMenuBar(menuBar):设置菜单栏
createToolBar:创建工具栏
JSplitPane treeAndMain:创建分离组件将treePanel和topAndDown左右分割
createTreePanel :创建左侧展示数面板treePanel
JSplitPane topAndDown:创建分离组件将mainPanel和logPanel上下分割
createMainPanel:创建主面板mainPanel
createLoggerPanel:创建日志面板logPanel
绑定监听事件

private void init() {
    menuBar = new JMeterMenuBar();
    setJMenuBar(menuBar);
    JPanel all = new JPanel(new BorderLayout());
    all.add(createToolBar(), BorderLayout.NORTH);

    JSplitPane treeAndMain = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);

    treePanel = createTreePanel();
    treeAndMain.setLeftComponent(treePanel);

    JSplitPane topAndDown = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
    topAndDown.setOneTouchExpandable(true);
    topAndDown.setDividerLocation(0.8);
    topAndDown.setResizeWeight(.8);
    topAndDown.setContinuousLayout(true);
    topAndDown.setBorder(null); 
    if (!DISPLAY_LOGGER_PANEL) {
        topAndDown.setDividerSize(0);
    }
    mainPanel = createMainPanel();

    logPanel = createLoggerPanel();
    errorsAndFatalsCounterLogTarget = new ErrorsAndFatalsCounterLogTarget();
    GuiPackage.getInstance().getLogEventBus().registerEventListener(logPanel);
    GuiPackage.getInstance().getLogEventBus().registerEventListener(errorsAndFatalsCounterLogTarget);

    topAndDown.setTopComponent(mainPanel);
    topAndDown.setBottomComponent(logPanel);

    treeAndMain.setRightComponent(topAndDown);

    treeAndMain.setResizeWeight(.2);
    treeAndMain.setContinuousLayout(true);
    all.add(treeAndMain, BorderLayout.CENTER);

    getContentPane().add(all);

    tree.setSelectionRow(1);
    addWindowListener(new WindowHappenings());
    // Building is complete, register as listener
    GuiPackage.getInstance().registerAsListener();
    setTitle(DEFAULT_TITLE);
    setIconImage(JMeterUtils.getImage("icon-apache.png").getImage());
    setWindowTitle(); // define AWT WM_CLASS string
    refreshErrorsTimer.start();
}

学习记录备忘

原文连接 http://blog.csdn.net/yue530tomtom/article/details/77994423

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache JMeter 源码(apache-jmeter-5.4.3_src.zip)可用于测试静态和动态资源、Web 动态应用程序的性能。 它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。 Apache JMeter 功能包括: 能够加载和性能测试许多不同的应用程序/服务器/协议类型: 网络 - HTTP、HTTPS(Java、NodeJS、PHP、ASP.NET,...) SOAP/REST 网络服务 FTP 通过 JDBC 数据库 LDAP 通过 JMS 的面向消息的中间件 (MOM) 邮件 - SMTP(S)、POP3(S) 和 IMAP(S) 本机命令或 shell 脚本 TCP Java 对象 全功能测试 IDE,允许快速记录测试计划(来自浏览器或本机应用程序)、构建和调试。 CLI 模式(命令行模式(以前​​称为非 GUI)/无头模式)从任何 Java 兼容操作系统(Linux、Windows、Mac OSX 等)加载测试 完整且可随时呈现的动态 HTML 报告 通过从最流行的响应格式、HTML、JSON、 XML或任何文本格式中提取数据的能力轻松关联 完全可移植性和100% Java 纯度。 完整的多线程框架允许多个线程并发采样和不同线程组同时采样不同功能。 缓存和离线分析/重放测试结果。 高度可扩展的核心: 可插拔采样器允许无限的测试功能。 可编写脚本的采样器(与 JSR223 兼容的语言,如Groovy和 BeanShell) 可以使用可插拔计时器选择多个负载统计信息。 数据分析和可视化插件允许极大的可扩展性和个性化。 函数可用于为测试提供动态输入或提供数据操作。 通过适用于 Maven、Gradle 和 Jenkins 的第3方开源库轻松实现持续集成。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值