|Receive Email for New Articles|
|Load test Oracle iProcurement - XML Delivery||| Print ||
|Written by Anil Passi|
|Sunday, 04 February 2007|
In this article, I will discuss why load testing is needed in Oracle eBusiness Suite. I will also share some load testing scenario & script to test iProcurement XML delivery. These scripts have been tested on 11.5.10ATG Rollup4 patches. But first lets begin with to touch base upon the need for load testing.
Oracle usually load test their major tech stack upgrades, but their system config and system load during testing may not be the same as your production box. Hence load testing must become an important aspect of you release/upgrade strategy in Oracle Apps.
How do I know which areas to load test?
Ideally, with every major upgrade patch, Oracle must provide a list of candidates for load testing(possible impact areas). This will make life of clients & consultants much easier. But Oracle seldom provides this information. How often do you notice that despite tireless regression testing, a few days after goLive your system goes on its knees. Search on Oracle forums or search on Metalink bug database, you shall find enough cases to justify that Oracle patch release notes must have a section for load test candidates/areas.
Anyway, in answer to this question, you must load test high user base and high transaction volume areas.
Now lets come back to this specific load test case.
What error did we see on 11.5.10 after ATG Rollup4.
We noticed that after couple hundred successful PO XML transmissions, we started getting java outofmemory error. This error was being raised because jvm within database was running out of memory space, due to leaks in memory during parsing PO-007 XML documents[via XML Gateway].
Did the error disappear after a bounce of system?
Indeed, but it came back again after another 200odd XML documents were parsed prior to transmission. So clearly, it appeared that memory leaks were happening.
Did Oracle suggest some patches?
Sure they did, but we couldn't apply those patches without having proven those to withstand the loadtest on our test system. Hence this article, where I am sharing the steps to load test, with relevant scripts. Load testing will ensure that problem indeed gets resolved after new patches get applied.
How do we load test XML transmission in Oracle iProcurement / Purchasing?
As with most such issues, the foremost important step is to reproduce the problem.
Hence the step to load test are:-
1. Reproduce the error that you are seeing on production by creating and transmitting 200 XML purchase orders. The scripts to be written in a manner that as many new purchase orders can be created andXML'ed within few minutes.
2. Bounce the system and Re run tests until you see the desired error again[as being seen on production]
3. Apply Oracle suggested patches
4. Re-run load test, then create and run loadtest for another 200 purchase orders
5. Repeat step 4 as many times until you are satisfied that error has been resolved.
6. Get users involved in testing, and check with your suppliers to ensure that xml document is as expected.
What are the functional steps for reproducing data?
1. Using a script, create 200 purchase orders for a XML enabled supplier on a test system.
2. Again using a script, submit these 200 odd purchase orders for approval, following which XML will be sent to supplier.
Note: Ensure that XML are being sent to your suppliers test system and not their production environment.
How do I create & XML transmit so many purchase orders very quickly?
Lets discuss the background, before I provide you with the script. I must tell you that I rarely write code from scratch to do things like these. In this case, our approach is :-
a. Pickup single existing purchase order for XML enabled supplier and copy it 200 times[or as many times].
Oracle has an API named po_copydoc_s1.copy_document. We will call this API in a loop 200 times to create fresh 200 purchase orders that are eligible for XML transmission.
b. Once the 200 Purchase Orders have been created, unit test one of those purchase orders, by approving that from screen. This should be followed by submitting each of these purchase orders through Approval workflow, which then raises the event for XML transmission. This can be done by calling APIpo_reqapproval_init1.start_wf_process
Note 1. Login to system with a username that has self approval authority for the PO Amount.
Note 2. You may also need to turn the self approval option ON if its turned off.
By doing the above steps, we are in a position to create enough load to simulate 10,000 users onto the iProcurement System.
The actual step by step scripts are provided in following article Scripts for Load testing XML Delivery in Oracle iProcurement / Purchasing