性能工具之 Jmeter 通过 SpringBoot 工程启动

文章目录

    • 背景
    • 前置条件
    • 页面设计
    • 运行效果
    • 参考代码
      • 前端代码
      • 服务端接口
      • interface层代码
      • 接口实现层
      • 工具类
    • jmeter脚本
    • 小结

背景

Jmeter 平时性能测试工作一般都是通过命令行在 Linux 下执行,为了锻炼自己代码与逻辑能力,想 Jmeter 是否可以通过 springboot 工程启动,周末在家尝试写一写,一写原来需要处理很多事情,才可以启动起来,起来还是有很问题需要处理,下面是相应的代码,其实网上也有,但关键的是自己有意识收集知识,到用的时候能拿来改一改就用。

前置条件

需要在 linux 中配置 Jmeter,并且配置 Java 环境变量:

## 编辑
vi ~/.bash_profile

# jmeter:路径  根据自己事情情况修改
JMETER_HOME=/root/tools/apache-jmeter-5.1.1
PATH=$PATH:$HOME/bin:$JMETER_HOME/bin:
export PATH

## 执行生效
source ~/.bash_profile

页面设计

性能工具之 Jmeter 通过 SpringBoot 工程启动_第1张图片

运行效果

点击上传脚本,弹出对话框,点击上传,后台日志显示上传成功。

性能工具之 Jmeter 通过 SpringBoot 工程启动_第2张图片

点击启动,并且读取启动日志。
性能工具之 Jmeter 通过 SpringBoot 工程启动_第3张图片

点击停止。

性能工具之 Jmeter 通过 SpringBoot 工程启动_第4张图片

示意图说明:

通过访问 -> 调用 JAVA 代码-> 启动 shell命令-> 启动 Jmeter -> 获取启动日志

性能工具之 Jmeter 通过 SpringBoot 工程启动_第5张图片

参考代码

前端代码

以下参考代码:

DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <meta name="description" content="">
    <meta name="author" content="Mark Otto, Jacob Thornton, and Bootstrap contributors">
    <meta name="generator" content="Jekyll v3.8.6">
    <title>Jmeter启动title>

    <link rel="canonical" href="https://v4ing.bootcss.com/docs/4.3/examples/checkout/">

    
    
    <link href="asserts/css/bootstrap.min.css" th:href="@{/webjars/bootstrap/4.3.1/css/bootstrap.css}" rel="stylesheet">
    
    <meta name="theme-color" content="#563d7c">


    <style>
        .bd-placeholder-img {
            font-size: 1.125rem;
            text-anchor: middle;
            -webkit-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
        }

        @media (min-width: 768px) {
            .bd-placeholder-img-lg {
                font-size: 3.5rem;
            }
        }
    style>
    
    <link href="https://v4.bootcss.com/docs/4.3/examples/checkout/form-validation.css" rel="stylesheet">
head>
<body class="bg-light">
<div class="container">
    <div class="py-5 text-center">
        <img src="https://jmeter.apache.org/images/logo.svg" class="d-block mx-auto mb-4" alt="Apache JMeter">
        <p class="lead">The Apache JMeter™ application is open source software, a 100% pure Java application designed to
            load test functional behavior and measure performance. It was originally designed for testing Web
            Applications but has since expanded to other test functions.p>
    div>
    <div class="col-md-8 order-md-1">
        <h4 class="mb-3">上传脚本h4>
        <form>
            <input id="jmeterId" type="file"/>
            <a class="btn btn-lg btn-primary btn-block" value="上传脚本" onclick="submitupload()">上传脚本a>
        form>
        <form>
            <input id="jmeterParam" type="file"/>
            <a class="btn btn-lg btn-primary btn-block" value="上传参数" onclick="submitParm()">上传参数文件a>
        form>
        <h4 class="mb-3">运行h4>
        
        <form class="needs-validation" novalidate>
            <div class="row">
                <div class="col-md-6 mb-3">
                    <label for="jmeterName">压测脚本label>
                    <input type="text" class="form-control" id="jmeterName" name="jmeterName" placeholder="jmx file"
                           value="" required>
                    <div class="invalid-feedback">
                        jmx file
                    div>
                div>
                <div class="col-md-6 mb-3">
                    <label for="numberName">并发数label>
                    <input type="text" class="form-control" id="numberName" name="num" placeholder="并发数" value=""
                           required>
                    <div class="invalid-feedback">
                        并发数
                    div>
                div>
                <div class="col-md-6 mb-3">
                    <label for="duration">执行时间label>
                    <input type="text" class="form-control" id="duration" name="duration" placeholder="执行时间" value=""
                           required>
                    <div class="invalid-feedback">
                        并发数
                    div>
                div>
            div>
            <hr class="mb-4">
            <a class="btn btn-success" onclick="JmeterRun()" type="submit">运行a>
            <a class="btn btn-danger" onclick="Jmeterstop()" type="submit">停止a>
            <a class="btn btn-info" onclick="JmeterInfo()" data-toggle="modal" data-target="#myModal">查看信息a>
        form>
    div>
div>


<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <h4 class="modal-title">Jmeter运行日志h4>
            div>
            <div class="modal-body">
               <textarea rows="30" cols="20" id="JmeterMsg">textarea>
            div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Closebutton>

            div>
        div>
    div>
div>


<footer class="my-5 pt-5 text-muted text-center text-small">
    <p class="mb-1">© 2017-2019 Company Namep>
    <ul class="list-inline">
        <li class="list-inline-item"><a href="#">Privacya>li>
        <li class="list-inline-item"><a href="#">Termsa>li>
        <li class="list-inline-item"><a href="#">Supporta>li>
    ul>
footer>
div>
<script type="text/javascript" th:src="@{/webjars/jquery/3.3.1/jquery.js}">script>
<script th:src="@{/asserts/js/layer/layer.js}">script>
<script>window.jQuery || document.write('
                    
                    

你可能感兴趣的:(性能,spring,boot,java,jmeter)