Open frozenfrank opened 2 months ago
This will be a huge upgrade to the autograder to make it easier to use. Hopefully the config system will allow for easy update processing of config changes. Though I do wonder if it would make more sense to break this into a few separate issues, since a lot is going on here.
This represents a smaller portion of Issue #156.
Overview
Good efforts have already been made to make the Canvas RubricIds, Rubric Points, and Canvas Course number configurable; however, this still represents only a small portion of the settings that need to be configured from time to time. Editing fields other than these require editing the code, rebuilding, and republishing the autograder which then has to restart before the patches are applied.
Current view of phase settings page:
Proposal
Include new data structures and fields to be able to remotely edit/configure all magic strings and numbers. Some of these should be housed in a database where we can configure them remotely, but some may only need to be configurable via command line prompts with the current values provided as defaults.
For most of these, implementation should require defining where the configurable value lives, and then reading from that location and falling back to the current value when it's not provided. For others, it may be preferable to require that values be provided and refuse to run otherwise.
Care should be taken to ensure that changes to the dynamic values will be caught quickly, as opposed to requiring an entire restart of the AutoGrader server. Since there is likely no system in place to automatically push remote changes onto the server, fetching the values for each submission is probably sufficient.
List of Identified Values
Phase Data
PhaseUtils.verificationConfig()
importantPhaseUtils.extraCreditValue()
importantPhaseUtils.minUnitTests()
PhaseUtils.getRubricTypesFromPhase()
PhaseUtils.phaseHasCommitPenalty()
PhaseUtils.requiresTAPassoffForCommits()
PhaseUtils
items?getPreviousPhase
getPhaseAsString
getPhaseFromString
passoffPackagesToTest
unitTestPackagesToTest
unitTestPackagePaths
unitTestCodeUnderTest
getModuleUnderTest
isPhaseGraded
isPassoffRequired
extraCreditTests
getConfigurationAssignmentNumber
Other constants and variables
FORGIVENESS_MINUTES_HEAD
LateDayCalculator:getEncodedPublicHolidays()
LateDayCalculator:MAX_LATE_DAYS_TO_PENALIZE
Scorer:PER_DAY_LATE_PENALTY
ScorerHelper:getHandInDateZoned()
DateTimeUtils:getDateString()
(timezone)ProcessUtils:DEFAULT_TIMEOUT