Skip to content
This repository has been archived by the owner on Sep 7, 2023. It is now read-only.

ULYSSIS-KUL/ipp

Repository files navigation

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