Generate grades for teaching teams (scoreboard) #15

Closed
opened 2024-03-07 09:42:11 +08:00 by 张泊明518370910136 · 23 comments
No description provided.
张泊明518370910136 added the
priority
p2
component
UI
labels 2024-03-07 09:42:11 +08:00
张泊明518370910136 added this to the (deleted) project 2024-03-07 09:42:11 +08:00
Owner

simple setup:

  • server has a TT repo cloned in drone home
  • on a student release or grading keyword or any other time score is generated (eg. joj: .. or feat: .. commit) log the scores in the file
  • add/commit/push
  • on a filed stage (eg. compilation, repo health) write down the problem in a "failed" file

eg. https://focs.ji.sjtu.edu.cn/git/engr151-23fa/test/src/branch/grading

simple setup: - server has a TT repo cloned in drone home - on a student release or grading keyword or any other time score is generated (eg. `joj: ..` or `feat: ..` commit) log the scores in the file - add/commit/push - on a filed stage (eg. compilation, repo health) write down the problem in a "failed" file eg. https://focs.ji.sjtu.edu.cn/git/engr151-23fa/test/src/branch/grading
张泊明518370910136 added
priority
p0
and removed
priority
p2
labels 2024-04-28 11:50:26 +08:00
张泊明518370910136 changed title from Generate grades for teaching teams to Generate grades for teaching teams (scoreboard) 2024-04-28 11:50:37 +08:00

Not very sure about the hierarchy. Should the generator be an independent binary?

Not very sure about the hierarchy. Should the generator be an independent binary?
张佳澈520370910044 self-assigned this 2024-06-01 20:20:31 +08:00

@manuel Where is the proper place for me to put the csv scoreboard file(in the current development stage)? Maybe an empty branch in this repo, or a new empty repo?

@manuel Where is the proper place for me to put the csv scoreboard file(in the current development stage)? Maybe an empty branch in this repo, or a new empty repo?
Owner

@zjc_he maybe an empty branch in the test repo? eg. "grading"

@zjc_he maybe an empty branch in the test repo? eg. "grading"

👍

:+1:

@zjc_he maybe an empty branch in the test repo? eg. "grading"

@manuel What do you mean by the test repo? The test repo for 482 was archived. Or can you open a new testing repo in FOCS-dev organization?

> @zjc_he maybe an empty branch in the test repo? eg. "grading" @manuel What do you mean by the test repo? The test repo for 482 was archived. Or can you open a new testing repo in FOCS-dev organization?
Owner

i meant the repo you use for joj test case suite (joj-examples)

i meant the repo you use for joj test case suite (joj-examples)

That is a bit tricky... It's not so clean since it might not be how Boming designed

I'll put it there for now and add a check in main_test.go to skip that branch, @bomingzh it is good to do so?

That is a bit tricky... It's not so clean since it might not be how Boming designed I'll put it there for now and add a check in `main_test.go` to skip that branch, @bomingzh it is good to do so?
Owner

i can also create a joj-test repo... let me know what is best

i can also create a joj-test repo... let me know what is best

Seems boming has predicted this circumstance and that branch does not break the balance! 🎉 Everything goes fine as expected

Seems boming has predicted this circumstance and that branch does not break the balance! 🎉 Everything goes fine as expected
Owner

@bomingzh is too good 🎉

@bomingzh is too good :tada:

I'm currently adding up all scores in a single test, ingoring the details.

e.g, for the result:

{
      "stagename": "compile/success",
      "stageresults": [
        {
          "name": "compile",
          "results": [
            {
              "score": 0,
              "comment": ""
            }
          ]
        },
        {
          "name": "run",
          "results": [
            {
              "score": 100,
              "comment": "executor status: run time: 4488101 ns, memory: 6955008 bytes"
            },
            {
              "score": 100,
              "comment": "executor status: run time: 4973842 ns, memory: 6828032 bytes"
            }
          ]
        }
      ]
    }

I'll only write "compile/success" and total score "200" into the scoreboard(comments are trivial for scoreboard but might be used somewhere else, I'll just put here in advance)

I'm currently adding up all scores in a single test, ingoring the details. e.g, for the result: ``` { "stagename": "compile/success", "stageresults": [ { "name": "compile", "results": [ { "score": 0, "comment": "" } ] }, { "name": "run", "results": [ { "score": 100, "comment": "executor status: run time: 4488101 ns, memory: 6955008 bytes" }, { "score": 100, "comment": "executor status: run time: 4973842 ns, memory: 6828032 bytes" } ] } ] } ``` I'll only write "compile/success" and total score "200" into the scoreboard(comments are trivial for scoreboard but might be used somewhere else, I'll just put here in advance)
Owner

https://focs.ji.sjtu.edu.cn/git/ece482-23fa/test/src/branch/grading/p1m3-1-joj.csv

this only contains 1,0 based on whether they pass/fail tests. it seems JOJ will be able to handle more types of score? (aside of pass/fail)

is there any logic implemented to decide eg. 2.5/5 for a test case? maybe based on memory usage and/or time?

even if we don't need it now, it might good to take this type of things into account such that the design can be easily adjusted to create 1 complete grading sheet or several for correctness, cpu/mem usage, or 1 with only a summary, eg. 2.5/5 meaning correct test but slow/too much mem (details only appearing in the posted issues).

not sure what would be best for teaching team?

https://focs.ji.sjtu.edu.cn/git/ece482-23fa/test/src/branch/grading/p1m3-1-joj.csv this only contains 1,0 based on whether they pass/fail tests. it seems JOJ will be able to handle more types of score? (aside of pass/fail) is there any logic implemented to decide eg. 2.5/5 for a test case? maybe based on memory usage and/or time? even if we don't need it now, it might good to take this type of things into account such that the design can be easily adjusted to create 1 complete grading sheet or several for correctness, cpu/mem usage, or 1 with only a summary, eg. 2.5/5 meaning correct test but slow/too much mem (details only appearing in the posted issues). not sure what would be best for teaching team?

Almost finished with the first version!

Question: Where is joint-teapot deployed on the server? Can I required anyone to use JOJ3/scoreboard to have an environment variable JOINT_TEAPOT_ROOT pointing to the root dir of joint-teapot?

Almost finished with the first version! Question: Where is joint-teapot deployed on the server? Can I required anyone to use JOJ3/scoreboard to have an environment variable `JOINT_TEAPOT_ROOT` pointing to the root dir of joint-teapot?
Owner

nice! last fall i installed joint-pot "globally" and put an teapot.env in the course config
you just need to source the env file before running teapot (which is in the PATH, so no need to a TEAPOT_ROOT variable i guess?)

nice! last fall i installed joint-pot "globally" and put an `teapot.env` in the course config you just need to source the `env` file before running teapot (which is in the `PATH`, so no need to a `TEAPOT_ROOT` variable i guess?)

@manuel Could you please clone the JOJ3-example repo on the drone server and put it in parallel with the JOJ3 repo? Specifically here in my local client:

├── JOJ3
├── JOJ3-examples

Or for another option, you may want to clone the JOJ3-example repo every time you want to upload the scoreboard, and then remove it?

@manuel Could you please clone the JOJ3-example repo on the drone server and put it in parallel with the JOJ3 repo? Specifically here in my local client: ``` ├── JOJ3 ├── JOJ3-examples ``` Or for another option, you may want to clone the JOJ3-example repo every time you want to upload the scoreboard, and then remove it?
Owner

just the grading branch?

just the grading branch?

Doesn't matter, teapot will detect and switch to the grading branch

Also for the second option cloneing and removing the repo is also done automatically by teapot

Doesn't matter, teapot will detect and switch to the grading branch Also for the second option cloneing and removing the repo is also done automatically by teapot

No need anymore, I implemented option 2

No need anymore, I implemented option 2

@manuel We are done on teapot side, can you pull the latest version of teapot so we can push forward to do testing?

@manuel We are done on teapot side, can you pull the latest version of teapot so we can push forward to do testing?

It seems that there are problems finding environmental variable ORIG_HOME when running drone

error message from drone: https://focs.ji.sjtu.edu.cn:2222/FOCS-dev/JOJ3/322/1/4 line 328
code: https://focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/src/branch/scoreboard/internal/scoreboard/scoreboard.go#L57

It seems that there are problems finding environmental variable `ORIG_HOME` when running drone error message from drone: https://focs.ji.sjtu.edu.cn:2222/FOCS-dev/JOJ3/322/1/4 line 328 code: https://focs.ji.sjtu.edu.cn/git/FOCS-dev/JOJ3/src/branch/scoreboard/internal/scoreboard/scoreboard.go#L57
Owner

soryr had not seen that... have you pulled the newest teapot?

soryr had not seen that... have you pulled the newest teapot?

Boming fixed for me, now it can run good on drone

Boming fixed for me, now it can run good on drone
Sign in to join this conversation.
No description provided.