JAlgoArena Judge Agent is heart of JAlgoArena platform. It is responsible for generation of skeleton code as well as judging submissions based on requirements specified in problem definition.
Demo: https://jalgoarena-ui.herokuapp.com/
- JAlgoArena Judge Agent can be easily scalable - it's stateless and together with Eureka and API using Ribbon load balancer gives unlimited way to scale judgement capability
- It supports Kotlin and Java
- JAlgoArena Judge Agent is generating skeleton code for particular problem - based on meta data received from Problems Service
- It judges correctness of the solution based on the pre-specified test cases as well as time and memory limits
- It's using simple heuristic to calculate time and memory results - running in couple iteration and looking for best results makes the judgement itself more predictable and repeatable
Endpoint | Description |
---|---|
GET /problems | Get problems list |
GET /problems/:id | Get problem by id |
POST /problems/:id/submit | Post problem solution to judge |
- JAlgoArena
- JAlgoArena UI
- JAlgoArena Judge
- JAlgoArena Problems
- JAlgoArena Eureka Server
- JAlgoArena API Gateway
- initially, developer push his changes to GitHub
- in next stage, GitHub notifies Travis CI about changes
- Travis CI runs whole continuous integration flow, running compilation, tests and generating reports
- coverage report is sent to Codecov
- application is deployed into Heroku machine
- Heroku (PaaS)
- Kotlin Compiler (K2JVMCompiler), MemoryClassLoader, MemoryJavaCompiler
- Spring Boot, Spring Cloud (Eureka Client)
- TravisCI - https://travis-ci.org/spolnik/JAlgoArena-Judge
There are two ways to run it - from sources or from binaries.
- Default port:
8080
- go to releases page and download last app package (JAlgoArena-Judge-[version_number].zip)
- after unpacking it, go to folder and run
./run.sh
- you can modify port Eureka service url in run.sh script, depending on your infrastructure settings. The script itself can be found in here: run.sh
- run
git clone https://github.com/spolnik/JAlgoArena-Judge
to clone locally the sources - now, you can build project with command
./gradlew clean bootRepackage
which will create runnable jar package with app sources. Next, runjava -Dserver.port=8080 -classpath "lib/*" -jar build/libs/jalgoarena-auth-*.jar
which will start application - there is second way to run app with gradle. Instead of running above, you can just run
./gradlew clean bootRun