ThreadLocal 在链路性能测试中实践
在前面的时间,我分享两篇关于ThreadLocal
类的文章:利用ThreadLocal解决线程同步问题和Java中的ThreadLocal功能演示,今天以之前做过的一个链路性能测试,分享一下在ThreadLocal
在测试中的简单应用。
需求和逻辑
需求
需求是用户(登录状态)对某个资源(通过minisource_id
确认)进行取消收藏和收藏的功能。
业务判断依据为相应结构中在外层JSON
对象的key=meta
的value
为JSON
对象,且value
中的key=ecode
必需为0
。
逻辑
先进行收藏,然后取消收藏,以此作为一个链路进行性能测试。这个例子我在链路压测中如何记录每一个耗时的请求中用到过,感兴趣的可以去看一下。
思路
根据ThreadLocal
类的功能和使用场景,我在功能类OKClass
中初始化了一个超长的minisource_id
的List
对象,用来存储测试可能需要的ids
。然后通过一个线程安全的AtomicInteger
对象标记索引位置,方便在initialValue()
方法中,返回不同的minisource_id
。
具体的规则就是,每执行一次initialValue()
方法,索引index
增加1
,这样可以保证每个线程调用功能类对象的方法时,使用的minisource_id
都是不一样的。
功能类改造
功能类代码比较多,我就把此次修改涉及的代码分享如下:
这里的写法有个参数默认值的,这是
Groovy
特性,可以当做params.put("minicourse_id", minisource_id.get());
。
压测脚本
功能不多说了,没有改动,分享如下:
版权声明: 本文为 InfoQ 作者【FunTester】的原创文章。
原文链接:【http://xie.infoq.cn/article/24bbcd66b7d5eb93841c35d3c】。文章转载请联系作者。
评论