Challenge Overview
Project Overview
TopCoder Competition Engine is a system used for Single Round Matches (SRM) and Marathon Matches (MM).
Currently, Arena VM is heavily used to challenges related to TopCoder Competiton Engine.
but it is painful to maintain it and update if we need to install new softwares, because it can only be handled by internally.
For this series of challenges, we'd like to use the power of community to help with maintain and improve it.
Competition Task Overview
The purpose of this challenge is to do some initial steps, so we can involve the community to help maintain it more easily.
Previously, it is not easily, we normally test the new steps, and commit into the vm_setup svn, then launch a new VM to verify.
For the challenge, we'd like to create some clean utilities, so we can repeat some init steps in the same VM easily.
About Current VM Setup Scripts
For this challenge, every competitor will be grant root access to the Arena VM, so you can find the vm setup scripts at home directory of root user.
Following is the general description from my understanding.
- /root/hook-script.sh - this is the hook script that will be called after the Arena VM allocated, it will retrieve the main-vm-script.sh to start the vm initialization.
- /root/main-vm-script.sh - the main vm initialization script for setting up TC VMs, not just the Arena VM, the INIT_TYPE will determine the scope for initialization, for this challenge, you just need to focus on INIT_TYPE = arena
- /root/startup-tmp - the directory contains the shell scripts checkout by main-vm-scripts.sh.
- /root/startup-tmp/common-init.sh - this inits the common setup like softwares.
- /root/startup-tmp/db-init.sh - this inits the informix database and mysql database.
- /root/startup-tmp/arena_init_script.sh - this sets up all related staff for arena (topcoder competitition engine) and start service.
- /root/startup-tmp/api-init.sh - this sets up the TC API under api account.
Challenge Scope
For this challenge, we'd like to do some exploration.
- We'd like to explore the possibility to run the arena_init_script.sh repeatly, one thing we can think about is to create a clean_arena_init.sh file, which will rollback the setup of arena_init_scripts.sh.
- for arena_init_scripts.sh, please check if some setup can be moved to somewhere else.
- for main-vm-scripts.sh, there are a lot of environment variables, see Set Variables section, and each if block. We'd like to clean it up by duplication. and create a separate set-env-variables.sh, which can be used to init before calling arena_init_scripts.sh
Verification
in order to verify the repeatly running the arena_init_scripts.sh, you are expected to follow the SRM Problem Guide to verify the make sure the functionality and services provided by TopCoder Competiton Engine is still working properly.
Arena VM UsageBefore asking your own VM, you need to have a public key on your profile before asking for the VM.
You can find more details on how to generate a key http://apps.topcoder.com/wiki/display/projects/Generate+SSH+Key and how to connect using it http://apps.topcoder.com/wiki/display/projects/Connect+Using+SSH+Key.
Please reference http://apps.topcoder.com/wiki/display/docs/Competition+Engine+VM+Setup for general usage.
Previously, we have made several update for the Arena VM. So when the Arena VM allocated is available for you, there is a problem and a SRM contest already setup, you can reuse that for testing.
Final Submission Guidelines
Submission Deliverables
Below is an overview of the deliverables:
- new/changed files
- Detail Guide to run the scripts.
- Working VM environment for verification.
Final Submission
For each member, the final submission should be uploaded to the Online Review Tool.