Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fullstack: Allow Other Phase Config Values to be Edited Dynamically #413

Open
frozenfrank opened this issue Sep 7, 2024 · 1 comment
Open
Assignees
Labels
enhancement New feature or request future Requires availability of another feature first

Comments

@frozenfrank
Copy link
Contributor

frozenfrank commented Sep 7, 2024

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:
image

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() important
  • PhaseUtils.extraCreditValue() important
  • PhaseUtils.minUnitTests()
  • PhaseUtils.getRubricTypesFromPhase()
  • PhaseUtils.phaseHasCommitPenalty()
  • PhaseUtils.requiresTAPassoffForCommits()
  • Other PhaseUtils items?
    • Some of them appear to be internal values that we don't want to configure remotely...
    • @19mdavenport I would love your comments on the rest of the issues. How many of these can/should be configurable remotely?
      • 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
@frozenfrank frozenfrank added the enhancement New feature or request label Sep 7, 2024
@webecke
Copy link
Contributor

webecke commented Sep 8, 2024

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.

@webecke webecke self-assigned this Nov 6, 2024
@webecke webecke added the future Requires availability of another feature first label Nov 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request future Requires availability of another feature first
Projects
None yet
Development

No branches or pull requests

2 participants