Skip to content

Update with latest commits from johnb i1006_test_scoreboard#2

Merged
clevengr merged 14 commits intoclevengr:i1006_point_scoring_invoke_graderfrom
johnbrvc:i1006_RC1
Aug 1, 2025
Merged

Update with latest commits from johnb i1006_test_scoreboard#2
clevengr merged 14 commits intoclevengr:i1006_point_scoring_invoke_graderfrom
johnbrvc:i1006_RC1

Conversation

@johnbrvc
Copy link

@johnbrvc johnbrvc commented Jul 30, 2025

Description of what the PR does

As discussed this addresses the following:
LegacyGrader - handles non-AC cases properly instead of just printing the result, it now return sit.
LegacyGrader - Added Debug file logging
Executable - support on_reject = break
Executable - handle null returns from grader on sub groups
Submission throttling - can disable via setting in system.pc2.yaml
Merged latest changes and fixes to event feed to support Resolver.
Fixes results file generation, and consequently the NSA.
Other small bug fixes.

Issue which the PR addresses

Partial fix to pc2ccs#1006

Environment in which the PR was developed (OS,IDE, Java version, etc.)

Windows 11
Ubuntu 24.04

Precise steps for testing the PR (i.e., how to demonstrate that it works correctly)

N/A

johnbrvc added 13 commits July 29, 2025 10:16
With the addition of Point Scoring support, it seemed logical (and necessary) to be able to edit/change the score of a judgment.  This commit adds that capability.
We can't just use the first test data group and assume it's the root.  We have to walk up the getParent() chain until we find the null parent.  At that point, we know we're at the top of the tree, and we can use that getRangeMax().
As per Tim deBoer, he suggested we do not send Double.POSITIVE_INFINITY (infinity) if the max is in fact infinity.  Rather, just leave the property out of the record.  This contradicts the current 2023-06 specification that requires the max_score property.
The value -1 is legal for a submission override if the id is, in fact, 1.  0 is the only illegal value.  Not sure why I had it as -1 originally.
The value -1 is legal for a submission override if the id is, in fact, 1.  0 is the only illegal value.  Not sure why I had it as -1 originally.
We can't just use the first test data group and assume it's the root.  We have to walk up the getParent() chain until we find the null parent.  At that point, we know we're at the top of the tree, and we can use that getRangeMax().
As per Tim deBoer, he suggested we do not send Double.POSITIVE_INFINITY (infinity) if the max is in fact infinity.  Rather, just leave the property out of the record.  This contradicts the current 2023-06 specification that requires the max_score property.
Updated NSA to score correctly for point scoring since the ResultsFile class uses NSA to generate results.tsv and results.csv.
Previously, if a submission received on the CLICS API contained an empty source code (main) file, the submission was rejected.
This commit allows empty source to be submitted, which should ultimately cause a Compile Error.
Add a configuration parameter, "submission-throttling", whose default value is "true", to the system.pc2.yaml file.  This will provide a means of allowing a contest administrator to disable the throttling mechanism.  This is useful during contest playback at high speeds.
Remember the submission throttling flag in ContestInformation.
Use Double object instead of primative.  This way we don't have to filter and can just use the "only include if non-null" annotation instead of all the extra rtfilter code.
Fix copyright date in ProblemDataFiles.
Legacy Grader did not generate proper results for WA/RTE/TLE (non-AC).  It was printing them instead of putting them in a string.
Added optional debug logging to a specified file.
Fix merge error when throttling was cherry-picked. (ContestImportUtilities)
Import conflict when merging cherry-picked commit fixed.
Add "on_reject" "break" support as per spec.
Fix some comments to mention some concerns.
Handle null return values on test data group grading.
Create grader debug logs for every test data group.
Copy link
Owner

@clevengr clevengr left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did a code review of all 20 changed files; the changes all look reasonable. I'm approving the PR and merging it so that we can do runtime testing with the rest of the point-scoring branch code.

Do not set scoreboard if it's not specify in the YAML config file.  The default will be pass-fail if it's not specified.  It was being set to "null" which was causing an NPE in the JUnit.
@clevengr clevengr merged commit beab98b into clevengr:i1006_point_scoring_invoke_grader Aug 1, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants