Extract a SessionID

Document created by Chris Sommerstad Employee on Jul 22, 2017
Version 1Show Document
  • View in full screen mode

Use the following script as an example of extracting a sessionID and placing that extracted value into a Custom Property. For example, from a DWR  engine.js file.

Refer to Script to learn how to add a script to a test clip and test composition.

Note:  You can get more information about DWR syntax at http://getahead.org/dwr/documentation.

You can Download and import the XML for the entire Extract A Session ID Composition or just the Extract A Session ID Script or copy and paste the script code from here.

XML can be imported using the SOASTA CloudTest > Repository toolbar > Import icon.

Refer to Script to learn how to add a script to a test clip and test composition.

  1. In lines 1-2, set a variable, that gets the object representing the item named "engine.js" in the clip.

var dwrEngineJsMessage = $context.currentClip.getChild('engine.js');
  1. In line 3, get the body of the HTTP response.

var dwrEngineJsBody = dwrEngineJsMessage.getResponse(Message.RESPONSE_HTTP_BODY);
  1. On line 9, set a variable, prefix.

var prefix = 'dwr.engine._origScriptSessionId = "';
  1. On line 10, set a variable, startIndex, to the location after the prefix in the message body.

var startIndex = dwrEngineJsBody.indexOf(prefix) + prefix.length;
  1. On line 11, set a variable, endIndex, to the location the first double-quote following the prefix.

var endIndex = dwrEngineJsBody.indexOf('"', startIndex + 1);
    1. Extract the session ID from the body of the HTTP response.

scriptSessionId = dwrEngineJsBody.substring(startIndex, endIndex);
  1. DWR expects the browser to generate a random suffix. So, generate a random number and append it to the session ID. This is copied directly from engine.js (see _getScriptSessionId() in the DWR documentation).

scriptSessionId = scriptSessionId + Math.floor(Math.random() * 1000);
  1. Write the result to the log for informational purposes.

"Extracted scriptSessionId " + scriptSessionId);
  1. Set the clip property.

$prop.set("MessageClip", "scriptSessionId", scriptSessionId);