Adobe HTTP Dynamic Streaming (HDS) Recording

Document created by Chris Sommerstad Employee on Jul 20, 2017Last modified by Avril Dsilva on Aug 10, 2017
Version 2Show Document
  • View in full screen mode

SOASTA CloudTest supports the testing of Adobe HTTP Dynamic Streaming (HDS).  CloudTest dynamically decodes the HDS .boostrap files into XML, giving the tester the ability to simulate a live-streaming user.

When recording from an HDS-based application, the Recording Editor will automatically decode the binary XML and then display the plain-text version. Initial setup involves creating a target pointed at the URL to test. Once this target exists, you can record HDS-based binary sites using the Recording Editor in the same manner as you would with any other site.

Create the HDS-based Target

  1. In the Central list, select Targets and then click New.
  2. The Target Definition Wizard appears. Click Next. The Start by Selecting a Target Type step appears.
  3. Choose HTTP and then click Next.

The Define the HTTP Target step appears.

  1. For HTTP you will be asked to enter a target name, location, and any associated authentication information.
  2. Once you have supplied the target information, click Next. A summary screen appears to display the data you entered. Review this information and click Finish when you're ready.

Record and Convert an HDS session to a Clip

You must create a recording containing all the HDS functions that you wish to use, and then convert that recording to a clip.

  1. Start your SOASTA Conductor.
  2. In the Central list, click HTTP(S) Recording and then click New to start a new recording of your HDS-based site.
  3. Open the HDS site in your web browser in a second window and then return to CloudTest to click Record.
  4. Perform any necessary actions in the second window necessary to capture the HDS messages.
  5. Apply any filtering (see Filtering Recordings) to the recording that you’d like and when ready, click Convert to a Clip. The Create a Test Clip from a Recording Wizard appears.

The display of messages can be filtered so that only those messages that meet the specified criteria will display. This can be very useful in narrowing the set of messages to examine. The filter is available in the upper right hand corner.

  1. Enter a clip name and select a clip timing type (use Sequenced if you’re unsure) and then click Next. The Bursts and Think Times page appears.

The Match Targets to Recording Messages page appears.

  1. Wait for the target(s) that you created in the previous set of steps to be auto-selected from the Available Targets list and placed into the Selected Targets list and then click Next.
  2. The Create Clip summary page appears. Review the settings and then click Next again to create the test clip. The test clip is created and the Summary page appears.

In the Next Steps section, choose Go to the Clip Editor in order to inspect messages in the HDS-based test clip.

Editing an HDS-based Message in the Clip Editor

  1. Switch to List view and inspect the recorded clip for Adobe HDS messages.  For live streams, the user should look for any files with the extension .bootstrap.

The selected message is opened in the sub-pane with the tab title Selected: <MessageName> active.

  1. Create a JavaScript program that will inspect the XML in the .bootstrap files. These files are an XML representation of the Adobe Bootstrap Info Box.

The JavaScript program must then perform the following, which is taken from the Adobe HDS documentation:

Using the bootstrap information (run tables) contained in the file, the client translates the desired timecode to a segment number/fragment number pair. The client then constructs a URL based on this number pair, which requests a specific fragment from a specific F4F file.

  1. Play the clip in a test composition.

When you play a test composition containing HDS messages, CloudTest will automatically encode it before sending the request.

Similarly, message responses are decoded before display in results. The decoded response will be displayed in results (such as in the Result Details widget).