ngrinder项目-本地调试遇到的坑

前提-maven mirrors配置

 <mirrors><!--阿里公有仓库--><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
</mirrors>

问题1

描述:ngrinder-groovy3.4.jar包下载失败

ngrinder3.4创建的maven项目-ngrinder-groovy3.4依赖一直下载失败-解决办法

通过运行脚本,报错信息如下:

Cannot resolve org.ngrinder:ngrinder-groovy:pom:3.4 failed to transfer from https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of ngrinder.maven.repo has elapsed or updates are forced. Original error: Could not transfer artifact org.ngrinder:ngrinder-runtime:pom:3.4.4 from/to ngrinder.maven.repo (https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases): transfer failed for https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases/org/ngrinder/ngrinder-groovy/3.4/ngrinder-groovy-3.4.pom

解决:下载ngrinder-groovy-3.4.jar

1、通过运行脚本,报错信息可以看到,ngrinder-groovy-3.4.jar对应的ngrinder的github远程仓库地址为 https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases

下载ngrinder-groovy-3.4.jar,如下图:

https://github.com/naver/ngrinder/tree/ngrinder.maven.repo/releases/org/ngrinder/ngrinder-groovy/3.4

点击下载 ngrinder-groovy-3.4.jar。

2、存储到项目对应的maven目录下,和线上仓库相同路径。

并且放入maven仓库对应的目录下(maven配置参考地址),如下:

C:\D\soft\Maven_Repo\org\ngrinder\ngrinder-groovy\3.4

刷新maven依赖,后依赖问题解决。

刷新maven依赖,后依赖问题解决。

###############

问题2

描述:本地调试脚本时,提示错误,如下

java.lang.RuntimeException: Please add -javaagent:C:\D\soft\Maven_Repo\net\sf\grinder\grinder-dcr-agent\3.9.1\grinder-dcr-agent-3.9.1.jar in 'Run As JUnit' vm argument.

解决:配置grinder-dcr-agent-3.9.1.jar

这个错误信息指示你需要在运行JUnit测试时,向Java虚拟机(JVM)添加一个Java代理(javaagent)参数。这个参数是为了加载grinder-dcr-agent-3.9.1.jar,它是Grinder分布式测试框架的一部分,用于监控和管理性能测试。

要解决这个问题,在你的IDEA中按照以下步骤操作:

IntelliJ IDEA:

  1. 打开运行/调试配置:在顶部菜单中选择“Run” -> “Edit Configurations...”。

  2. 选择或创建JUnit配置:在弹出的窗口中,找到你的测试类对应的JUnit配置,或者点击左上角的“+”号添加一个新的JUnit配置。

  3. 配置VM选项:在配置界面中,找到“VM options”字段。

  4. 添加代理参数:在此字段中,输入与Eclipse中相同的Java代理参数:-ea -javaagent:C:\D\soft\Maven_Repo\net\sf\grinder\grinder-dcr-agent\3.9.1\grinder-dcr-agent-3.9.1.jar,如图

  5. 检查下载的maven仓库中,C:\D\soft\Maven_Repo\net\sf\grinder\grinder-dcr-agent\3.9.1\grinder-dcr-agent-3.9.1.jar是正确的,并且该JAR文件存在于指定位置。如果路径有误,你需要根据实际情况调整,确保grinder-dcr-agent-3.9.1.jar文件正常。如果下载的文件不全,则删除不完整的文件后,重新下载。

  6. 应用并运行:点击“OK”应用设置,然后你可以直接运行这个配置来执行测试。运行正常。如图注意:本地调试ngrinder时,不需要启动agent客户端。

问题3:ngrinder-runtime下载失败

添加pom.xml 中添加 maven如下
        <dependency><groupId>org.ngrinder</groupId><artifactId>ngrinder-runtime</artifactId><version>3.4.4</version></dependency>
刷新maven时,idea项目提示如下错误

Cannot resolve org.ngrinder:ngrinder-runtime:pom:3.4.4 failed to transfer from https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of ngrinder.maven.repo has elapsed or updates are forced. Original error: Could not transfer artifact org.ngrinder:ngrinder-runtime:pom:3.4.4 from/to ngrinder.maven.repo (https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases): transfer failed for https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases/org/ngrinder/ngrinder-runtime/3.4.4/ngrinder-runtime-3.4.4.pom

错误提示表明

1、没有下载成功的依赖包名为:ngrinder-runtime-3.4.4.jar

2、通过远端仓库路径,对应本地仓库中没有下载成功的文件:maven本地仓库地址 + org/ngrinder/ngrinder-runtime/3.4.4/目录下,如图

3、也可以在本地maven仓库地址下搜索关键字:lastUpdated,也能查到上图未下载完成的文件。

4、可以通过maven下载失败的提示,从github,ngrinder远程仓库下载,远程仓库地址为:

https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases

从远端参考下载jar包

下载ngrinder-runtime-3.4.4.jar文件后,放入对应的 本地maven本地仓库路径,刷新maven依赖。问题解决。

注意点

注意1:ngrinder-groovy依赖包

ngrinder的基础依赖,必须下载正常,否则几乎脚本的所有内容都报红。

        <dependency><groupId>org.ngrinder</groupId><artifactId>ngrinder-groovy</artifactId><version>${ngrinder.version}</version><scope>provided</scope></dependency>

读文件&发起http请求,只需要这一个依赖就足够了。

 注意2:读文件操作,和设置headers参数设置
@BeforeProcesspublic static void beforeProcess() {// 设置header参数List<NVPair> headerList = new ArrayList<NVPair>()headerList.add(new NVPair("Content-Type", "application/json"));headers = headerList.toArray()//获取数据,文件:/resources/phone.txtString path = this.getClassLoader().getResource("phone.txt").getPath()phoneNumList = new File(path).readLines(); #三行内容为 [111, 222, 333]}

注意3:json格式处理

如果接口返回的时json格式,压测脚本应导入工具类RecorderUtils

使用RecorderUtils类时,需要maven导入ngrinder-runtime-3.4.4.jar包。

        <dependency><groupId>org.ngrinder</groupId><artifactId>ngrinder-runtime</artifactId><version>3.4.4</version></dependency>

压测脚本: 

import org.ngrinder.recorder.RecorderUtils
import org.hamcrest.Matchers

#使用工具类的RecorderUtils.parseRequestToJson 方法解析json数据,使用如下:
def json_object = RecorderUtils.parseRequestToJson(result.getText()) println(json_object); println(json_object['msg']);

#assert方式如下 assertThat(json_object.get('msg'), Matchers.is("success")) assertThat(1,Matchers.is(1))
assertEquals(1,1)

注意4:生成随机字符串

需要maven导入依赖:

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version> <!-- 可以指定为最新的稳定版本 -->
</dependency>

压测脚本编写导入RandomStringUtils

  1. 数字:RandomStringUtils.randomNumeric(length);

  2. 字母:RandomStringUtils.randomAlphabetic(length);

  3. 字母加数字:RandomStringUtils.randomAlphanumeric(length);

  4. 所有ASCCII字符:RandomStringUtils.randomAscii(length);

  5. 自定义混合字符:RandomStringUtils.randomAscii(length, string);

压测脚本:

import org.apache.commons.lang.RandomStringUtils
RandomStringUtils.randomNumeric(3)

pom.xml文件 参考

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>ngrinder</groupId><artifactId>www.baidu.com</artifactId><version>0.0.1</version><properties><ngrinder.version>3.4</ngrinder.version><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><repositories><!--<repository><id>ngrinder.maven.repo</id><url>https://github.com/naver/ngrinder/raw/ngrinder.maven.repo/releases</url></repository>--></repositories><dependencies><dependency><groupId>org.ngrinder</groupId><artifactId>ngrinder-groovy</artifactId><version>${ngrinder.version}</version><scope>provided</scope></dependency><dependency><groupId>net.sf.grinder</groupId><artifactId>grinder-core</artifactId><version>3.9.1</version></dependency><dependency><groupId>org.ngrinder</groupId><artifactId>grinder</artifactId><version>3.9.1-patch</version></dependency><dependency><groupId>net.sf.grinder</groupId><artifactId>grinder-http</artifactId><version>3.9.1</version></dependency><dependency><groupId>net.sf.grinder</groupId><artifactId>grinder-httpclient</artifactId><version>3.9.1</version></dependency><dependency><groupId>net.sf.grinder</groupId><artifactId>grinder-dcr-agent</artifactId><version>3.9.1</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.1</version></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.3.168</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version></dependency><dependency><groupId>commons-dbcp</groupId><artifactId>commons-dbcp</artifactId><version>1.4</version></dependency><dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2.2</version></dependency><!-- Json conversion --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.2</version></dependency><dependency><groupId>junit</groupId><artifactId>junit-dep</artifactId><version>4.9</version><scope>compile</scope></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.22</version></dependency><!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.22</version></dependency><!-- Commons --><dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.0.1</version></dependency><dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>compile</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-eclipse-plugin</artifactId><version>2.9</version><configuration><additionalProjectnatures><projectnature>org.eclipse.jdt.groovy.core.groovyNature</projectnature><projectnature>org.eclipse.m2e.core.maven2Nature</projectnature></additionalProjectnatures></configuration></plugin></plugins></build>
</project>

参考:

https://www.cnblogs.com/xiaowei89426/p/9365211.html

nGrinder介绍、编写脚本与执行(完整版)_ngrinder 压测脚本-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/5808.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

借助Aspose.SVG图像控件,在线将 PNG 转换为 XML

Aspose.SVG for .NET 是用于SVG文件处理的灵活库&#xff0c;并且与其规范完全兼容。API可以轻松加载&#xff0c;保存和转换SVG文件&#xff0c;以及通过其文档对象模型&#xff08;DOM&#xff09;读取和遍历文件的元素。API独立于任何其他软件&#xff0c;使开发人员无需使用…

分布式与一致性协议之Raft算法(一)

Raft算法 概述 Raft算法属于Multi-Paxos算法&#xff0c;它在兰伯特Multi-Paxos思想的基础上做了一些简化和限制&#xff0c;比如日志必须是连续的&#xff0c;只支持领导者(Leader)、跟随者(Follwer)和候选人(Candidate)3种状态。在理解和算法实现上&#xff0c;Raft算法相对…

基于Springboot的大学生社团活动平台

基于SpringbootVue的大学生社团活动平台设计与实现 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringbootMybatis工具&#xff1a;IDEA、Maven、Navicat 系统展示 用户登录 首页 社团信息 社团活动 社团论坛 社团资讯 后台登录 后台首页 学生管理 社…

医疗大模型华佗GPT-2:医学问答超越GPT-4,通过2023年国家执业药师考试

前言 随着人工智能技术的快速发展&#xff0c;特别是在自然语言处理(NLP)领域&#xff0c;大型预训练模型如GPT系列已经显示出在多个领域的强大应用潜力。最近&#xff0c;华佗GPT-2医疗大模型的发布&#xff0c;不仅标志着人工智能在医学领域的一大进步&#xff0c;更是在202…

Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发

一、写在开头 最近一直在更新《Java成长计划》这个专栏&#xff0c;主要是Java全流程学习的一个记录&#xff0c;目前已经更新到Java并发多线程部分&#xff0c;后续会继续更新&#xff1b;而今天准备开设一个全新的专栏 《EfficientFarm》。 EfficientFarm&#xff1a;高效农…

eaapp账号注销怎么操作 简单几步完成ea账号注销

eaapp账号注销怎么操作 简单几步完成ea账号注销 有许多玩家在注册ea平台账户的时候&#xff0c;会出现账号输错&#xff0c;地区选择错误等问题&#xff0c;导致自己没有注册成功心仪的账号&#xff0c;想要将账号注销却又不知道该如何操作&#xff0c;今天小编就为大家带来详…

mac idea 下载spring 源码遇到的问题

一、Kotlin: warnings found and -Werror specified 这个问题网上看了很多文章多说是缺少cglib、objenesis包。然后执行了 实际还是没有什么用 解决&#xff1a; 最后自己看了一下前面一个警告。说的就是版本太低。所以我觉得是这个前置问题导致的 然后搜索了改这个Kotlin版本…

springboot项目组合定时器schedule注解实现定时任务

springboot项目组合定时器schedule注解实现定时任务&#xff01; 创建好springboot项目后&#xff0c;需要在启动类上增加注解开启定时器任务 下图所示&#xff1a; 增加这个注解&#xff0c;启动项目&#xff0c; package com.example.scheduledemo.util;import org.springf…

C++-5

完成特殊成员函数 #include <iostream>using namespace std;class Person {string name;int *age; public://构造&#xff0c;析构&#xff0c;拷贝构造&#xff0c;拷贝赋值Person():age(new int ){}Person(int *age,string name):name(name),age(new int (*(age))){}~…

unity制作app(2)--主界面

1.先跳转过来&#xff0c;做一个空壳&#xff01;新增场景main为4号场景&#xff01; 2.登录成功跳转到四号场景&#xff01; 2.在main场景中新建canvas&#xff0c;不同的状态计划用不同的panel来设计&#xff01; 增加canvas和底图image 3.突然输不出来中文了&#xff0c;浪…

【C语言加油站】字符函数与字符串函数

字符函数与字符串函数 导言一、字符分类函数1.1 字符分类函数的用法 二、字符转换函数2.1 字符转换函数的用法 三、字符串函数3.1 成员3.2 strlen函数3.2.1 size_t类型3.2.2 strlen的易错点3.2.2 strlen的使用3.2.3 strlen与sizeof 3.3 strcpy函数和strncpy函数3.3.1 strcpy和s…

unity 专项一 localPosition与anchoredPosition(3D)的区别

一 、RectTransform 概念 1、RectTransform继承自Transform&#xff0c;用于描述矩形的坐标(Position)&#xff0c;尺寸(Size)&#xff0c;锚点(anchor)和中心点(pivot)等信息&#xff0c;每个2D布局下的元素都会自动生成该组件。 2、当我们在处理UI组件时&#xff0c;往往容易…

VTK 的可视化方法:Glyph

VTK 的可视化方法&#xff1a;Glyph VTK 的可视化方法&#xff1a;Glyph标量、向量、张量将多边形数据的采集点法向量标记成锥形符号参考 VTK 的可视化方法&#xff1a;Glyph 模型的法向量数据是向量数据&#xff0c;因此法向量不能像前面讲到的通过颜色映射来显示。但是可以通…

【计算机网络】网络层总结

目录 知识梗概 IP地址 子网划分 IP包头格式 路由 网络层协议 ARP病毒/ARP欺骗 知识梗概 IP地址 IP相关介绍&#xff1a;机器之间需要交流&#xff0c;必须要一个地址才能找到对应的主机&#xff0c;IP地址是主机的一种表示&#xff0c;保证主机之间的正常通信&#xff…

LabVIEW高效目标跟踪系统

LabVIEW高效目标跟踪系统 随着机器视觉技术的飞速发展&#xff0c;设计和实现高效的目标跟踪系统成为了众多领域关注的焦点。基于LabVIEW平台&#xff0c;结合NI Vision机器视觉库&#xff0c;开发了一种既高效又灵活的目标跟踪系统。通过面向对象编程方法和队列消息处理器程序…

File contains parsing errors: file:///etc/yum.repos.d/nginx.repo报错解决,文件配置出现问题

执行yum指令出现以下错误&#xff1a; 解决方案&#xff1a;yum的配置文件出现问题&#xff0c; 先删除yum.repos.d目录下所有文件 rm -f /etc/yum.repos.d/* 然后重新下载阿里的资源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.…

无人机+大载重+长航时:油电混动多旋翼无人机技术详解

多旋翼无人机是一种具有三个及以上旋翼轴的特殊的无人驾驶旋翼飞行器。具有稳定性强、操控简单、勤务性高、价格便宜等优势&#xff0c;因此在市场上的应用非常广泛。此外&#xff0c;利用地面供电的绳系多旋翼通过电缆向多旋翼持续传输电能&#xff0c;可以大大提高多旋翼的空…

【Java EE】MyBatis使用注解操作数据库

文章目录 &#x1f340;参数传递&#x1f334;增(Insert)&#x1f338;返回主键 &#x1f343;删(Delete)&#x1f333;改(Update)&#x1f332;查(Select)&#x1f338;起别名&#x1f338;结果映射&#x1f338;开启驼峰命名(推荐) ⭕总结 &#x1f340;参数传递 需求: 查找…

邊緣智能2024—AI開發者峰會(5月9日)數碼港即將啟幕

隨著 AI &#xff08;人工智能&#xff09;技術的飛速發展&#xff0c;我們正迎來邊緣計算智能化與分布式AI深度融合的新時代&#xff0c;共同演繹分布式智能創新應用的壯麗篇章。"邊緣智能2024 - AI開發者峰會"將聚焦於這一前沿領域&#xff0c;探討如何通過邊緣計算…

网络安全知识点

网络安全 1&#xff0e; 网络安全的定义&#xff0c;网络安全的属性。 定义&#xff1a;针对各种网络安全威胁研究其安全策略和机制&#xff0c;通过防护、检测和响应&#xff0c;确保网络系统及数据的安全性。 属性&#xff1a;机密性 认证&#xff08;可鉴别性&#xff09…