Key Information

The challenge is finished.

Challenge Overview

The Fog recorder application is a C++ application that allows a user to schedule recordings for TV shows and record live TV. We use this project to test certain functionality of client applications, which are external to just the recorder.

The recorder is a Mac application that can be opened and run in XCode, and it includes Makefiles that can be used on Linux, and there are also ways to build for Windows.

The Fog application exposes a set of REST API calls that can be found here:


The existing code is here:

A link will be provided in the forum where you will be able to get access.


Your submission to OR should be a Git patch file that can be applied to see the fixes. Here is documentation on how to generate a Git patch file:


Currently, we have some cursory tests working right now (see the unit_tests folder in the repo).  This challenge will:

* Clean up the tests to work with the very latest Fog code
* Ensure that the latest NPM plugins are used
* Add a new test, detailed below:

New test

We are going to start to add expanded tests that are much more involved.  The code is relatively stable and is moving to a wide production release, so we want to add tests that ensure we aren't regressing on anything.

For this challenge, please add a new test to:

1. Start a recording of a configurable URL (default to
2. When a recording is running, let it run for a configurable interval, like 5 minutes.
3. While the recording is running, check a set of values at a configurable interval to ensure the various functions are proper:
3. While the recording is happening, ensure that:
* The manifest file returned by the recording URL in fog is correct (for the local fog server).  The manifest should be updated regularly with new fragments and details
* Ensure that the fragment files are downloaded properly and that the fragments downloaded match the expected bitrates as configured in the config.json
* Ensure that the SAP is downloaded, if the config.json is configured for SAP.
* Ensure that the memory usage doesn't grow rapidly and that CPU usage is minimal for the fog application (under a configurable threshold, like 10%)
* Ensure that the HTTP request for the main manifest, sub-manifests, and individual fragments all work quickly and return the expected data

The expectation is that this test must be robust.  We want a lot of work put into implementing this single test to ensure that the recording is working properly, the local manifest is being updated with the fragments, the fragments are downloading quickly, and that the correct bitrates are being downloaded.



Final Submission Guidelines

Please see above


2016 TopCoder(R) Open


Final Review:

Community Review Board


User Sign-Off


ID: 30054768