i++ is a relay run counting system, originally created for the 24 hour run in Leuven.
It is created for relay runs with large teams (e.g. student organisations), spanning a multi-hour period, a full day in case of the 24 hour run. The scores are entirely determined by how many laps each team manages to run. Individual lap times are not relevant for the score.
The goals of i++ are to create a system that is:
-
Easy to use. The end goal is to make i++ just as easy to deploy and manage as, for example, a Wordpress blog.
-
Fault tolerant:
-
Irregularities (e.g. overly long or short laps) should be easily detectable.
-
Passings at checkpoints should continue to be recorded, even in case of network failure.
-
Multiple checkpoints can be used, where checkpoints can fail without making the lap counting impossible.
-
Corrections should be applied where necessary.
-
The system can function autonomously, so lack of Internet access does not interfere with the ability to count laps.
-
i++ is distributed under the terms of version 3 of the GNU Affero General Public License. Other versions do not apply.
i++ is based on Java 8 and Redis. It should work on any system where these are available. This should include Windows, Mac OS X, and of course, Linux. At the 24 hour run, Linux laptops and Raspberry Pis are used.
Most of the dependencies are handled by Gradle, but these aren’t:
This is a Java 8 project, so make sure that either your default Java SDK version is set to Java 8, or set Gradle to use Java 8 by creating a file called gradle.properties:
gradle.properties
org.gradle.java.home=/path/to/jdk/8
You probably already have git installed, because you checked this out. This project has a submodule, so if you didn’t do a recursive clone, you’ll need to perform the following ritual to get started:
git submodule update --init --recursive
The submodules are updated as part of the updateSubmodules task, which is run by default, so you don’t need to worry about updating that. Note that this requires git to be in your PATH.
This project uses Redis. As part of the build process, some integration tests are run with Redis on port 12345, so make sure that Redis is installed.
In order for Redis to run, redis-server needs to be in your PATH, /usr/bin, /usr/sbin, or /usr/local/bin. You can also specify the full path to redis-server in Processor/test/resources/redispath.
On Debian, Ubuntu or derivatives, you can install Redis with:
apt-get install redis-server
On Mac OS X, you can use:
brew install redis
On Windows, you can either build Redis from source, or get a binary build here.
TODO: Make the test port configurable, or choose one that’s free at random