java - java代码中的jMeter图形结果

标签 java graph jmeter

我有一个类以这种方式将我的结果写入文件:

<httpSample t="266" lt="235" ts="1430124707554" s="true" lb="" rc="200" rm="OK" tn=" 1-1" dt="text" by="56440"/>

我怎样才能像这里一样创建图表 http://www.metaltoad.com/blog/plotting-your-load-test-jmeter使用 JMeter 结果?

这是我的工作函数:

public void jMeterTest(){
            // JMeter Engine
        StandardJMeterEngine jmeter = new StandardJMeterEngine();

        //JMeter initialization (properties, log levels, locale, etc)
        JMeterUtils.setJMeterHome("/usr/share/jmeter");
        JMeterUtils.loadJMeterProperties("/usr/share/jmeter/bin/jmeter.properties");

        //JMeterUtils.initLogging();// you can comment this line out to see extra log messages of i.e. DEBUG level
        JMeterUtils.initLocale();

        // JMeter Test Plan, basic all u JOrphan HashTree
        HashTree testPlanTree = new HashTree();

        // HTTP Sampler
        HTTPSampler httpSampler = new HTTPSampler();
        httpSampler.setDomain("192.168.1.5");
        httpSampler.setPort(9206);
        httpSampler.setPath("/site/showing");
        httpSampler.setMethod("GET");

        // Loop Controller
        LoopController loopController = new LoopController();
        loopController.setLoops(1);
        loopController.addTestElement(httpSampler);
        loopController.setFirst(true);
        loopController.initialize();

        // Thread Group
        ThreadGroup threadGroup = new ThreadGroup();
        threadGroup.setNumThreads(7);
        threadGroup.setRampUp(1);
        threadGroup.setSamplerController(loopController);

        // Test Plan
        TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");

        // Construct Test Plan from previously initialized elements
        testPlanTree.add("testPlan", testPlan);
        testPlanTree.add("loopController", loopController);
        testPlanTree.add("threadGroup", threadGroup);
        testPlanTree.add("httpSampler", httpSampler);

        Summariser summer = null;
        String summariserName = JMeterUtils.getPropDefault("summariser.name", "summary");//$NON-NLS-1$
        if (summariserName.length() > 0) {
            summer = new Summariser(summariserName);
        }


        String home = System.getProperty("user.home");
        String logFile = home + "/.platform/Results.jtf";
        ResultCollector logger = new ResultCollector(summer);
        logger.setFilename(logFile);

        testPlanTree.add(testPlanTree.getArray()[0], logger);


        // Run Test Plan
        jmeter.configure(testPlanTree);
        jmeter.run();

    }

感谢阅读!

最佳答案

您可以使用 Chart 库来绘制它,例如:HighChart、Chartjs...从您现有的 JTL 文件绘制图形。 (请注意,在上面的代码中,您正在生成一个 JTF 文件,它应该是 JTL 文件)。 就我而言,我使用 CanvasJS 绘制图形 创建 ajax 调用以加载文件:

$.ajax({
    type: "GET",
    url: "/resources/data/report.jtl",
    dataType: "text",
    success: function (data) { processData(data); }
});

从JTL文件中读取数据的函数:

function processData(allText) {
    var allLinesArray = allText.split('\n');
    if (allLinesArray.length > 0) {
        var dataPoints = [];
        for (var i = 0; i <= allLinesArray.length - 1; i++) {
            var rowData = allLinesArray[i].split(',');
            if(rowData && rowData.length > 1)
                dataPoints.push({ label: rowData[0], y: parseInt(rowData[11]) });
        }
        chart.options.data[0].dataPoints = dataPoints;
        chart.render();
    }
}

之后创建新图表并渲染它以供查看:

var chart = new CanvasJS.Chart("chartContainer4", {
    theme: "theme4",
    zoomEnabled:true,
    exportEnabled: true,
    zoomType: "xy",
    animationEnabled: true,
    animationDuration: 100,
    axisX:{
        minimum: 0,
        title: "Execution Time",
    },
    axisY:{
        minimun: 0,
        title: "Number of VUsers"
    },
    title: {
        text: "Threads Over Time"
    },
    data: [
    {
        type: "spline",
        lineThickness: 2,
        dataPoints: []
    }
    ]
});

提前可以看看Canvasjs了解更多信息。 希望对您有所帮助。

关于java - java代码中的jMeter图形结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29892153/

相关文章:

java - 在 powershell 中将参数传递给程序时遇到问题

python - 重新访问 A* 搜索中访问过的节点

c++ - 使用 Boost Graph 读取 GraphML 文件时使用 vertex_name

groovy - 从 Bean shell/JSR223 调用事务 Controller 或 HTTP 采样器

java - 在 java 中使用 final 关键字从 int 到 byte 的类型转换问题

java - for循环导致异常

java - 在 JFrame 从 while 循环返回之前,JWindow 不会重新绘制

algorithm - 如何生成具有最大松弛度的图形?

jmeter - jmeter中是否可以自定义断言消息

java - JMeter如何确认最大吞吐量?