Adserver for Testing Server Side Ad Insertion and Impression Tracking

Eyevinn Technology
3 min readSep 10, 2021

Anyone in this industry that has been involved in implementing server-side ad insertion in ad funded streaming services knows that it could be cumbersome to verify that tracking and ad insertion works as expected. To facilitate for this testing we have developed an Ad Server to be used in this context. Example of use cases:

  • Testing server-side ad-insertion (SSAI) stitching as the VAST response from this ad servers always contains ads and creatives.
  • Verify what query parameters are passed from the client device through the SSAI component as this ad server stores all received query parameters for a request (session).
  • Verify that client devices implement correct tracking as the VAST response contains tracking URLs back to the test ad server. All tracked events for a session is stored and can be obtained by the API.

How does it work?

The Ad Server provides a VAST request endpoint that returns a VAST document containing a number of ads and creatives based on duration. The response is deterministic so you know you will always get any ads (which is not the case working with a real ad server) and that the ads contains the right type of creatives.

curl -X 'GET' \
'https://eyevinn.adtest.eyevinn.technology/api/v1/vast?c=true&dur=120' \
-H 'accept: application/xml'

When a VAST is requested a new session is created in this Ad Server together with the ad request parameters that were used in the request. This can be used to verify that the correct parameters from the client device is going all they way through to the ad server. To verify that the setup in the server-side ad-inserter component is correctly configured.

      "sessionId": "0951ba81-65ed-4a20-b551-244b8319a5fd",
"userId": "",
"created": "2021-09-09T15:49:58.987Z",
"adBreakDuration": "116",
"clientRequest": {
"c": "true",
"dur": "120",
"uip": "85.24.142.180",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.3 Safari/605.1.15",
"acceptLang": "sv-se",
"host": "eyevinn.adtest.eyevinn.technology"
},

The tracking links in the VAST document is pointing back to the ad server and all the fired events for a session from the client device is stored here. This makes it possible to lookup what events were actually fired from the client, and you can verify that the tracking is done correctly. Most of all you will find out quite soon if the client device does not send any events at all.

<Tracking event=\"firstQuartile\"><![CDATA[https://eyevinn.adtest.eyevinn.technology/api/v1/sessions/0951ba81-65ed-4a20-b551-244b8319a5fd/tracking?adId=streamingtech_ad_2&progress=25]]></Tracking>

How can I use this?

This ad server is available under an open source license and we are happy for any type of contributions or attributions. You find the source code in Eyevinn’s Open Source Software Center on GitHub. Download (clone the repo) and build a Docker container. An example Dockerfile is available in the repository. Run this container in your environment.

The other option is to use a hosted service by Eyevinn and then you will have it accessible under YOURCOMPANY.adtest.eyevinn.technology and you can instantly incorporate it in your testing framework. Contact us at sales@eyevinn.se for more information and pricing options. In both options the API documentation is available under /api/docs.

If you have any feedback or suggestions on how to improve this component we are happy for hearing about it. Just drop an issue in our GitHub project.

This blog was provided by an Eyevinn Video-Dev Team, and if you have any further questions and comments on this post drop a comment below or tweet the post author on Twitter (@JonasBirme).

Eyevinn Technology is leading specialists in video technology and media distribution, and proud organizer of the yearly nordic conference Streaming Tech Sweden.

--

--

Eyevinn Technology

We are consultants sharing the passion for the technology for a media consumer of the future.