diff --git a/webapp/src/Controller/Jury/ContestController.php b/webapp/src/Controller/Jury/ContestController.php index 84f9a2a729..4716857940 100644 --- a/webapp/src/Controller/Jury/ContestController.php +++ b/webapp/src/Controller/Jury/ContestController.php @@ -704,7 +704,7 @@ public function prefetchAction(Request $request, int $contestId): Response ->setJudgehost($judgehost) ->setPriority(JudgeTask::PRIORITY_DEFAULT) ->setTestcaseId($testcase->getTestcaseid()) - ->setTestcaseHash($testcase->getMd5sumInput() . '_' . $testcase->getMd5sumOutput()); + ->setTestcaseHash($testcase->getTestcaseHash()); $this->em->persist($judgeTask); $cnt++; } diff --git a/webapp/src/Controller/Jury/SubmissionController.php b/webapp/src/Controller/Jury/SubmissionController.php index 8afa8582f4..6c0bd7d4cd 100644 --- a/webapp/src/Controller/Jury/SubmissionController.php +++ b/webapp/src/Controller/Jury/SubmissionController.php @@ -377,7 +377,7 @@ public function viewAction( $runsOutstanding = false; $runs = []; $runsOutput = []; - $sameTestcaseIds = true; + $sameTestcaseHashes = true; if ($selectedJudging || $externalJudgement) { $queryBuilder = $this->em->createQueryBuilder() ->from(Testcase::class, 't') @@ -414,9 +414,9 @@ public function viewAction( ->getQuery() ->getResult(); - $judgingRunTestcaseIdsInOrder = $this->em->createQueryBuilder() + $judgingRunTestcaseHashesInOrder = $this->em->createQueryBuilder() ->from(JudgeTask::class, 'jt') - ->select('jt.testcase_id') + ->select('jt.testcase_hash') ->andWhere('jt.jobid = :judging') ->setParameter('judging', $selectedJudging) ->orderBy('jt.judgetaskid') @@ -424,15 +424,15 @@ public function viewAction( ->getScalarResult(); $cnt = 0; - if (count($judgingRunTestcaseIdsInOrder) !== count($runResults)) { - $sameTestcaseIds = false; + if (count($judgingRunTestcaseHashesInOrder) !== count($runResults)) { + $sameTestcaseHashes = false; } foreach ($runResults as $runResult) { /** @var Testcase $testcase */ $testcase = $runResult[0]; - if (isset($judgingRunTestcaseIdsInOrder[$cnt])) { - if ($testcase->getTestcaseid() != $judgingRunTestcaseIdsInOrder[$cnt]['testcase_id']) { - $sameTestcaseIds = false; + if (isset($judgingRunTestcaseHashesInOrder[$cnt])) { + if ($testcase->getTestcasehash() != $judgingRunTestcaseHashesInOrder[$cnt]['testcase_hash']) { + $sameTestcaseHashes = false; } } $cnt++; @@ -571,7 +571,7 @@ public function viewAction( 'runs' => $runs, 'runsOutstanding' => $runsOutstanding, 'judgehosts' => $judgehosts, - 'sameTestcaseIds' => $sameTestcaseIds, + 'sameTestcaseHashes' => $sameTestcaseHashes, 'externalRuns' => $externalRuns, 'runsOutput' => $runsOutput, 'lastRuns' => $lastRuns, @@ -710,7 +710,7 @@ public function requestOutput(Request $request, Judging $jid, JudgingRun $jrid): ->setJobId($jid->getJudgingid()) ->setUuid($jid->getUuid()) ->setTestcaseId($testcase->getTestcaseid()) - ->setTestcaseHash($testcase->getMd5sumInput() . '_' . $testcase->getMd5sumOutput()); + ->setTestcaseHash($testcase->getTestcaseHash()); $this->em->persist($judgeTask); $this->em->flush(); return $this->redirectToLocalReferrer($this->router, $request, $this->generateUrl('jury_submission', [ diff --git a/webapp/src/Entity/Testcase.php b/webapp/src/Entity/Testcase.php index fedc72875e..e52ad665f8 100644 --- a/webapp/src/Entity/Testcase.php +++ b/webapp/src/Entity/Testcase.php @@ -161,6 +161,11 @@ public function getRank(): int return $this->ranknumber; } + public function getTestcaseHash(): string + { + return $this->getMd5sumInput() . '_' . $this->getMd5sumOutput(); + } + /** * @param resource|string $description */ diff --git a/webapp/src/Service/DOMJudgeService.php b/webapp/src/Service/DOMJudgeService.php index 1e838feb8d..8571dfa81f 100644 --- a/webapp/src/Service/DOMJudgeService.php +++ b/webapp/src/Service/DOMJudgeService.php @@ -1625,7 +1625,7 @@ private function actuallyCreateJudgetasks(int $priority, Judging $judging, int $ $testcase->getTestcaseid() ); $judgetaskInsertParams[':testcase_id' . $testcase->getTestcaseid()] = $testcase->getTestcaseid(); - $judgetaskInsertParams[':testcase_hash' . $testcase->getTestcaseid()] = $testcase->getMd5sumInput() . '_' . $testcase->getMd5sumOutput(); + $judgetaskInsertParams[':testcase_hash' . $testcase->getTestcaseid()] = $testcase->getTestcaseHash(); } $judgetaskColumns = array_map(fn(string $column) => substr($column, 1), $judgetaskDefaultParamNames); $judgetaskInsertQuery = sprintf( diff --git a/webapp/templates/jury/submission.html.twig b/webapp/templates/jury/submission.html.twig index 528386fff8..7da1dda839 100644 --- a/webapp/templates/jury/submission.html.twig +++ b/webapp/templates/jury/submission.html.twig @@ -279,7 +279,7 @@ {% endif %} - {% if not sameTestcaseIds and selectedJudging is not null and selectedJudging.result is not empty %} + {% if not sameTestcaseHashes and selectedJudging is not null and selectedJudging.result is not empty %}
The problem's testcases have changed since this judging has been performed. We recommend rejudging the whole problem.
{% endif %} @@ -399,7 +399,8 @@ , on {{ judgehosts | printHosts }} {%- if selectedJudging.starttime -%} {%- if selectedJudging.endtime -%} - , took {{ selectedJudging.starttime | printHumanTimeDiff(selectedJudging.endtime) }} + , started at {{ selectedJudging.starttime | printtime('H:i') }} + , took {{ selectedJudging.starttime | printHumanTimeDiff(selectedJudging.endtime) }} {%- elseif selectedJudging.valid or selectedJudging.rejudging -%}  [still judging - busy {{ selectedJudging.starttime | printtimediff }}] {%- else -%}