By Chris Muir on Aug 02, 2012
Before joining Oracle I maintained an older ADF blog where I covered using Apache JMeter to load test ADF. That post has been picked up by a number of people over the years and it's nice to see it was useful.
Unfortunately one of the problems in using JMeter to test ADF is there's an extreme amount of fussy configuration to get right. As a result to this day I continue to get hit with questions - why don't our tests work? From my own investigation 99% of the time it's a configuration error on the developer's part. Like I said, there's lots of fussy configuration you must get exactly right otherwise ADF gets confused by the messed up HTTP requests it receives from JMeter (more rightly ADF says the user session has expired, which is just ADF's way of saying it doesn't know who the current session is because the ADF HTTP state parameters JMeter is sending to the ADF server are not what it expected).
While the original blog post was useful in teaching people the technique of using JMeter, it really could do with a recorded demonstration to show all the steps involved in a live test. Lucky for you as I'm now an ADF product manager with far too much time on my hands, I've taken time out to record such a demo as part of our ever expanding ADF Insider series.
At the conclusion of the demo you may decide it all sounds like too much effort. Without a doubt this is why you should look at Oracle's Application Test Suite (OATS). OATS has ADF intelligence built in, there's far less fussy configuration required, so you can focus on the job of testing rather than configuring the test tool. I hope to publish some demos on using OATS soo.
One final caveat, I don't expect the existing JMeter configurations to survive for every future version of ADF. So if you do find your old JMeter tests stop working on adopting a future ADF version, time to look under the covers, discover how we need to change the JMeter tests, and most importantly please share your knowledge by blogging about it or post it on the ADF EMG and leaving a comment here for people to find.
Post edit 12th March 2013: Jan Vervecken has provided a very useful update for JMeter, check out the following OTN forums post.
Post edit 2nd September 2013: Ray Tindall has provided the following updates for using this under 220.127.116.11.0. The following changes need to be made to the JMeter solution:
Previously 18.104.22.168.0 afrLoop was extracted from:
query = query.replace(/_afrLoop=[^&]*/__,"_afrLoop=21441675777790");
query = query += "_afrLoop=21441675777790";
Under 22.214.171.124.0 it should be extracted from:
query = _addParam(query, "_afrLoop", "21137373554065");
As such afrLoop should now be extracted using:
Thanks to both Jan and Ray for these updates.