Skip to content

Programming exercises: Remove the need to combine template commits #10960

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

Draft
wants to merge 10 commits into
base: develop
Choose a base branch
from

Conversation

krusche
Copy link
Member

@krusche krusche commented Jun 1, 2025

With this PR, the history in template repos is kept. When students start the exercise a new bare repository is created that contains one commit with the latest version of the template / exercise repository. This is also faster and improves the performance. All functionality to combine template commits (either manually or scheduled) is deleted because it rewrites history (potentially leading to issues).

Checklist

General

Server

  • Important: I implemented the changes with a very good performance and prevented too many (unnecessary) and too complex database calls.
  • I strictly followed the principle of data economy for all database calls.
  • I strictly followed the server coding and design guidelines.
  • I added multiple integration tests (Spring) related to the features (with a high test coverage).
  • I added pre-authorization annotations according to the guidelines and checked the course groups for all new REST Calls (security).
  • I documented the Java code using JavaDoc style.

Client

  • Important: I implemented the changes with a very good performance, prevented too many (unnecessary) REST calls and made sure the UI is responsive, even with large data (e.g. using paging).
  • I strictly followed the principle of data economy for all client-server REST calls.
  • I strictly followed the client coding and design guidelines.
  • Following the theming guidelines, I specified colors only in the theming variable files and checked that the changes look consistent in both the light and the dark theme.
  • I added multiple integration tests (Jest) related to the features (with a high test coverage), while following the test guidelines.
  • I added authorities to all new routes and checked the course groups for displaying navigation elements (links, buttons).
  • I documented the TypeScript code using JSDoc style.
  • I added multiple screenshots/screencasts of my UI changes.
  • I translated all newly inserted strings into English and German.

Changes affecting Programming Exercises

  • High priority: I tested all changes and their related features with all corresponding user types on a test server configured with the integrated lifecycle setup (LocalVC and LocalCI).
  • I tested all changes and their related features with all corresponding user types on a test server configured with LocalVC and Jenkins.

Motivation and Context

Preparing the exercise start for 200 students and 3 programming exercises (i.e. creating 600 git repositories and corresponding database entries for student participations) now takes ~ 1.8s in local tests instead of ~18.6s on develop. In a test with 2000 students and 5 programming exercises, it took 72s. This is blazingly fast.

Description

Steps for Testing

Prerequisites:

  • 1 Instructor
  • 2 Students
  • 1 Programming Exercise with Complaints enabled
  1. Log in to Artemis
  2. Navigate to Course Administration
  3. ...

Exam Mode Testing

Prerequisites:

  • 1 Instructor
  • 2 Students
  • 1 Exam with a Programming Exercise
  1. Log in to Artemis
  2. Participate in the exam as a student
  3. Make sure that the UI of the programming exercise in the exam mode stays unchanged. You can use the exam mode documentation as reference.
  4. ...

Testserver States

You can manage test servers using Helios. Check environment statuses in the environment list. To deploy to a test server, go to the CI/CD page, find your PR or branch, and trigger the deployment.

Review Progress

Performance Review

  • I (as a reviewer) confirm that the client changes (in particular related to REST calls and UI responsiveness) are implemented with a very good performance even for very large courses with more than 2000 students.
  • I (as a reviewer) confirm that the server changes (in particular related to database calls) are implemented with a very good performance even for very large courses with more than 2000 students.

Code Review

  • Code Review 1
  • Code Review 2

Manual Tests

  • Test 1
  • Test 2

Exam Mode Test

  • Test 1
  • Test 2

Performance Tests

  • Test 1
  • Test 2

Test Coverage

Screenshots

@github-project-automation github-project-automation bot moved this to Work In Progress in Artemis Development Jun 1, 2025
@github-actions github-actions bot added tests server Pull requests that update Java code. (Added Automatically!) client Pull requests that update TypeScript code. (Added Automatically!) documentation exam Pull requests that affect the corresponding module programming Pull requests that affect the corresponding module labels Jun 1, 2025
@krusche krusche changed the title Programming exercises: Remove the need for combining template commits Programming exercises: Remove the need to combine template commits Jun 1, 2025
Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report201 ran197 passed3 skipped1 failed1h 413ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure2m 18s 659ms

Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ✅SkippedFailedTime ⏱
End-to-End (E2E) Test Report1 ran1 passed0 skipped0 failed1s 684ms
TestResultTime ⏱
No test annotations available

Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report201 ran197 passed3 skipped1 failed57m 44s 973ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure2m 18s 413ms

@github-actions github-actions bot added athena Pull requests that affect the corresponding module core Pull requests that affect the corresponding module exercise Pull requests that affect the corresponding module labels Jun 1, 2025
Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ✅SkippedFailedTime ⏱
End-to-End (E2E) Test Report1 ran1 passed0 skipped0 failed1s 657ms
TestResultTime ⏱
No test annotations available

Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report201 ran197 passed3 skipped1 failed58m 5s 970ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure2m 20s 350ms

@github-actions github-actions bot added the iris Pull requests that affect the corresponding module label Jun 1, 2025
Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ✅Skipped ⚠️FailedTime ⏱
End-to-End (E2E) Test Report201 ran198 passed3 skipped0 failed54m 35s 732ms
TestResultTime ⏱
No test annotations available

Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ✅Skipped ⚠️FailedTime ⏱
End-to-End (E2E) Test Report201 ran198 passed3 skipped0 failed53m 27s 89ms
TestResultTime ⏱
No test annotations available

Copy link

github-actions bot commented Jun 1, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report201 ran171 passed4 skipped26 failed1h 31m 53s 75ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exam/ExamTestRun.spec.ts
ts.Exam test run › Manage a test run › Conducts a test run❌ failure6m 5s 452ms
e2e/exam/ExamParticipation.spec.ts
ts.Exam participation › Early Hand-in › Participates as a student in a registered exam❌ failure6m 8s 176ms
e2e/exam/test-exam/TestExamTestRun.spec.ts
ts.Test exam test run › Manage a test run › Conducts a test run❌ failure6m 4s 755ms
e2e/exam/ExamAssessment.spec.ts
ts.Exam assessment › Programming exercise assessment › Assess a programming exercise submission (MANUAL)❌ failure
e2e/exam/ExamParticipation.spec.ts
ts.Exam participation › Programming exam with Git submissions › Participates in exam by Git submission using https❌ failure1m 32s 70ms
ts.Exam participation › Programming exam with Git submissions › Participates in exam by Git submission using https with token❌ failure1m 30s 604ms
ts.Exam participation › Programming exam with Git submissions › Participates in exam by Git submission using ssh❌ failure1m 31s 115ms
e2e/exam/ExamResults.spec.ts
ts.Exam Results › Check exam exercise results › Check exam results for programming exercise › Check exam programming exercise results❌ failure6m 6s 167ms
e2e/exercise/ExerciseImport.spec.ts
ts.Import exercises › Imports exercises › Imports programming exercise❌ failure6m 6s 767ms
e2e/exercise/programming/ProgrammingExerciseParticipation.spec.ts
ts.Programming exercise participation › Makes a failing Java submission › Makes a submission using code editor❌ failure1m 3s 336ms
ts.Programming exercise participation › Makes a failing Java submission › Makes a git submission through HTTPS❌ failure1m 610ms
ts.Programming exercise participation › Makes a partially successful Java submission › Makes a submission using code editor❌ failure1m 2s 457ms
ts.Programming exercise participation › Makes a partially successful Java submission › Makes a git submission through HTTPS❌ failure59s 576ms
ts.Programming exercise participation › Makes a successful Java submission › Makes a submission using code editor❌ failure1m 3s 453ms
ts.Programming exercise participation › Makes a successful Java submission › Makes a git submission through HTTPS❌ failure59s 932ms
ts.Programming exercise participation › Makes a successful C submission › Makes a submission using code editor❌ failure1m 3s 144ms
ts.Programming exercise participation › Makes a successful C submission › Makes a git submission through HTTPS❌ failure59s 529ms
ts.Programming exercise participation › Makes a successful Python submission › Makes a submission using code editor❌ failure1m 2s 874ms
ts.Programming exercise participation › Makes a successful Python submission › Makes a git submission through HTTPS❌ failure1m 529ms
ts.Programming exercise participation › Programming exercise participation using secure git › Makes a git submission through HTTPS using token❌ failure59s 393ms
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with RSA key❌ failure59s 766ms
ts.Programming exercise participation › Programming exercise participation using secure git › Programming exercise participation using SSH › Makes a git submission using SSH with ED25519 key❌ failure59s 176ms
ts.Programming exercise participation › Programming exercise team participation › Team members make git submissions❌ failure1m 998ms
ts.Programming exercise participation › Programming exercise team participation › Students of other teams have their own submission❌ failure23s 248ms
ts.Programming exercise participation › Programming exercise team participation › Check team participation › Instructor checks the participation❌ failure2m 7s 480ms
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure1m 12s 936ms

LeZhen1105
LeZhen1105 previously approved these changes Jun 2, 2025
Copy link

github-actions bot commented Jun 2, 2025

End-to-End (E2E) Test Results Summary

TestsPassed ☑️Skipped ⚠️Failed ❌️Time ⏱
End-to-End (E2E) Test Report201 ran197 passed3 skipped1 failed1h 32s 627ms
TestResultTime ⏱
End-to-End (E2E) Test Report
e2e/exercise/programming/ProgrammingExerciseStaticCodeAnalysis.spec.ts
ts.Static code analysis tests › Configures SCA grading and makes a successful submission with SCA errors❌ failure2m 17s 561ms

Copy link

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions bot added the stale label Jun 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
athena Pull requests that affect the corresponding module client Pull requests that update TypeScript code. (Added Automatically!) core Pull requests that affect the corresponding module documentation exam Pull requests that affect the corresponding module exercise Pull requests that affect the corresponding module iris Pull requests that affect the corresponding module programming Pull requests that affect the corresponding module server Pull requests that update Java code. (Added Automatically!) stale tests
Projects
Status: Work In Progress
Development

Successfully merging this pull request may close these issues.

2 participants