moco框架接口命中率统计实践
在日常的工作中我们经常会用到各种各样的moco
框架,我选用的就是二次开发moco API
,增加了一些新功能也做了一些封装。感觉自己用起来还是非常舒服的,几分钟可以构建一个简单的测试服务,用来测试性能框架各种功能。
在之前的性能测试Demo
中,我本机起了一个moco
服务,写了一个简单的GET
接口,用性能测试框架进行压力测试。结果喜人,单机配置1G内存的FunTester测试框架对本机的moco
服务QPS
打开了50000+
。有图为证:
在这个过程中,发现moco API
中已经有提供计数器的功能,就是com.github.dreamhead.moco.MocoRequestHit
类,提供moco
接口命中统计的功能。
这个类功能较为简单,提供的方法比较少,都是一些断言的功能。
首先分享一下基本语法:
def monitor = getHitMonitor()
def server = getServer(12345, "${getMark()}.log", monitor)
monitor.verify(urlStartsWith("/b"), atLeast(2))`
其中monitor
是创建好的MocoRequestHit
对象,通过构造方法传入httpserver
中,然后在httpserver
运行中对其中的接口命中率进行断言。
断言语法如下:
try {
monitor.verify(urlStartsWith("/m"), never())
monitor.verify(urlMatcher("/t"), once())
monitor.verify(urlOnly("/a"), times(1))
monitor.verify(urlEndWith("/b"), atLeast(2))
monitor.verify(urlContain("/"), atMost(10))
monitor.verify(urlEndWith("/"), between(12, 22))
monitor.verify(unexpected(), never())
} catch (e) {
logger.warn(e)
}
这里需要用try-catch
捕获异常,不然当前线程终止,无法执行后面的结束操作。
下面我手动翻译一下moco API
文档。
- never():从来没有被调用过;
- once():只被调用过一次;
- times(int i):该方法被调用过i次;
- atLeast(int i):该方法至少被调用过i次;
- atMost(int i):该方法最多被调用过i次;
- between(int i,int j):该方法被调用次数在
i
和j
之间; - unexpected():未命中;
下面分享一下之前写过的moco API
文档的文章:
moco API
- 解决moco框架API在post请求json参数情况下query失效的问题
- 给moco API添加limit功能
- 给moco API添加random功能
- 解决moco框架API在cycle方法缺失的问题
- 五行代码构建静态博客
- moco API模拟框架视频讲解(上)
- moco API模拟框架视频讲解(中)
- moco API模拟框架视频讲解(下)
- 如何mock固定QPS的接口
- mock延迟响应的接口
- moco固定QPS接口升级补偿机制
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
2020-05-24 如何维护自动化测试