Skip to Content
Author's profile photo James Rapp

Performance Testing in BI 4.1

I’ve recently spent a bunch of time getting to know BI 4.1, and part of that process is taking it for the proverbial test drive in terms of performance.  To do this, I always use Apache JMeter since it is free and a great overall product.  I’ve been documenting the process for designing performance and regression tests on BI 4.0 on the SCN Wiki for some time, but with the popularity of this topic, along with the added exposure gained in my recent ASUG webcast on automated regression testing, I haven’t made it as far as I would like in the process.

Due to challenges and other commitments, I just got around to creating a test plan for BI 4.1.  The test plan invokes 3 different BI clients … Web Intelligence, Explorer, and Analysis for OLAP, and all get backend data from HANA.  I’ve uploaded the JMX code for this test plan on the wiki:

http://wiki.sdn.sap.com/wiki/display/BOBJ/4.1+Mixed+Test+Plan

And this represents a new process for me that should be sustainable in the long-term.  It was taking such a time commitment to exhaustively document every step in test plan creation that I found myself with dozens of functional test plans, but only a few of which were documented for use.  Therefore, I propose to put all of my test plans on the wiki as source code.  You can simply copy and paste the code into a file that you save with a .jmx extension, and then you’ll be able to open it directly in JMeter.  I will use this space as a means to blog about the test plans, and explain the key components you’ll need to customize to use them in your own environment.  I’ll look forward to your feedback on whether or not this process works and can fine tune as necessary.

You can familiarize yourself with JMeter and create your first test plan (exhaustively documented) here:

http://wiki.sdn.sap.com/wiki/display/BOBJ/Creating+your+First+Test+Plan

BI 4.1 Mixed Test Plan

First, in order to open this test plan, which uses JMeter plugins to instrument system resources such as CPU and Memory, you must follow the instructions found here:

http://scn.sap.com/people/james.rapp/blog/2011/07/15/integration-of-server-resource-monitoring-with-jmeter-plugins

Once you have added these plugins to the JMeter lib/ext directory you can open the test plan and see this goodness!

41 Mixed Test Plan.png

The test plan is broken down as follows:

1. Thread Group configured (by default) for 100 users and a 300 second (5 minute) ramp-up time.  This means that after 5 minutes, 100 users will actively be performing BI workflows on your server.

2. Each user logs on to the environment, as controlled by the requests in the Logon transaction controller.

3. Each user opens and refreshes a Web Intelligence report.

4. Each user opens a previously saved Exploration View Set.

5. Each user creates a new Analysis Workspace, selecting a connection, adding a dimension, and inserting a chart.

6. Each user logs off of the system.

Unique users are leveraged for each thread and that process is configured in the BI Users CSV config.  At the end of each transaction controller is a Uniform Random Timer that causes a delay between 100 ms and 2000 ms (2 seconds) between each request.  This emulates a business user performing some analysis and keeps the requests from flooding the system.  The timer duration is not included in the results so we get a pure view of how long each operation takes.

Breaking it Down

I cover the Logon/Logoff methods in the wiki page I provided above, but logging onto BI 4.1 requires one slight alteration from BI 4.0.

BI 4.1 uses a Java Server Face to process the BI Platform logon so it is necessary to pass a parameter called com.sun.faces.VIEW to the logon.faces request.  I struggled with this initially and discovered that if you don’t pass the value the logon page simply gets re-postedand you never get a session!

Here is what the regular expression extractor should look like:

41 JSF Logon.png

We need to pass this value into the following logon.faces request:

41 JSF Logon 2.png

From here I will just talk about the individual BI clients.  Web Intelligence gets to go first by virtue of its position in the test plan:

Web Intelligence

Regular expression extractors are attached to 3 samplers in the Web Intelligence workflow.  The values extracted are:

1. The SI_ID of the user’s Favorites Folder

2. The sEntry representing the Webi document state when the report is first opened.

3. A second sEntry value representing the Webi document state when the report is refreshed.

Once those values are extracted they should be attached to the appropriate Webi samplers as JMeter variables.  JMeter variables take the form ${fav}, ${sEntry}, etc.

Since JMeter test plans are plain text it is easy to replace static strings such as an sEntry (sEntry might take the format we0001000078432c722f78)

Refer to this new SCN Document for details on how to do the text replacement!

The result of the Web Intelligence workflow looks like this:

Webi.png

In the interest of length of this article, I’ll wrap up this post for now and follow up with another post next week to articulate the Explorer and Analysis OLAP workflows.  I’m really excited to be performance testing with BI 4.1 … my initial tests show it performs really well and I’ll look forward to sharing more of these details with you.

Assigned Tags

      51 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Tammy Powlas
      Tammy Powlas

      Would you consider moving this to the BI Platform space so it gains more visibility?  Select Actions > Move and type in BI Platform.

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Thanks for the feedback Tammy ... it has been moved.

      Author's profile photo Former Member
      Former Member

      This is great Jim!

      Author's profile photo Simon Iglesias
      Simon Iglesias

      Great post , thanks for shared !

      Author's profile photo Former Member
      Former Member

      It's interesting article 😉

      Author's profile photo Toby Johnston
      Toby Johnston

      5*****!

      Author's profile photo Chris Bethune
      Chris Bethune

      Good stuff!  Look forward to trying it on my deployments in the future!

      Author's profile photo Former Member
      Former Member

      Good Job and Thanks for sharing!

      Author's profile photo Francisco Almeida
      Francisco Almeida

      This work that you and Henry and Toby and others are doing is empowering Administrators and Consultants like never before. We are all thankful for that.

      I am creating my own plan here, and even after capturing the com.sun.faces.VIEW value (I can see the variable value in the Debug Sampler result), the extractor for the bttoken continues to fail (the bttoken value always returns the default value).

      I'm running it against BI 4.1, and capturing the VIEW value at the first occurrence of .../logon.faces and the BTTOKEN value after the second appearance of .../logon.faces.

      Please let me know if you have any pointers/suggestions.

      *** EDIT: solved ***

      This is what I was doing wrong:

      In BI4.0, the BTTOKEN post-processing extractor regular expression is:

      bttoken=(.+?)&

      In BI 4.1, one needs to use this expression instead:

      bttoken=(.+?)"

      I will leave this comment in case anyone has the same issue.

      Thanks,

      Francisco

      Author's profile photo Former Member
      Former Member

      James, it's a great job you're doing here. Thanks a lot.

      I was wondering if JMeter could be used for testing mobile access performance.

      Will for example an IPAD emulator be recognised  by the http proxy?

      Do you plan to make & share such tests?

      Other question, in my test plan i would like to simulate webi document creation with the applet. Will there be specific parameters to catch in that case?

      thanks again

      Xavier Bry

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Xavier,

      Thanks for the comment and the positive feedback.

      You ask some very relevant questions so let me try to answer them as best I can:

      1. Regarding mobile access performance, I would like to capture this in the near future as mobile performance is paramount to adoption on device.  The HTTP proxy component will only capture data that is sent through it, so it may be possible to capture an iPad emulator as long as it first passes through an active proxy.  Another thought I had was to enable HTTP access logging on my Tomcat server, and to capture the requests in that fashion to construct a corresponding test plan from the HTTP requests.  I would be very interested to hear about your experience regarding the emulator.
      2. JMeter supports java samplers as well, so it would be technically possible to create a test plan that emulates report creation through the applet.  However, these methods would not be captured via the HTTP proxy since they are not HTTP calls.  This would be further complicated by the fact that you would need to add the entire JRP/Rich Internet Application to the JMeter classpath and call the methods individually.

        Furthermore, JMeter is not a browser/client itself, so client performance of the JRP would not truly be emulated, and I suspect that server impact of using one report creation tool vs. another (say DHTML or RESTful Web Service) is minimal.  My suggestion would be to create test plans that simulate report creation using either the DHTML client or the new (4.1 SP2) RESTful Web Service API.  I would be happy to consider both of those use cases for future test plan creation.

      Regards,

      Jim

      Author's profile photo Former Member
      Former Member

      A very interesting manner of testing the business environment. It definitely helps / ideas for everyone to perform their own individual testing activties.

      Author's profile photo Former Member
      Former Member

      Dear James,

      Both the articles (BI4 & BI4.1 webi) on performance testing are Outstanding and leaves no doubt for the developer/tester.!!! I was able to execute the BI4.1 Webi performance testing through JMeter successfully.

      But recently I have been struggling with the Performance testing (using JMeter) of a BO4.1 webi report having prompts in a report query. In the debug sampler bttoken, sEntry are correctly populated but sEntry2 is populated as NONE.

      Do we need to add a Regular Expression Extractor for prompt also? Can you please provide help on this.

      Regards,

      Pankaj

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Pankaj,

      Thanks for the feedback.

      Yes the trick with prompts is that they have a bit of dynamic data you have to extract as well.  I recommend using Fiddler/HTTPWatch to capture you performing the same steps you used in your JMeter test plan.  You can then examine the dynamic methods and look for the parameter you need to extract.  Feel free to post your findings here and we can look together.

      Cheers,

      Jim

      Author's profile photo Former Member
      Former Member

      Hi James,

      Thanks once again and appreciate your quick reply. Initially I wasn't using fiddler but after you suggested I was able to trace the dynamic parameter for prompts with the help of fiddler. The test was successful for the report with prompts !!

      The findings are:

      1) I have removed Regular Expression Extractor from refreshDocument.jsp

      2) And the Regular Expression Extractor is added for processPrompts.jsp (***sEntry2 Extractor**).

      One thing strange I noticed is that, the viewer/report.jsp  returns only data in the report tables, and graphs are not displayed in JMeter. Is that JMeter don't return/display graphs?

      Can you please share your thoughts on this.

      Also, can we prepare and run a test for Xcelsius dashboards? If possible can you shed a light on this briefly.

      Thanks & Regards,

      Pankaj

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Pankaj,

      Charts are returned by a different URL.  I cover the use of getImage.jsp in BI4 Web Intelligence Performance Test with JMeter

      Please refer to that document for steps on retrieving images from Web Intelligence documents.

      As for Dashboards (Xcelsius), I have done some work there but haven't had an opportunity to document it exhaustively as with these others.  I will load a JMeter test plan to the Wiki this week that you can look at to get you started though.

      Thanks,

      Jim

      Author's profile photo Former Member
      Former Member

      Thanks for the reply James.

      Actually I am still stuck at the graph part (pie-chart, column chart) in the report.

      After running the JMeter test plan, none of the viewer/getImage.jsp page is returning/displaying the graphs present in the report.

      But when the mode in View Results Tree is changed from HTML to HTML (download resources), apart from the table data, viewer/viewReport.jsp displays the text like Pie Chart, Column Chart with a symbol of image. I have attached a screen shot for your reference.

      I am unable to trace where its going wrong.JMeter Test Plan.png

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Pankaj,

      This is expected behavior.  The images should actually be attached to the response body of the getImage.jsp methods.  When you enable HTML (downloaded resources) it instructs JMeter to follow embedded links to retrieve resources included in the HTML.  You can enable/disable this setting on your request samplers as well if desired.

      Jim

      Author's profile photo Anshul Tawari
      Anshul Tawari

      Hi James/Pankaj,

      Please let me know if we need to repeat the workflow in IE to extratct sEntry for processprompts.jsp

      I did the same and got the sEntry value however I am not sure if this value can be used in my existing test plan in Jmeter as that was created based on a previous workflow.

      @James: Thanks for this wonderful article!

      I have crated a test plan on my client machine on JMeter 2.7 however I do not see jp@gc - PerfMon Metrics Collector in the list. Is there any addon I need to install.

      Also do I need to mention my BO CMS server name and ports to capture the performance on the server from client.

      Cheers,

      Anshul

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Anshul,

      It is necessary to extract a new sEntry every time the Web Intelligence document state changes.  For example, open a webi doc (sEntry 1), refresh a webi doc (sEntry 2), drill in a webi doc (sEntry 3), etc.  When processing prompts it will also be necessary to pass a distinct sEntry.  Use a product like Fiddler to identify just what the functional dynamic data should look like.

      As for JMeter resources, use this resource to find and configure them:

      Integration of Server Resource Monitoring with JMeter Plugins

      Cheers,

      Jim

      Author's profile photo Former Member
      Former Member

      Hi James,

      I am trying to run your script to refresh Webi report but get error when executing /BOE/portal/1408041430/InfoViewAppActions/ajaxUre/ajaxRequest and in the sample result it says response code is 403 and in Response data : boetrustguard.TokenCreationFailedMessag

      We are running BO 4.1, split deployment (apache + Tomcat) in Windows 2008 environment.

      SSO is configured but I am using http://servername/BOE/BI/logonNoSso.jsp to capture the logon details.

      Looking forward for your early response.

      Thanks

      Ayub

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Ayub,

      This typically occurs because the bttoken value isn't passed as part of the request.  Please confirm the request header / request body contain this value, and that it is the same one being passed in the prior requests.

      I also would expect the response body to contain a full stack trace for the boetrustguard exception.  Please provide it.

      Thanks,

      Jim

      Author's profile photo Former Member
      Former Member

      Hi James,

      Many thanks for your prompt response. Please find below the text:

      Sampler Result:

      Thread Name: 4.1 Performance Test 1-1
      Sample Start: 2014-08-27 14:39:54 BST
      Load time: 78
      Latency: 78
      Size in bytes: 889
      Headers size in bytes: 331
      Body size in bytes: 558
      Sample Count: 1
      Error Count: 1
      Response code: 403
      Response message: Forbidden

      Response headers:
      HTTP/1.1 403 Forbidden
      Date: Wed, 27 Aug 2014 13:39:54 GMT
      Server: Apache/2.4.9 (Win64) OpenSSL/1.0.1h mod_jk/1.2.40
      X-UA-Compatible: IE=edge,requiresActiveX=true
      Vary: Accept-Encoding
      Content-Encoding: gzip
      Content-Length: 558
      Keep-Alive: timeout=5, max=90
      Connection: Keep-Alive
      Content-Type: text/html;charset=utf-8

      HTTPSampleResult fields:
      ContentType: text/html;charset=utf-8
      DataEncoding: utf-8

      Request:

      POST http://server/BOE/portal/1408041430/InfoViewAppActions/ajaxUre/ajaxRequest

      POST data:
      ureId=%2FBOE%2Fportal%2F1408041430%2FInfoViewAppActions%2Fjsp%2FInfoView_Listing%2FinfoviewListing.faces_ListingURE_InfoViewListing&bttoken=MDAwREAxREkzRDNKQFdmbUtRMz5WUTo9QV9tSlEyNTAEQ%26skipSso%3Dtrue&action=openAccordionDrawer&id=0&nodeSelection=&com.businessobjects.client.concurrent.sessionCounter=0&com.businessobjects.client.concurrent.requestCounter=0

      Cookie Data:
      JSESSIONID=5182EC62D8A8228FD96CC2C7C2FC7442; InfoViewPLATFORMSVC_COOKIE_CMS=server%3A6400; InfoViewPLATFORMSVC_COOKIE_USR=administrator; InfoViewPLATFORMSVC_COOKIE_AUTH=secEnterprise

      Request Headers:
      Connection: keep-alive
      Content-Type: application/x-www-form-urlencoded; charset=UTF-8
      Accept-Language: en-us
      Accept: */*
      User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
      Accept-Encoding: gzip, deflate
      Referer: http://server/BOE/portal/1408041430/InfoViewAppActions/jsp/InfoView_Listing/infoviewListing.faces?cafWebSesInit=true&bttoken=MDAwREAxREkzRDNKQFdmbUtRMz5WUTo9QV9tSlEyNTAEQ&skipSso=true&bttoken=MDAwREAxREkzRDNKQFdmbUtRMz5WUTo9QV9tSlEyNTAEQ&skipSso=true&appKind=InfoView&service=%2FInfoView%2Fcommon%2FappService.do&loc=en&pvl=en_US&ctx=standalone&actId=4301&objIds=12&containerId=&pref=maxOpageUt%3D200%3BmaxOpageC%3D10%3Btz%3DAmerica%2FLos_Angeles%3BmUnit%3Dinch%3BshowFilters%3Dtrue%3BsmtpFrom%3Dtrue%3BpromptForUnsavedData%3Dtrue%3B
      X-Requested-With: XMLHttpRequest
      Pragma: no-cache
      Content-Length: 359
      Host: server

      Response data:

      <html><head><title>Apache Tomcat/7.0.32 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 403 - ???boetrustguard.TokenCreationFailed???[/BOE/portal/1408041430/InfoViewAppActions/ajaxUre/ajaxRequest] ???boetrustguard.TokenCreationFailedValue??? [MDAwREAxREkzRDNKQFdmbUtRMz5WUTo9QV9tSlEyNTAEQ&amp;skipSso=true] ???boetrustguard.TokenCreationFailedMessage???[???boetrustguard.token.invalid???]</h1><HR size="1" noshade="noshade"><p><b>type</b> Status report</p><p><b>message</b> <u>???boetrustguard.TokenCreationFailed???[/BOE/portal/1408041430/InfoViewAppActions/ajaxUre/ajaxRequest] ???boetrustguard.TokenCreationFailedValue??? [MDAwREAxREkzRDNKQFdmbUtRMz5WUTo9QV9tSlEyNTAEQ&amp;skipSso=true] ???boetrustguard.TokenCreationFailedMessage???[???boetrustguard.token.invalid???]</u></p><p><b>description</b> <u>Access to the specified resource has been forbidden.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/7.0.32</h3></body></html>

      Looking forward for your reply.

      Many thanks,

      Ayub

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      The value being referenced in the error is:

      [MDAwREAxREkzRDNKQFdmbUtRMz5WUTo9QV9tSlEyNTAEQ&amp;skipSso=true]


      I suspect it is either the URL encoding (i.e. &amp) or that the bttoken should end at AEQ and not include the rest of the string.  Can you check a functional version of this workflow, via Fiddler or IEWatch, and determine what value should be present for bttoken?

      Author's profile photo Former Member
      Former Member
      Author's profile photo Former Member
      Former Member

      Hi James,

      Many thanks for your prompt help and support on ths.

      Actually the Sentry value was not populated but now its working. 🙂

      Now the script is running, logon to BO, opeb webi report, refresh and save but could not logoff. There is same error "boetrustguard token failed.

      Thanks

      Ayub

      Author's profile photo Former Member
      Former Member

      Hi James, I am following you article about performance testing in 4.1 and thought of giving it a try. I have setup JMeter as you suggested and setup HTTP Proxy (using Jmeter 2.12). when I recorded the script it seems like it's getting all the information but when I rerun tests, it's failing on couple of places and after further research, it's bttoken value that's not populating.it is not passing this value at all (no matter what regular expression I tried) I made sure i'm using (.+?)" but to no use. I still see bttoken=None (default value). is there any thing in the regular expression I'm missing

      bttoken=(.+?)"

      I don't see any bttoken value in the response data from main.do (login URL) as well..

      any help you can provide would be great.

      thanks

      Kenny

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Kenny,

      It depends on which version of the product you're trying to run the performance test against. Your best bet is to use the View Results Tree in conjunction with a Debug Listener to test the regular expression. You can do this by changing the view to Regular Expression Tester and looking for the appropriate string.

      Thanks,

      Jim

      Author's profile photo Former Member
      Former Member

      Thanks James. Appreciate your reply. I am using BO 4.1 SP4. when I login initially without running test case, I can see bttoken in my response data but when I run test case, the same response data is coming in with blank bttoken. I tried using Fiddler and it shows bttoken value, but JMeter , for some reason not registering it as a test case. hope I'm making sense..any ideas ??

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hey Kenny,

      Take a look at this comment:

      http://scn.sap.com/community/bi-platform/blog/2013/08/26/performance-testing-in-bi-41#comment-433576

      It looks like you're using the appropriate syntax, but it must be attached to the wrong request. You need to check the results of View Results Tree to see what the response body of your logon requests are. Is there a bttoken value returned as part of the response body? If not, you've either missed extracting the com.sun.faces value or there will be an exception there.

      Author's profile photo Former Member
      Former Member

      Thanks for your reply again.

      1) I am using appropriate syntax (I hope)

      2) I think I have attached this to correct request (main.do url ) as that's where I see bttoken value .. there is not bttoken value in prior requests

      3) I have setup com.sun.faces.VIEW value and it is dynamically picking up correct values (using ${com} variable. that works perfectly

      Still,I don't see bttoken value in response body.

      What else could be missing? also, you said there might be an exception , could you elaborate on that if you don't mind?

      Once again, thanks for taking time and helping me out

      Thanks

      Kenny

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Kenny,

      You need to extract bttoken from the logon.faces request:

      <html>

      <head>

      <script type="text/javascript">

      window.location = "../InfoView/listing/main.do?service=%2Fcommon%2FappService.do&appKind=InfoView&bttoken=MDAwRE42QUVAT1ZZZFFKV2lpP0JaYjxtWmA9VDdDPDAEQ";

      </script>

      </head>

      </html>

      The regex you have above should work for this. Make sure you're passing ${bttoken} to the following main.do request

      Author's profile photo Former Member
      Former Member

      James, thanks for your reply and sorry for responding late. Looks like my logon.faces is completely different from your logon.faces (i'm using 4.1 SP4) the script you specified in your reply is in my Main.do url response and it's bttoken=&None (coming form my regular expression extractor,added in logon.faces in previous URL sample)

      So, do I have to put extractor in main.do and extract bttoken value? I tried that as well but did not work..

      Thanks for any suggestions you can provide

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Kenny,

      I pasted mine from 4.1 SP4. Can you just email me (james.rapp@sap.com) the contents of your View Results Tree? I need to see the response body of every request preceding the main.do. The bttoken extraction must be performed before you hit main.do.

      Thanks,

      Jim

      Author's profile photo Former Member
      Former Member

      Just emailed it to your email id. Thanks a lot

      Author's profile photo Former Member
      Former Member

      Hi James,

      I try to follow your steps and found some issue about "bttoken" with SAP BI 4.1 SP6. I found ${bttoken} was NULL. Could you advise me about issue?

      Thanks,

      Chaiyod

      Author's profile photo Thomas Neel
      Thomas Neel

      I followed the steps as mentioned in the document but I am not getting the information  as mentioned in the blog.

      What I am getting is as follows

      I then added the Postprocessor – Regular expression extractor as shown in screenshot below and the logon.faces as shown below.

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Thomas,

      Unfortunately the screen shots didn't come through. Please add a View Results Tree component and Debug Listener component to detemermine:

      1. which request is failing (it will be red)

      2. whether ${COM} and ${BTTOKEN} are populated/extracted correctly. You can see this detail at the bottom of the View Results Tree component after adding both and running your test.

      Thanks,

      Jim

      Author's profile photo Former Member
      Former Member

      James,

      I need your help to fix this.

      I followed your blogs to create my first test plan as we are planning to use Jmeter for BI 4.1 performance testing,

      I created this using BI 4.1 Sp3 and there is slight variation based on your screenshot.

      I am getting error whenever I execute login controller.

      login.PNG

      login 1.PNG

      login2.PNG

      Any help is very highly appreciated .

      Thanks!

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Raj,

      You'll have to use a debug listener and view results tree components to ensure both variables {$COM} and {$BTTOKEN} are being populated properly. The 500 internal server error suggests some bad data is being passed into the request. Is this environment configured to use SSO?

      Author's profile photo Former Member
      Former Member

      James,

      Thank you so much for the help.

      This System is not configured for SSO.

      Here is the post data for the reqeust

      *******************************************************

      POST http://xxxx.xx.com:8080/BOE/portal/1501061648/InfoView/logon.faces

      POST data:

      _id0%3Alogon%3ACMS=POCBO%3A6400&_id0%3Alogon%3AUSERNAME=administrator&_id0%3Alogon%3APASSWORD=xxxxxx&com.sun.faces.VIEW=%24%28COM%29&_id0=_id0

      Cookie Data:

      JSESSIONID=74A942EC41FF9D97ADE2C9B16C8387FB

      Request Headers:

      Origin: http://xxxxx.com:8080

      Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

      Cache-Control: max-age=0

      User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36

      Referer: http://xxxxx.com:8080/BOE/portal/1501061648/InfoView/logon.faces

      Connection: keep-alive

      Accept-Encoding: gzip, deflate

      Accept-Language: en-US,en;q=0.8

      Content-Length: 145

      Content-Type: application/x-www-form-urlencoded

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Check the debug sampler component along with view results tree to determine whether ${COM} is being extracted correctly. In the request above:

      com.sun.faces.VIEW=%24%28COM%29


      decodes to:


      com.sun.faces.VIEW=$(COM)


      The syntax is ${COM}, please check your test plan and update accordingly.

      Author's profile photo Former Member
      Former Member

      wow. James, you are amazing.

      it works now.

      My first test plan was successful. Let me try other plans and update.

      Thanks again !

      Author's profile photo Thomas Neel
      Thomas Neel

      Hi James,

      I have same issue as Raj (500) and i added debug listener and view results tree.

      and the com.sun.face.view exactly decodes to ${COM}.

      We done have SSO also.Appreciate your inputs on this

      Apologies for adding the code, hoping it would be helpful for others if they encounter same issue

      Additional details as follows

      Sample Start: 2015-03-24 20:35:16 GST

      Load time: 11

      Latency: 10

      Size in bytes: 1423

      Headers size in bytes: 330

      Body size in bytes: 1093

      Sample Count: 1

      Error Count: 1

      Response code: 500

      Response message: Internal Server Error

      Response headers:

      HTTP/1.1 500 Internal Server Error

      Server: Apache-Coyote/1.1

      Set-Cookie: JSESSIONID=8F148429B1C5820B7A06A1C9BC88FA6C; Path=/BOE/; HttpOnly

      X-UA-Compatible: IE=edge,requiresActiveX=true

      Content-Type: text/html;charset=utf-8

      Content-Language: en

      Content-Length: 1093

      Date: Tue, 24 Mar 2015 16:35:16 GMT

      Connection: close

      HTTPSampleResult fields:

      ContentType: text/html;charset=utf-8

      DataEncoding: utf-8

      POST http://bi1-prod:8080/BOE/portal/1412222144/InfoView/logon.faces

      POST data:

      _id0:logon:CMS=BI1-PROD:6400&_id0:logon:USERNAME=${user}&_id0:logon:PASSWORD=${pass}&com.sun.faces.VIEW=${COM}&_id0=_id0

      [no cookies]

      Request Headers:

      Accept-Language: en-US

      Content-Length: 124

      Accept-Encoding: gzip, deflate

      Referer: http://agh-bi1-prod:8080/BOE/BI

      User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C)

      Connection: keep-alive

      Content-Type: application/x-www-form-urlencoded

      Accept: image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*

      Pragma: no-cache

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Thomas,

      It looks like you're missing cookies from the request. Please add an HTTP Cookie Manager component to the test plan and run it again. The values, ${user}, ${pass}, and ${COM} should enumerate to the correctly extracted values. You can check this using a combination of Debug Sampler and View Results Tree components. The debug data will appear at the very bottom of the View Results Tree component.

      Thanks,

      Jim

      Author's profile photo Thomas Neel
      Thomas Neel

      Hi James,

      Looks like something i am missing. Added http cookie manager and result is same

      Attached some screenshotsview request.jpg/wp-content/uploads/2015/03/debg_670927.jpgdebg 1.jpgdebg 2.jpgdebg 2.jpgdebg 3.jpg

      Author's profile photo Thomas Neel
      Thomas Neel

      Please advise on same

      Author's profile photo Former Member
      Former Member

      Hi James,

      I have a requirement to use the Same JMX file in multiple environments and for multiple reports by passing the inputs to the JMX file using Java Programming.

      Suppose, if I have test plan which I created from JMeter for Refreshing the BO Report. Then I have to use the same JMX file in other BO Environments for any reports which client want to test.Like by passing the BO server details and Report details in a excel file as inputs to the JMX file using Java.

      Is it possible to use the same JMX file for other environments and for Other reports?Please advise me on this so that I will take it forward.

      Thank you very much in Advance!!!

      Regards,

      Madhu.

      Author's profile photo David, Choong Poey Yee
      David, Choong Poey Yee

      Good stuff James. 🙂

      Author's profile photo Former Member
      Former Member

      Thank for detailed guide James!

      I have made several tests according your guide and they did great job in BO testing!

      Now our client ask us to generate load on HANA db through BO report refreshing.

      But when I run BO test that includes report refreshing step there is no load generated on HANA side.

      It means when in HANA I am checking M_ACTIVE_STATEMENTS table during test script execution I cant see script from my BO report.

      I guess ".../refreshDocument.jsp" step in test do not reach HANA somehow.

      Have you ever faced such issue?

      Thank you in advance!

      Regards,

      Arsen.

      Author's profile photo James Rapp
      James Rapp
      Blog Post Author

      Hi Arsen,

      check out out the performance testing pattern book:

      BI Platform 4.x Performance Testing Pattern Book - Business Intelligence (BusinessObjects) - SCN Wiki

      We hit HANA pretty hard using Web Intelligence. This should help you out.