Pottery-backend provides an API for testing submissions to programming exercises. Internally it uses git repositories to store tasks and code submissions which are tested within docker containers.
It is currently under development and so you should expect things to be broken and for API changes to occur.
Build with maven. Most dependencies are available directly from maven central and so will be pulled automatically.
Some dependencies are not in maven central and so should be built locally and installed into your local maven repository.
- pottery-backend-interface: repository at https://github.com/ucam-cl-dtg/pottery-backend-interface.git
For each of the above you need to:
git clone [repository-url]
cd [project-name]
mvn clean compile package install
cd [project-name]
mvn clean compile package
This will produce a WAR file in /target
You should install docker, and make sure that its listening on the port 2357. At the moment pottery requires only one image exists, this should be called 'template:java'. Create it with something like:
docker run -i -t ubuntu:16.04
apt-get update
apt-get upgrade -u
apt-get install software-properties-common
add-apt-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer git maven vnc4server sudo
apt-get clean
[exit]
docker ps -a
docker commit [containername] template:java
docker rm [containername]
You need a postgres user called 'pottery' with password 'pottery' and a database called 'pottery'. Configure your server to allow TCP connections as this user to the 'pottery' database (from localhost only).
Create the schema in the database:
psql -U pottery -h localhost -f docs/pg_schema.sql
Pottery has been tested with tomcat 8. Copy the pottery WAR file into the webapps directory of your tomcat installation and restart.
pottery-backend comes with a simple text interface. This should be accessible at http://localhost:8080/pottery-backend/index.html or similar depending on your installation, replace 'pottery-backend' with whatever the name of the WAR file is that you used.