Skip to content
i++: a relay run counting system
Java Python Other
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Processor
Publisher
Reader
Replayer
UI
configs
doc
gradle/wrapper
replays
scripts
shared
vagrant
.gitignore
.travis.yml
COPYING
README.adoc
TODO.adoc
appveyor.yml
build.gradle
gradlew
gradlew.bat
settings.gradle

README.adoc

i++

Travis CI Build Status AppVeyor Build Status Coverage Status

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.

Project goals

The goals of i++ are to create a system that is:

  1. Easy to use. The end goal is to make i++ just as easy to deploy and manage as, for example, a Wordpress blog.

  2. Fault tolerant:

    1. Irregularities (e.g. overly long or short laps) should be easily detectable.

    2. Passings at checkpoints should continue to be recorded, even in case of network failure.

    3. Multiple checkpoints can be used, where checkpoints can fail without making the lap counting impossible.

    4. Corrections should be applied where necessary.

    5. The system can function autonomously, so lack of Internet access does not interfere with the ability to count laps.

License

i++ is distributed under the terms of version 3 of the GNU Affero General Public License. Other versions do not apply.

Requirements

OS

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.

Dependencies

Most of the dependencies are handled by Gradle, but these aren’t:

Java SE 8

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

Git

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.

Redis

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

How to build

All of the tests are run automatically, the source compiled and installed with a simple:

./gradlew
You can’t perform that action at this time.