Model Implementation
The model implementations implement the model components using
specific technologies and methods.
Auto assignment algorithms
There are two built in auto-assignment algorithms.
- One marker to a student, which evenly distributes students to markers
such that each student only has one marker.
- All markers to a student, which naively creates every possible
mapping of students to markers.
Database access objects
The current implementation provides database access through MySQL and file storage.
- Creating a new DAO is relatively easy, just subclass
IEntityDAO
<NewBean> and implement INewBeanDAO
and fill in the required
methods, then add to the factory.
- Modified files in a transaction are stored in the Factory and passed
to special functions in
MySQLResourceDAO
when a transaction is started,
commited or aborted.
- Code is very messy but functional and withstands stress testing.
Mail sending
The JavaMail framework is used.
Session authentication
DAO methods are used to authenticate (internal database
authentication) and to update credentials
Testing framework
Default test runner
- Uses the Java concurrency framework and a thread-pooled worker
operation to generate Future objects.
- Unpacks the submission and test resource into a temporary directory
before executing tests.
- Executes tests under the context of the worker thread.
Built in test executors
- Provides executors for reading a file, running a shell command,
or executing a Java class.
- File reader reads a submission file and treats the content as
execution output.
- Shell command is run as a sub process, the submission and test
resource directories are passed as environment variables.
- Java class is run as a sub process with a heavily restricted execution
environment, the submission and test resource directories are placed on
the classpath.
Built in test methods
- Provides test methods for generating a random result, marking using
diff, or marking using regular expressions.
- Random result is degenerate and used for testing.
- Diff test based on the BOSS1 diff test method, with a few
enhancements to handle errors and exit code.
- Regex test based on the BOSS1 regex test method, with a few
enhancements to handle errors and exit code.
Administration operations
Currently only a University of Warwick specific one for synchronising
with the data provided by the University via its ADS database.