Evaluate public test cases with higher priority

Open
#204 0 comments 3 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
python
Domain
backend, testing

Research direction

Start by reading JobGroup, EvaluationService, and SubmissionResult to understand how test cases become jobs and how evaluation_outcome and evaluation_tries are recorded. Define the expected behavior for prioritizing public cases and representing partially evaluated submissions; done means public results receive higher priority without losing coherent private-case evaluation state.

Written by the indexing model from the issue text.

Description

It could be useful to evaluate public test cases (and possibly private test cases on submissions with used tokens) with a higher priority: These are the results the contestants most eagerly await during the contest while for private test case results, larger delays may be acceptable.

In particular, contests with few workers would benefit from such a feature.

But even if the evaluation of the complete test case set is comparatively fast (few minutes) and there are many workers, this would be useful. It would give the contestants at least some feedback for submissions during the last minutes of the contest (e.g. to point out trivial mistakes like compile errors, left-over debugging output, selection of the wrong file, ...).

This would probably require changes to JobGroup (to generate separate jobs for public and private test cases), EvaluationService and SubmissionResult (to introduce some method to find out whether the submission has only been partially evaluated) at least. It is not clear to me what to do with SubmissionResult.evaluation_outcome and SubmissionResult.evaluation_tries (split it up or somehow share it across public/private test cases).

Dominant language
Python
Stars
1k
Forks
412
Avg merge
6d 10h
Merged PRs (30d)
3

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from cms-dev/cms

All issues in cms-dev/cms

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.