阿里妹导读: 相信大家对 HSF 控制台并不陌生,它是我们测试 HSF 接口的首选工具。对于使用频率这么高的工具,有没有办法提高它的效率呢?本文将分享如何从调试的环节中一步一步缩短测试时间并最终实现一个 IDEA 的 HSF 插件。
文末福利:21 组实战带你学习 Java 面向对象编程。
在我们日常工作中,调试工作占据了很大一部分工作。同时伴随着服务化的兴起,各个领域拆分建设,应用数量也是越来越多,项目调试难度也在逐渐增大。
在项目调试过程中,一般应用的调试内容无非由以下三部分组成:
这三部分调试中,RPC 大部分时候又占据了绝大部分。目前主流 RPC 产品为 DUBBO,阿里内部则使用 HSF。虽有所差异,不过核心思路基本一致。
今天作者就来说说我们是如何来做 RPC 调试的。
有人说 RPC 调试有什么好说的,很简单啊。调试是很简单,但做到高效的调试是不简单的。
因为日常使用 PRC 调试的频率很高,如果能大幅提高调试效率那对日常工作的帮助绝对杠杠的。
既然要提效,我们先来看看现在是怎么做 RPC 调试的吧。
一般一次 RPC 调试由以下 4 个部分组成:
我们先看下使用普通 HSF 控制台完成一次 RPC 调试需要的时间。
需要 9 个步骤大概 1 分钟时间 + 构造入参大概 2 分钟,总计 3 分钟:
如果能将 3 分钟缩减为 5 秒钟。那么粗略估计每天使用 HSF 10 次,一年使用 3600 次,可以节省 3*10*360 = 10800 分钟 ,有利可图啊。
从上面的流程我们可以看到,用了很多的步骤去找到最终的调试入口。作者感觉这种方式效率太低了。
想到的第一个办法就是将 HSF 控台的集成到 IDEA 中,这样在开发过程中直接从 IDEA 中发起请求调用,可以节省不少步骤免得使用浏览器了。
基于以上的思考作者尝试开发了一个 HSF 的 IDEA 插件 demo 。
初期使用效果
之前需要 9 步的操作,可以节省到 6 步了,作者大概计算了下,需要时间变为 30 秒操作时间 + 2 分钟参数构造时间,到此我们节省了大约 30 秒的时间。
这样将调试 工具 集成在 IDEA 中,可以方便的调出使用。快乐不少~
基于以上 dem o 的功能,作者继续思考如何进一 步减少步骤。
发现我们每次都需要手动输入 appName 有点多余,能否根据当前用户自动加载出来呢?
原则上是可以的,只要拿到当前用户的登陆信息,然后基于用户信息,查找当前用户所负责的应用,就可以获取到用户的应用列表了。这样每次使用插件直接选择自己要调试的 RPC 应用不是很方便么。
经过作者四方探寻,获取到了用户的登陆信息,然后再通过 Aone 拉取用户 Owner 的 App 列表提供默认显示。
提供自动加载 appName 信息
路径:
使用效果:展示当前登录者信息,按照登录者获取到 Aone 中 Owner 应用清单。作者实验了下这个功能大概又节省了 3 秒钟。
完成这个功能后作者开始寻找进一步提效的方法。
我们来回顾下操作步骤:
-
选 appName
-
选接口
-
选方法
-
选目标环境
-
构造参数
-
发起调用
从 27 秒缩减到 10 秒。
其中 appName 信息,接口信息,方法信息其实在我们的 IDEA 中已经有的啊,能否根据我们当前 IDEA 打开的文件来自动匹配到我们的接口和方法呢?
自动匹配接口
作者又四方打探,灵机一现。可否在我们需要测试的 Interface 文件上发起请求呢。当前 class 中有 Interface 信息、方法信息。试试看。
使用 IDEA 插件支持读取当前文件内容信息。我们可以打开需要测试的 interface 或者 HSFProvider,选中要测试的方法。
路径:
代码展示:
/*** PsiClass 可以获取到当前文件信息 ,判断当前class是否接口
* @param mainDialog
* @param cls
* @return
*/
private static boolean interfaceAutoLoad(MainDialog mainDialog, PsiClass cls) {
if (Objects.nonNull(cls) && cls.isInterface()) {
String interfaceName = cls.getQualifiedName();
return loadInterface(mainDialog, interfaceName);
}
return false;
}
效果:把一次 HSF 请求的操作压缩到 5 步 ,作者实验了一下以下步骤只需要 5 秒就可以完成,加上参数构造 2 分钟 = 2 分钟 5 秒。
插件完成后请求小明 来 试用:
小明试用了一段时间说: “你这个操作已经很方便了,不过我们在 HSF 执行时有一个问题,每次都得重新构造参数,很是浪费时间,可不可以支持参数收藏? ”
作者: “好想法,满足你。”
支持入参收藏
在原有基础上追加了 2 个功能:
-
支持参数设置别名收藏,以后可以继续使用
-
支持执行的历史记录查看
这样类似的 case 执行只需要加载历史记录,稍加修改参数就可以用啦。
功能完善后又请小明来试用:
小明又发现了新的问题说: “ 你这个好用是好用,但是只支持日常,要是支持预发和线上环 境就好了。 我的场景需要使用相同的数据同时测试预发和线上接口。 ”
作者: “好想法,满足你。”
我们日常测试的时候经常需要线上线下环境切换,甚是麻烦。作者开始琢磨有没什么路径实现。
支持多环境
多环境的支持也非常重要,一般除了日常的调试,还有预发布环境和线上环境。如果能给使用者选择,不同环境预发调试也会变得很方便。
说干就干,因为各个环境是网络隔离的,需要到预发和线上分别部署机器,申请不同的域名,插件使用时给用户选择使用环境信息就可以了。
在插件端提供多环境选择,根据用户选择的环境,使用不同域名发起请求。实现支持多套环境。
实现效果:按照不同环境发起不同请求,支持多环境。
至此,基于 IDEA 插件开发的 RPC 工具已经完成了。从目前使用效果来说也很好,很多同学来询问及使用,目前短短 2 个月,已经有超过 500+ 应用接入使用,能效提升明显。
福利来了
21 组案例详解
Java 面向对象编程
如何编写简单 Java 类、实现数组 排序 和转置功能、将数据表转化为 Java 内容?如何继承其他类或实现各种接口、怎样创造神奇的链表结构? 结 合 实 际 场 景 ,通过 21 个案例实战带你学习 Java 面向对象编程。
识别下方二维码,或点击文末“阅读原文”立即学习:
推荐阅读
Go 语言出现后,Java 还是最佳选择吗?
阿里高级技术专家:整洁的应用架构“长”什么样?
Java 工程师该如何编写高效代码?
关注 「阿里技术」
把握前沿技术脉搏
戳我,学习 Java 面向对象编程。
以上所述就是小编给大家介绍的《IDEA 插件神器:5 秒测试一个 HSF 接口》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- IDEA 插件推荐:让你写出好代码的神器
- 图床「神器」PicGo v2.0更新,插件系统终于来了
- 10 款 VS Code 插件神器,第 7 款超级实用
- 微服务开发神器--JRebel 插件破解和实现本地/远程热部署教程(IntelliJ IDEA版)
- MySQL 优化神器
- ppt 神器 reveal
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
python 3标准库
道格·赫尔曼 / 机械工业出版社 / 2018-10 / 199
在本书中,你会看到用来处理文本、数据类型、算法、数学计算、文件系统、网络通信、Internet、XML、Email、加密、并发性、运行时和语言服务等各个方面的实用代码和解决方案。在内容安排上,每一节都会全面介绍一个模块,并提供一些很有价值的补充资源链接,这使得本书成为一本理想的Python标准库参考手册。一起来看看 《python 3标准库》 这本书的介绍吧!