use of cn.edu.zjnu.acm.judge.data.dto.SubmissionDetailDTO in project judge by zjnu-acm.
the class JudgeRunnerTest method test.
@ParameterizedTest(name = "{index}: {0}")
@MethodSource("data")
public void test(String key, Checker checker, Path path) throws IOException {
Path work = Files.createDirectories(Paths.get("target/work/judgeRunnerTest").resolve(key));
Path[] groovyJars = GroovyHolder.getPaths();
assertThat(groovyJars).isNotEmpty();
for (Path groovyJar : groovyJars) {
Files.copy(groovyJar, work.resolve(groovyJar.getFileName().toString()));
}
String cp = Arrays.stream(groovyJars).map(p -> p.getFileName().toString()).collect(Collectors.joining(File.pathSeparator));
String executeCommand = build("java", "-cp", cp, groovy.ui.GroovyMain.class.getName(), "Main.groovy");
Language groovy = Language.builder().name("groovy").sourceExtension("groovy").executeCommand(executeCommand).executableExtension("groovy").description("").timeFactor(2).build();
log.warn("Language groovy: {}", groovy);
languageMapper.save(groovy);
String extension = getExtension(path);
int languageId = findFirstLanguageByExtension(EXTENSION_MAP.get(extension));
Language language = languageMapper.findOne(languageId);
Objects.requireNonNull(language, "language " + languageId + " not exists");
String source = new String(Files.readAllBytes(path), StandardCharsets.UTF_8);
RunRecord runRecord = RunRecord.builder().source(source).timeLimit(timeLimit).memoryLimit(memoryLimit).language(language).build();
RunResult runResult = judgeRunner.run(runRecord, work, judgeData, validator, false);
int expectScore = SPECIAL_SCORE.getOrDefault(key, checker.getScore());
String expectedCaseResult = ResultType.getCaseScoreDescription(checker.getStatus());
Status resultStatus = runResult.getType();
if (resultStatus != null) {
assertThat(resultStatus).describedAs("type will either be null or COMPILATION_ERROR," + " if got other result, please modify this file").isEqualTo(Status.COMPILATION_ERROR);
}
String detail1 = runResult.getDetail();
if (resultStatus == Status.COMPILATION_ERROR) {
assertThat(detail1).describedAs("submission detail").isNull();
} else {
List<SubmissionDetailDTO> details = detail1 != null ? submissionService.parseSubmissionDetail(detail1) : null;
String msg = "%s %s %s";
Object[] param = { key, details, expectedCaseResult };
assertThat(runResult.getScore()).describedAs(msg, param).isEqualTo(expectScore);
assertThat(details).describedAs(msg, param).anyMatch(detail -> expectedCaseResult.equals(detail.getResult()));
}
}
use of cn.edu.zjnu.acm.judge.data.dto.SubmissionDetailDTO in project judge by zjnu-acm.
the class ShowSubmissionDetailsController method showSolutionDetails.
@GetMapping("showsolutiondetails")
public String showSolutionDetails(HttpServletRequest request, @RequestParam("solution_id") long submissionId) {
Submission submission = submissionService.findById(submissionId);
Long contestId = submission.getContest();
if (contestId != null) {
Contest contest = contestMapper.findOne(contestId);
if (contest != null) {
request.setAttribute("contestId", contest.getId());
}
}
if (!submissionService.canView(request, submission)) {
throw new BusinessException(BusinessCode.VIEW_SOURCE_PERMISSION_DENIED, submissionId);
}
List<SubmissionDetailDTO> details = submissionService.getSubmissionDetail(submissionId);
request.setAttribute("details", details);
request.setAttribute("user", submission.getUser());
request.setAttribute("problem", submission.getProblem());
request.setAttribute("result", ResultType.getResultDescription(submission.getScore()));
request.setAttribute("score", submission.getScore());
request.setAttribute("time", submission.getTime());
request.setAttribute("memory", submission.getMemory());
return "submissions/detail";
}
Aggregations