我在进行OpenID 登录的压力测试时候。
登录界面登录成功后返回一个 302 重定向请求。
再这个返回中,设置了两个认证Cookie 信息 idsrv.session, idsrv
但是通过 Jmeter 的 HTTP Cookie Manager 却不能将 idsrv 信息设置到 后续的请求Cookie中。
解决方法:
使用 BeanShell PreProcessor 将缺失的Cookie 信息追加到 Cookie 中。
将下面的 domain, path true( 是secure) 根据自己的情况进行替换。
access_token: Cookie Key 对应上图 为 idsrv
actual_token: 具体的内容
import org.apache.jmeter.protocol.http.control.Cookie;
sampler.getCookieManager().add(new Cookie("access_token", "actual_token", "domain", "path", true, Long.MAX_VALUE));
经过上面的处理, 就可以成功完成重定向请求,返回需要的认证Code 了。
但是因为 BeanShell PreProcessor 的 Cookie 信息是跨线程的,所以如果是多线程,后面的线程登录会失败。
这是需要将 HTTP Cookie Manager 中的 Clear cookies each iteration Check 上,就可以解决问题了。