2012-10-08 26 views
4

我对JMeter相当陌生;我一直在寻找一种方法来在并发执行的线程组内同步HTTP请求之间的会话ID。我检查了其他问题,但他们似乎没有处理会话,并且我已经完成了在线程之间共享CSV变量的目标。JMeter - 在线程组之间共享会话

我的测试套件结构:

Test Plan 
- HTTP Cookie Manager 
- CSV Data Set (sharing mode: all threads) 
- HTTP URL Re-Writing Modifier (session arg name: jsessionid, caches session id) 

- Thread Group 1 
---Controller 
------HTTP Request (uses csv value) 

... 

- Thread Group N (duplicates of TG 1) 
---Controller 
------HTTP Request (uses csv value) 

这是我的测试计划需要的流量(通过查看所看到结果树侦听器):

HTTP Request (TG 1-1) CSV Value: (1) *caches session id, let's say 123 
... 
HTTP Request (TG N-1) CSV Value: (1) *caches different session id, let's say 456 
HTTP Request (TG 1-2) CSV Value: (2) jsessionid=123 
... 
HTTP Request (TG N-2) CSV Value: (2) jsessionid=456 

我的目标是发送号码一次具有相同会话ID的相同请求。正如你所看到的,除了会话ID之外,它们是相同的。我能做些什么来解决这个问题?

+0

你为什么要这么做?它是模拟Ajax吗? –

回答

0

一个相当不幸的,手动解决方案:

抢会话ID手动,把它变成一个用户定义的变量,追加会话变量,以我的HTTP请求的URL中没有一个HTTP URL重写修正。

+0

如何获取该会话ID并保存它们? –

0

看看jMeter Plugins'InterThreadCommunication

使用它,您可以将字符串值从一个线程放入全局参数队列中,然后从另一个线程获取该值,即使是在不同的线程组中。

+0

谢谢,但你有什么建议,我可以如何使用我的HTTP URL重写修饰符?它没有变量的输入。 – Jiman

+1

你能解释为什么你需要在不同的用户之间同步sessionid。 –

+0

更具体地说,您试图模拟哪个真实世界的事件? –