API integration test runners

Currently, there are 3 API based test runners.

Configuration can be spread throughout multiple places.

For example dockerTestRoot can be configured in Charon.

groupingFolders and systemExtra can be configured in the root directory of git repository.

testingPlatform can be configured in grouping folder.

And some exercise specific configuration can be configured in exercise folder.

Here is possible configurations and how to use it.

Uva

Uva test runner uses Online Judge's public api.

Configuration

Let's say we want to configure tester to work with 11450 - Wedding shopping exercise.

for that arete.json (or Charon settings) should contain next lines:

  • testingPlatform = uva

  • dockerTestRoot = 11450 (the exercise number. Same number what is present in the exercise name)

  • systemExtra = overrideContentRoot,skipCopyingTests (this is to compensate for no test repository provided)

  • groupingFolders = ["UVA"]

And student needs to fill the dockerContentRoot field with his unique identifier.

Here are some steps that can be given to a student so he/she knows how to fill that field:

Tehke kasutaja [uva](https://onlinejudge.org/) keskkonnas ning seejärel tehke gitti endal UVA kaust, kus sees on `arete.json` fail järgmise sisuga:

```
{
 "dockerContentRoot": "xxxxxxx"
}
```

Kus siis "xxxxxx" on teie Online Judge ID, mille saate [siit](https://onlinejudge.org/index.php?option=com_comprofiler) lehelt. 

Seejärel lahendage [antud](???) ülesanne endale sobivas keeles ning kui Uva annab `Accepted`, siis pange enda lahendus gitti `UVA/???` kausta.

(faili nimi pole oluline)

HackerRank

HackerRank tester relies on TaltechCoding user to make a public contest which students then can join

When 100 points is achieved for an exercise means max grade is achieved. For every contest exercise a new charon must be made.

Configuration

Let's say we want to configure Connected Cells in a Grid.

for that arete.json (or Charon settings) should contain next lines:

  • testingPlatform = hackerrank

  • dockerTestRoot = connected-cell-in-a-grid (the exercise name in the url right after /challenges/)

  • systemExtra = overrideContentRoot,skipCopyingTests (this is to compensate for no test repository provided)

  • dockerExtra = erikursuse-soojendus, (the contest name in the url right after /contests/)

  • groupingFolders = ["HACKERRANK"]

And student needs to fill the dockerContentRoot field with his unique identifier.

Here are some steps that can be given to a student so he/she knows how to fill that field:

Tehke kasutaja [HackerRank](https://www.hackerrank.com/dashboard) keskkonnas ning seejärel tehke gitti endal HACKERRANK kaust, kus sees on `arete.json` fail järgmise sisuga:

```
{
 "dockerContentRoot": "xxxxxxx"
}
```

Kus siis "xxxxxx" on teie kasutajanimi, mille saate [siit](https://www.hackerrank.com/settings/account) lehelt. 

Seejärel lahendage [antud](???) ülesanne endale sobivas keeles ning kui HackerRank annab `Accepted`, siis pange enda lahendus gitti `HACKERRANK/???` kausta.

(faili nimi pole oluline)

Kattis

Kattis tester relies on a public contest which students then can join.

When contest consists of 5 exercises and student solved 2 for 100% and 1 for 50% then his/her total grade will be 50%. For every contest a singular charon must be made.

Configuration

Let's say we want to configure tester to work with this contest.

for that arete.json (or Charon settings) should contain next lines:

  • testingPlatform = kattis

  • dockerTestRoot = qn8jgq (the contest id in the url right after /contests/)

  • systemExtra = overrideContentRoot,skipCopyingTests (this is to compensate for no test repository provided)

  • groupingFolders = ["KATTIS"]

And student needs to fill the dockerContentRoot field with his unique identifier.

Here are some steps that can be given to a student so he/she knows how to fill that field:

Tehke kasutaja [Kattis](https://open.kattis.com/login) keskkonnas ning seejärel tehke gitti endal KATTIS kaust, kus sees on `arete.json` fail järgmise sisuga:

```
{
 "dockerContentRoot": "xxxxxxx"
}
```

Kus siis "xxxxxx" on teie tiimi nimi, mille saate peale võistlusele registreerimist. Seda peab ainult 1 inimene tegema.

Võistluse link tehakse avalikuks vahetult enne võistluse algust.

Peale võistlust pange enda lahendused gitti `KATTIS/???` kausta.

(faili nimed pole olulised)