FOP-2425-Marathon/solution/H07/jagr.conf
2025-03-16 16:45:18 +01:00

70 lines
3.3 KiB
Text

# The locations of the following directories may be configured here
dir {
# Grader jar ingest directory
graders=graders
# Runtime dependencies for submissions
libs=libs
# Rubrics export directory
rubrics=rubrics
# Submissions ingest directory
submissions=submissions
# Submission export directory
submissions-export=submissions-export
}
executor {
#
# The maximum amount of concurrency to use for grading.
# For a given concurrency n, Jagr will ensure that a maximum of n threads or processes are used concurrently that actively run
# submission code.
concurrency=4
#
# The JVM arguments to use for grading. These arguments are passed to the JVM that runs the grading code.
# This only applies to the "process" mode, as the "thread" and "single" modes do not spawn a new JVM.
#
jvm-args=[]
#
# The executor mode to use. The following options are available:
# - "single" ::
# Runs every TestCycle consecutively in the main thread. This mode does not create any extra processes or threads for grading.
#
# - "thread" ::
# Creates a separate thread for every TestCycle. This mode greatly speeds up the grading process, especially with a large
# amount of submissions. The overhead of creating, managing and synchronizing threads is minimal compared to the performance
# benefits. However, this mode has the danger of creating "unkillable" threads (e.g. from certain kinds of infinite loops)
# which dramatically slow down the grading process through resource starvation of the host machine.
#
# The maximum number of concurrent threads used for grading is defined by the option "concurrency".
#
# - "process" ::
# Creates a separate process for every TestCycle. This mode has the most overhead, but is also the most defensive against
# "badly behaving" code. A certain amount of sandboxing can be achieved in this mode, which is not possible in the other modes
# such as "thread" or "single".
#
# The maximum number of concurrent child process used for grading is defined by the option "concurrency".
mode=process
#
# The grading thread's maximum permitted elapsed userTime in milliseconds since the last timeout before an
# AssertionFailedError is thrown. If a thread's userTime satisfies
# (userTime - lastTimeout) > individualTimeout,
# the current userTime is stored for comparison later, and an AssertionFailedError is thrown to be caught by JUnit.
timeout-individual=10000
#
# The grading thread's maximum permitted elapsed userTime in milliseconds (from thread start) before an
# AssertionFailedError is thrown. If a thread's userTime satisfies
# ((userTime - lastTimeout) > individualTimeout) && (userTime > totalTimeout),
# an AssertionFailedError is thrown to be caught by JUnit. Note that lastTimeout is not reset in this case, and all further
# invocations of checkTimeout() will result in an AssertionFailedError
timeout-total=150000
}
extras {
moodle-unpack {
assignment-id-regex=".*Abgabe[^0-9]*(?<assignmentId>[0-9]{1,2}).*[.]zip"
enabled=true
student-regex=".* - (?<studentId>([a-z]{2}[0-9]{2}[a-z]{4})|([a-z]+_[a-z]+))/submissions/.*[.]jar"
}
}
transformers {
timeout {
enabled=true
}
}