From 08e8f12ef27bd0bf45365ed49e36e7130df1593f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Drago=C8=99-Iulian=20ARGINT?= <dragosargint21@gmail.com>
Date: Mon, 8 Apr 2024 20:59:36 +0300
Subject: [PATCH] Update everything to the latest working version
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

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

Signed-off-by: Dragoș-Iulian ARGINT <dragosargint21@gmail.com>
---
 Dockerfile                                    |  2 -
 checker/checker.sh                            | 58 +++++++++++++++++--
 .../checker_daemons/so2_vm_checker_daemon.sh  | 54 +++++++++++++----
 3 files changed, 96 insertions(+), 18 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index 5c128d3..690f3df 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -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-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
 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
diff --git a/checker/checker.sh b/checker/checker.sh
index f23e774..424e3dc 100755
--- a/checker/checker.sh
+++ b/checker/checker.sh
@@ -1,8 +1,10 @@
 #!/bin/bash
 
-TIMEOUT=300 # 5 min
 SO2_WORKSPACE=/linux/tools/labs
+SO2_VM_LOG=/tmp/so2_vm_log.txt
 
+
+ASSIGNMENT0_TIMEOUT=300 # 5 min
 ASSIGNMENT0_MOD=list.ko
 ASSIGNMENT0_DIR=${SO2_WORKSPACE}/skels/assignments/0-list
 ASSIGNMENT0_CHECKER_LOCAL_DIR=checker/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_FINISHED=${SO2_WORKSPACE}/skels/0-list-finished
 
+ASSIGNMENT1_TIMEOUT=300 # 5 min
 ASSIGNMENT1_MOD=tracer.ko
 ASSIGNMENT1_DIR=${SO2_WORKSPACE}/skels/assignments/1-tracer
 ASSIGNMENT1_CHECKER_LOCAL_DIR=checker/1-tracer-checker
@@ -19,6 +22,7 @@ ASSIGNMENT1_FINISHED=${SO2_WORKSPACE}/skels/1-tracer-finished
 ASSIGNMENT1_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/1-tracer/tracer.h
 ASSIGNMENT1_CHECKER_AUX_LIST="${ASSIGNMENT1_CHECKER_DIR}/_helper/tracer_helper.ko"
 
+ASSIGNMENT2_TIMEOUT=300 # 5 min
 ASSIGNMENT2_MOD=uart16550.ko
 ASSIGNMENT2_DIR=${SO2_WORKSPACE}/skels/assignments/2-uart
 ASSIGNMENT2_CHECKER_LOCAL_DIR=checker/2-uart-checker
@@ -28,6 +32,27 @@ ASSIGNMENT2_FINISHED=${SO2_WORKSPACE}/skels/2-uart-finished
 ASSIGNMENT2_HEADER_OVERWRITE=${SO2_WORKSPACE}/templates/assignments/2-uart/uart16550.h
 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()
 {
 	echo "Usage: $0 <assignment>"
@@ -59,6 +84,14 @@ timeout_exceeded()
 	echo ""
 	echo "TIMEOUT EXCEEDED !!! killing the process"
 	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!"
 	else
 		recover_grade_from_timeout $output
@@ -83,8 +116,10 @@ compute_total()
 dump_output()
 {
 	local output=$1
+	local timeout=$2
 	echo "<VMCK_NEXT_BEGIN>"
 	cat $output
+	echo "Running time $timeout/$TIMEOUT"
 
 }
 
@@ -174,8 +209,9 @@ run_checker()
 			done
 		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"
 		while [ ! -f $finished ]
 		do
@@ -192,24 +228,38 @@ run_checker()
 			echo -n .
 		done
 		echo ""
-		dump_output $output
+		dump_output $output $timeout
 		compute_total $output
 	popd &> /dev/null
 }
 
 case $1 in
 	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
 		run_checker $ASSIGNMENT0_MOD $ASSIGNMENT0_DIR $ASSIGNMENT0_CHECKER_LOCAL_DIR $ASSIGNMENT0_CHECKER_DIR $ASSIGNMENT0_OUTPUT $ASSIGNMENT0_FINISHED $1
 		;;
 	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
 		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)
+		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
 		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
 		;;
diff --git a/checker/checker_daemons/so2_vm_checker_daemon.sh b/checker/checker_daemons/so2_vm_checker_daemon.sh
index eee3124..546f236 100644
--- a/checker/checker_daemons/so2_vm_checker_daemon.sh
+++ b/checker/checker_daemons/so2_vm_checker_daemon.sh
@@ -14,29 +14,53 @@ ASSIGNMENT2_CHECKER=/home/root/skels/assignments/2-uart-checker
 ASSIGNMENT2_OUTPUT=/home/root/skels/2-uart-output
 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()
 {
-        cd $ASSIGNMENT0_CHECKER
-     	   sh _checker &> $ASSIGNMENT0_OUTPUT
-       	   echo FINISHED &> $ASSIGNMENT0_FINISHED
-        cd -
+	cd $ASSIGNMENT0_CHECKER
+		sh _checker &> $ASSIGNMENT0_OUTPUT
+		echo FINISHED &> $ASSIGNMENT0_FINISHED
+	cd -
 }
 
 assign1_tracer()
 {
-        cd $ASSIGNMENT1_CHECKER
-     	   sh _checker &> $ASSIGNMENT1_OUTPUT
-       	   echo FINISHED &> $ASSIGNMENT1_FINISHED
-        cd -
+	cd $ASSIGNMENT1_CHECKER
+		sh _checker &> $ASSIGNMENT1_OUTPUT
+		echo FINISHED &> $ASSIGNMENT1_FINISHED
+	cd -
 }
 
 assign2_uart()
 {
-        cd $ASSIGNMENT2_CHECKER
-     	   sh _checker &> $ASSIGNMENT2_OUTPUT
-       	   echo FINISHED &> $ASSIGNMENT2_FINISHED
-        cd -
+	cd $ASSIGNMENT2_CHECKER
+		sh _checker &> $ASSIGNMENT2_OUTPUT
+		echo FINISHED &> $ASSIGNMENT2_FINISHED
+	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()
@@ -52,6 +76,12 @@ start()
 		2-uart)
 			assign2_uart
 			;;
+		3-raid)
+			assign3_raid
+			;;
+		4-stp)
+			assign4_stp
+			;;
                 *)
                         echo "Unknown option"
                         exit 0
-- 
GitLab