Running a Video Streaming Performance Test using Flood.io and UbikLoadPack

How to load test video streaming with JMeter, Flood, and the UBIK Load Pack plugin

Our friends at Ubik wrote this article about using the Load Pack with Flood, and we are reposting it here with permission.

In this blog, we will see how to run a Video Streaming Performance Test using Flood.io and UbikLoadPack to check the performances of a platform delivering one of the following formats:

  • Apple HLS
  • Mpeg-Dash
  • Microsoft Smooth (HSS)
  • Adobe HDS with

We’ll use the following tools:

Pre-requisites

To run what is described below:

  • Install Java 8 or Java 11
  • Request a trial version of UbikLoadPack Video Streaming Plugin, you’ll receive a mail with an attached trial license and a link to download the bundle.

The JMeter test plan

We’ll use a very simple test plan :

Note that the thread parameter values are hardcoded here, but we would need to change the values to use properties set by Flood so that they can be set from the Flood user interface.

JMeter Threads

In UbikLoadPack streaming sampler we just set

  • Playlist URL to the HLS manifest URL (we use a property MANIFEST_URL to be able to modify it from outside of JMeter, it defaults to our Mock server “http://localhost:8080/hls/live/test.m3u8“)

UbikLoadPack Video Sampler configuration
UbikLoadPack Video Streaming Sampler

Testing your own Video Streaming servers

If you want to test your own servers, just pass in Advanced parameters of flood IO Stream configuration, for example:

bash
-JMANIFEST_URL=https://devstreaming-cdn.apple.com/videos/streaming/examples/bipbop_4x3/bipbop_4x3_variant.m3u8

Creation Steps on Flood.io

Login to Flood.IO and click on Stream > Create Stream

Test Design Configuration

Enter Test name, select Script Upload checkbox and Click on Choose Files.

Upload the following files:

  • ubik-streaming-plugin.license.txt (attached to the trial mail when you request a trial), ensure your add the suffix .txt to be able to upload it
  • ulp_video_streaming_demo.jmx (your test plan)
  • ulp_vs_bundle.zip a zip bundle with following structure

UbikLoadPack Plugin bundle
UbikLoadPack Plugin bundle

To create this bundle, run from the folder containing bin and lib folders:

bash
zip -r ulp_vs_bundle.zip bin/ lib/

You end up with this this configuration:

Flood IO Configuration
Flood IO Design Configuration

In Advanced Parameters, you can pass regular JMeter properties, in this example we’ll pass the URL of our Manifest

Launch Configuration

Click on Configure Launch:

  • Select the regions you want
  • Define Users per region: 10 in our example
  • Duration: 15 minutes in our example
  • Rampup: 1 minute in our example

Flood.io Launch Configuration

You’ll then have to wait for test to start (4 minutes as average in our tests):

The test then starts and you can see graphs appear to monitor your test:

You can select the Sampler (Chunk here) you want to watch:

Once test is finished, click on the icon on the upper right where you can download result by clicking on Archived Results:

You can then generate the HTML report using JMeter menu Tools > Generate HTML Report:

Configure wizard:

Report:

At the end, we have a JMeter HTML report generated with custom UbikLoadPack report in the report folder.

Statistics

Lag Ratio over time:

Buffer Fill over time

Lag Ratio without Buffer fille over time:

Try it:

Request a trial version HERE.
Ask for a turnkey or consulting service at ubik-load-pack-sales@ubik-ingenierie.com.

About UbikLoadPack:

Other links:

Start load testing now

It only takes 30 seconds to create an account, and get access to our free-tier to begin load testing without any risk.

Keep reading: related stories
Return to the Flood Blog