Challenge Overview
The Hercules Player is an application that allows customers to download videos to their computer or device for offline playback, along with streaming playback of videos for online playback.
The Hercules Fog project has stripped out some key portions of the Hercules Player application into a new test application for downloading videos from a server, modifying the manifest, and then playing back on various mobile and TV devices.
The current implementation is C++ and will run on:
• Windows
• Linux
• Mac
We have been going over the code in anticipation of it being updated and put onto embedded devices. We don’t have a good base for validation and testing, with a lot of the required testing being manual validation, which isn’t good.
This contest will extend a Python / CLI based interface that can be used to test the application. Previous versions have targeted ncurses, but we need more flexibility than what that offered, so we are going to use this challenge to convert the UI to be web based.
Fog REST API
The Fog application exposes a REST API when it runs. By default this is on port 8080. Here is documentation on the REST API that will eventually be fully testable through this interface:
http://docs.fogrecorder.apiary.io
Requirements summary
This challenge will convert the UI from ncurses to web-based using a simple Bootstrap theme. It will also integrate playback so we can more easily test.
Web server
The Python tester should start a web server when the tester launches. The implementation of this is at your discretion, but the SimpleHTTPServer would be an option (https://docs.python.org/2/library/simplehttpserver.html)
The server will need to support some basic AJAX functionality for updating status.
UI Theme
The web UI should generally match the ncurses UI, with some changes to the navigation to make it easier to use. These requirements apply:
- Please use a free Bootstrap theme to build the UI layout. This is preferred: https://bootswatch.com/lumen/
- There should be a top header with drop down menus so the user can easily get to pages for:
- Viewing the list of current recordings
- ���Viewing the status and summary page of a single recording
- Adding a TSB recording
- Adding a VOD recording
- Adding a scheduled recording
- Viewing the list of current recordings
- ���The summary page should update via AJAX the same way it does in the ncurses UI now
- We won't have a top menu for selecting tests anymore, since the navigation above will be enough for that
- The default page should just show the list of current recordings
- Please use FontAwesome for any graphics: http://fontawesome.io/
Playback
This challenge will implement a new playback page that can be used to test playback. We are going to take the functionality here: nh.lab.xcal.tv/heslip/player/dev/# and we are going to build a new playback page around it. From that page, we are going to show:
- The play state on the right
- The playback area, with the playback controls
- The log underneath the playback area
- The menu on top won't be needed
- The options on the left won't be needed
- The HLS Manifest URL text box and button won't be needed
There should be a "Play" button on the summary page for a single recording that will open up this playback screen in a new tab and start playback.
To support DRM playback, we will allow the user to configure a username and password in the config for the tester. If a username and password are configured, the playback screen will first provision using that username and password, and then it will start playback of the Fog URL provided by the recording summary page.
Feel free to copy in the SWFs and JS as-is from the dev site above. Further hints will be available in the forum.
Code encapsulation
Proper code design is important here because we will be adding on to this project quite a bit. Make sure that we can easily add new menu items, menu screens, and summary screens, and make sure the warnings can be extended to add new checks.
Final Submission Guidelines
Please see above