Skip to content
Snippets Groups Projects
Commit 08e8f12e authored by Dragoș-Iulian ARGINT's avatar Dragoș-Iulian ARGINT
Browse files

Update everything to the latest working version


	* Update scripts to the ones in 0-list
	* Update Dockerfile
	* Update Docker Image

Signed-off-by: default avatarDragoș-Iulian ARGINT <dragosargint21@gmail.com>
parent 52eb816f
No related branches found
No related tags found
No related merge requests found
Pipeline #57405 passed
...@@ -4,8 +4,6 @@ RUN echo "Hello from Docker" ...@@ -4,8 +4,6 @@ RUN echo "Hello from Docker"
RUN mkdir -p /linux/tools/labs/skels/assignments/2-uart RUN mkdir -p /linux/tools/labs/skels/assignments/2-uart
RUN mkdir -p /linux/tools/labs/skels/assignments/2-uart-checker RUN mkdir -p /linux/tools/labs/skels/assignments/2-uart-checker
COPY ./checker/2-uart-checker /linux/tools/labs/skels/assignments/2-uart-checker
COPY ./checker/checker_daemons/so2_vm_checker_daemon.sh /linux/tools/labs/rootfs/etc/init.d COPY ./checker/checker_daemons/so2_vm_checker_daemon.sh /linux/tools/labs/rootfs/etc/init.d
RUN chmod +x /linux/tools/labs/rootfs/etc/init.d/so2_vm_checker_daemon.sh RUN chmod +x /linux/tools/labs/rootfs/etc/init.d/so2_vm_checker_daemon.sh
RUN chroot /linux/tools/labs/rootfs update-rc.d so2_vm_checker_daemon.sh defaults RUN chroot /linux/tools/labs/rootfs update-rc.d so2_vm_checker_daemon.sh defaults
......
#!/bin/bash #!/bin/bash
TIMEOUT=300 # 5 min
SO2_WORKSPACE=/linux/tools/labs SO2_WORKSPACE=/linux/tools/labs
SO2_VM_LOG=/tmp/so2_vm_log.txt
ASSIGNMENT0_TIMEOUT=300 # 5 min
ASSIGNMENT0_MOD=list.ko ASSIGNMENT0_MOD=list.ko
ASSIGNMENT0_DIR=${SO2_WORKSPACE}/skels/assignments/0-list ASSIGNMENT0_DIR=${SO2_WORKSPACE}/skels/assignments/0-list
ASSIGNMENT0_CHECKER_LOCAL_DIR=checker/0-list-checker ASSIGNMENT0_CHECKER_LOCAL_DIR=checker/0-list-checker
...@@ -10,6 +12,7 @@ ASSIGNMENT0_CHECKER_DIR=${SO2_WORKSPACE}/skels/assignments/0-list-checker ...@@ -10,6 +12,7 @@ ASSIGNMENT0_CHECKER_DIR=${SO2_WORKSPACE}/skels/assignments/0-list-checker
ASSIGNMENT0_OUTPUT=${SO2_WORKSPACE}/skels/0-list-output ASSIGNMENT0_OUTPUT=${SO2_WORKSPACE}/skels/0-list-output
ASSIGNMENT0_FINISHED=${SO2_WORKSPACE}/skels/0-list-finished ASSIGNMENT0_FINISHED=${SO2_WORKSPACE}/skels/0-list-finished
ASSIGNMENT1_TIMEOUT=300 # 5 min
ASSIGNMENT1_MOD=tracer.ko ASSIGNMENT1_MOD=tracer.ko
ASSIGNMENT1_DIR=${SO2_WORKSPACE}/skels/assignments/1-tracer ASSIGNMENT1_DIR=${SO2_WORKSPACE}/skels/assignments/1-tracer
ASSIGNMENT1_CHECKER_LOCAL_DIR=checker/1-tracer-checker ASSIGNMENT1_CHECKER_LOCAL_DIR=checker/1-tracer-checker
...@@ -19,6 +22,7 @@ ASSIGNMENT1_FINISHED=${SO2_WORKSPACE}/skels/1-tracer-finished ...@@ -19,6 +22,7 @@ ASSIGNMENT1_FINISHED=${SO2_WORKSPACE}/skels/1-tracer-finished
ASSIGNMENT1_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/1-tracer/tracer.h ASSIGNMENT1_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/1-tracer/tracer.h
ASSIGNMENT1_CHECKER_AUX_LIST="${ASSIGNMENT1_CHECKER_DIR}/_helper/tracer_helper.ko" ASSIGNMENT1_CHECKER_AUX_LIST="${ASSIGNMENT1_CHECKER_DIR}/_helper/tracer_helper.ko"
ASSIGNMENT2_TIMEOUT=300 # 5 min
ASSIGNMENT2_MOD=uart16550.ko ASSIGNMENT2_MOD=uart16550.ko
ASSIGNMENT2_DIR=${SO2_WORKSPACE}/skels/assignments/2-uart ASSIGNMENT2_DIR=${SO2_WORKSPACE}/skels/assignments/2-uart
ASSIGNMENT2_CHECKER_LOCAL_DIR=checker/2-uart-checker ASSIGNMENT2_CHECKER_LOCAL_DIR=checker/2-uart-checker
...@@ -28,6 +32,27 @@ ASSIGNMENT2_FINISHED=${SO2_WORKSPACE}/skels/2-uart-finished ...@@ -28,6 +32,27 @@ ASSIGNMENT2_FINISHED=${SO2_WORKSPACE}/skels/2-uart-finished
ASSIGNMENT2_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/2-uart/uart16550.h ASSIGNMENT2_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/2-uart/uart16550.h
ASSIGNMENT2_CHECKER_AUX_LIST="${ASSIGNMENT2_CHECKER_DIR}/_test/solution.ko" ASSIGNMENT2_CHECKER_AUX_LIST="${ASSIGNMENT2_CHECKER_DIR}/_test/solution.ko"
ASSIGNMENT3_TIMEOUT=360 # 6 min
ASSIGNMENT3_MOD=ssr.ko
ASSIGNMENT3_DIR=${SO2_WORKSPACE}/skels/assignments/3-raid
ASSIGNMENT3_CHECKER_LOCAL_DIR=checker/3-raid-checker
ASSIGNMENT3_CHECKER_DIR=${SO2_WORKSPACE}/skels/assignments/3-raid-checker
ASSIGNMENT3_OUTPUT=${SO2_WORKSPACE}/skels/3-raid-output
ASSIGNMENT3_FINISHED=${SO2_WORKSPACE}/skels/3-raid-finished
ASSIGNMENT3_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/3-raid/ssr.h
ASSIGNMENT3_CHECKER_AUX_LIST="${ASSIGNMENT3_CHECKER_DIR}/_test/run-test"
ASSIGNMENT4_TIMEOUT=300 # 5 min
ASSIGNMENT4_MOD=af_stp.ko
ASSIGNMENT4_DIR=${SO2_WORKSPACE}/skels/assignments/4-stp
ASSIGNMENT4_CHECKER_LOCAL_DIR=checker/4-stp-checker
ASSIGNMENT4_CHECKER_DIR=${SO2_WORKSPACE}/skels/assignments/4-stp-checker
ASSIGNMENT4_OUTPUT=${SO2_WORKSPACE}/skels/4-stp-output
ASSIGNMENT4_FINISHED=${SO2_WORKSPACE}/skels/4-stp-finished
ASSIGNMENT4_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/4-stp/stp.h
#ASSIGNMENT4_CHECKER_AUX_LIST="${ASSIGNMENT3_CHECKER_DIR}/_test/run-test"
usage() usage()
{ {
echo "Usage: $0 <assignment>" echo "Usage: $0 <assignment>"
...@@ -59,6 +84,14 @@ timeout_exceeded() ...@@ -59,6 +84,14 @@ timeout_exceeded()
echo "" echo ""
echo "TIMEOUT EXCEEDED !!! killing the process" echo "TIMEOUT EXCEEDED !!! killing the process"
if [[ $RECOVER_GRADE_TIMEOUT == 0 ]]; then if [[ $RECOVER_GRADE_TIMEOUT == 0 ]]; then
if [ -f $output ]; then
echo "$output not available"
else
cat $output
fi
echo "dumping SO2_VM_LOG=${SO2_VM_LOG} output"
cat $SO2_VM_LOG
echo "The Recover Grade Timeout option is not set! Please contact a teaching assistant!" echo "The Recover Grade Timeout option is not set! Please contact a teaching assistant!"
else else
recover_grade_from_timeout $output recover_grade_from_timeout $output
...@@ -83,8 +116,10 @@ compute_total() ...@@ -83,8 +116,10 @@ compute_total()
dump_output() dump_output()
{ {
local output=$1 local output=$1
local timeout=$2
echo "<VMCK_NEXT_BEGIN>" echo "<VMCK_NEXT_BEGIN>"
cat $output cat $output
echo "Running time $timeout/$TIMEOUT"
} }
...@@ -174,8 +209,9 @@ run_checker() ...@@ -174,8 +209,9 @@ run_checker()
done done
fi fi
LINUX_ADD_CMDLINE="so2=$assignment" make checker &> /dev/null & LINUX_ADD_CMDLINE="so2=$assignment" make checker &> ${SO2_VM_LOG} &
timeout=0
echo -n "CHECKER IS RUNNING" echo -n "CHECKER IS RUNNING"
while [ ! -f $finished ] while [ ! -f $finished ]
do do
...@@ -192,24 +228,38 @@ run_checker() ...@@ -192,24 +228,38 @@ run_checker()
echo -n . echo -n .
done done
echo "" echo ""
dump_output $output dump_output $output $timeout
compute_total $output compute_total $output
popd &> /dev/null popd &> /dev/null
} }
case $1 in case $1 in
0-list) 0-list)
TIMEOUT=$ASSIGNMENT0_TIMEOUT
RECOVER_GRADE_TIMEOUT=0 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory RECOVER_GRADE_TIMEOUT=0 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory
run_checker $ASSIGNMENT0_MOD $ASSIGNMENT0_DIR $ASSIGNMENT0_CHECKER_LOCAL_DIR $ASSIGNMENT0_CHECKER_DIR $ASSIGNMENT0_OUTPUT $ASSIGNMENT0_FINISHED $1 run_checker $ASSIGNMENT0_MOD $ASSIGNMENT0_DIR $ASSIGNMENT0_CHECKER_LOCAL_DIR $ASSIGNMENT0_CHECKER_DIR $ASSIGNMENT0_OUTPUT $ASSIGNMENT0_FINISHED $1
;; ;;
1-tracer) 1-tracer)
TIMEOUT=$ASSIGNMENT1_TIMEOUT
RECOVER_GRADE_TIMEOUT=0 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory RECOVER_GRADE_TIMEOUT=0 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory
run_checker $ASSIGNMENT1_MOD $ASSIGNMENT1_DIR $ASSIGNMENT1_CHECKER_LOCAL_DIR $ASSIGNMENT1_CHECKER_DIR $ASSIGNMENT1_OUTPUT $ASSIGNMENT1_FINISHED $1 $ASSIGNMENT1_HEADER_OVERWRITE $ASSIGNMENT1_CHECKER_AUX_LIST run_checker $ASSIGNMENT1_MOD $ASSIGNMENT1_DIR $ASSIGNMENT1_CHECKER_LOCAL_DIR $ASSIGNMENT1_CHECKER_DIR $ASSIGNMENT1_OUTPUT $ASSIGNMENT1_FINISHED $1 $ASSIGNMENT1_HEADER_OVERWRITE $ASSIGNMENT1_CHECKER_AUX_LIST
;; ;;
2-uart) 2-uart)
TIMEOUT=$ASSIGNMENT2_TIMEOUT
RECOVER_GRADE_TIMEOUT=1 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory RECOVER_GRADE_TIMEOUT=1 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory
run_checker $ASSIGNMENT2_MOD $ASSIGNMENT2_DIR $ASSIGNMENT2_CHECKER_LOCAL_DIR $ASSIGNMENT2_CHECKER_DIR $ASSIGNMENT2_OUTPUT $ASSIGNMENT2_FINISHED $1 $ASSIGNMENT2_HEADER_OVERWRITE $ASSIGNMENT2_CHECKER_AUX_LIST run_checker $ASSIGNMENT2_MOD $ASSIGNMENT2_DIR $ASSIGNMENT2_CHECKER_LOCAL_DIR $ASSIGNMENT2_CHECKER_DIR $ASSIGNMENT2_OUTPUT $ASSIGNMENT2_FINISHED $1 $ASSIGNMENT2_HEADER_OVERWRITE $ASSIGNMENT2_CHECKER_AUX_LIST
;; ;;
3-raid)
TIMEOUT=$ASSIGNMENT3_TIMEOUT
RECOVER_GRADE_TIMEOUT=0 # If set to 1, in case of a timeout, will calculate the total grade based on the output directory
run_checker $ASSIGNMENT3_MOD $ASSIGNMENT3_DIR $ASSIGNMENT3_CHECKER_LOCAL_DIR $ASSIGNMENT3_CHECKER_DIR $ASSIGNMENT3_OUTPUT $ASSIGNMENT3_FINISHED $1 $ASSIGNMENT3_HEADER_OVERWRITE $ASSIGNMENT3_CHECKER_AUX_LIST
;;
4-stp)
TIMEOUT=$ASSIGNMENT4_TIMEOUT
RECOVER_GRADE_TIMEOUT=0 # If set to 1, in case of a timeout, will calculate the total grade based on the output file
run_checker $ASSIGNMENT4_MOD $ASSIGNMENT4_DIR $ASSIGNMENT4_CHECKER_LOCAL_DIR $ASSIGNMENT4_CHECKER_DIR $ASSIGNMENT4_OUTPUT $ASSIGNMENT4_FINISHED $1 $ASSIGNMENT4_HEADER_OVERWRITE
;;
*) *)
usage usage
;; ;;
......
...@@ -14,29 +14,53 @@ ASSIGNMENT2_CHECKER=/home/root/skels/assignments/2-uart-checker ...@@ -14,29 +14,53 @@ ASSIGNMENT2_CHECKER=/home/root/skels/assignments/2-uart-checker
ASSIGNMENT2_OUTPUT=/home/root/skels/2-uart-output ASSIGNMENT2_OUTPUT=/home/root/skels/2-uart-output
ASSIGNMENT2_FINISHED=/home/root/skels/2-uart-finished ASSIGNMENT2_FINISHED=/home/root/skels/2-uart-finished
ASSIGNMENT3_CHECKER=/home/root/skels/assignments/3-raid-checker
ASSIGNMENT3_OUTPUT=/home/root/skels/3-raid-output
ASSIGNMENT3_FINISHED=/home/root/skels/3-raid-finished
ASSIGNMENT4_CHECKER=/home/root/skels/assignments/4-stp-checker
ASSIGNMENT4_OUTPUT=/home/root/skels/4-stp-output
ASSIGNMENT4_FINISHED=/home/root/skels/4-stp-finished
assign0_list() assign0_list()
{ {
cd $ASSIGNMENT0_CHECKER cd $ASSIGNMENT0_CHECKER
sh _checker &> $ASSIGNMENT0_OUTPUT sh _checker &> $ASSIGNMENT0_OUTPUT
echo FINISHED &> $ASSIGNMENT0_FINISHED echo FINISHED &> $ASSIGNMENT0_FINISHED
cd - cd -
} }
assign1_tracer() assign1_tracer()
{ {
cd $ASSIGNMENT1_CHECKER cd $ASSIGNMENT1_CHECKER
sh _checker &> $ASSIGNMENT1_OUTPUT sh _checker &> $ASSIGNMENT1_OUTPUT
echo FINISHED &> $ASSIGNMENT1_FINISHED echo FINISHED &> $ASSIGNMENT1_FINISHED
cd - cd -
} }
assign2_uart() assign2_uart()
{ {
cd $ASSIGNMENT2_CHECKER cd $ASSIGNMENT2_CHECKER
sh _checker &> $ASSIGNMENT2_OUTPUT sh _checker &> $ASSIGNMENT2_OUTPUT
echo FINISHED &> $ASSIGNMENT2_FINISHED echo FINISHED &> $ASSIGNMENT2_FINISHED
cd - cd -
}
assign3_raid()
{
cd $ASSIGNMENT3_CHECKER
sh _checker &> $ASSIGNMENT3_OUTPUT
echo FINISHED &> $ASSIGNMENT3_FINISHED
cd -
}
assign4_stp()
{
cd $ASSIGNMENT4_CHECKER
sh _checker &> $ASSIGNMENT4_OUTPUT
echo FINISHED &> $ASSIGNMENT4_FINISHED
cd -
} }
start() start()
...@@ -52,6 +76,12 @@ start() ...@@ -52,6 +76,12 @@ start()
2-uart) 2-uart)
assign2_uart assign2_uart
;; ;;
3-raid)
assign3_raid
;;
4-stp)
assign4_stp
;;
*) *)
echo "Unknown option" echo "Unknown option"
exit 0 exit 0
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment