diff --git a/checker/checker.sh b/checker/checker.sh index 766abb90d084314cfefee187e89890389e097cf6..dfab0ce3109adb276198adc2428b66e9a4311aa5 100755 --- a/checker/checker.sh +++ b/checker/checker.sh @@ -2,7 +2,7 @@ SO2_WORKSPACE=/linux/tools/labs SO2_VM_LOG=/tmp/so2_vm_log.txt - +DMESG_LOG="" ASSIGNMENT0_TIMEOUT=300 # 5 min ASSIGNMENT0_MOD=list.ko @@ -60,6 +60,13 @@ usage() } +configure_logger() +{ + DMESG_LOG="/linux/tools/labs/skels/log.txt" + cp ./checker/checker_daemons/so2_vm_checker_logger.sh /linux/tools/labs/rootfs/etc/init.d + chmod +x /linux/tools/labs/rootfs/etc/init.d/so2_vm_checker_logger.sh + chroot /linux/tools/labs/rootfs update-rc.d so2_vm_checker_logger.sh defaults 0 0 +} recover_grade_from_timeout() { @@ -83,10 +90,12 @@ timeout_exceeded() pkill -SIGKILL qemu echo "" echo "TIMEOUT EXCEEDED !!! killing the process" - echo "dumping SO2_VM_LOG=${SO2_VM_LOG} output" - echo "------------------------------------------------------" - cat $SO2_VM_LOG - echo "------------------------------------------------------" + if [[ $DMESG_LOG != "" ]]; then + echo "dumping DMESG_LOG=${DMESG_LOG} output" + echo ">>>>---------------DMESG_LOG_STARTS_HERE------------------<<<<<" + cat $DMESG_LOG + echo ">>>>----------------DMESG_LOG_ENDS_HERE-------------------<<<<<" + fi if [[ $RECOVER_GRADE_TIMEOUT == 0 ]]; then if [ -f $output ]; then @@ -94,8 +103,6 @@ timeout_exceeded() 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 @@ -223,7 +230,7 @@ run_checker() if ((timeout >= TIMEOUT)); then if [ -f $output ]; then echo "" - dump_output $output + dump_output $output $timeout compute_total $output fi timeout_exceeded $output @@ -238,6 +245,8 @@ run_checker() popd &> /dev/null } + + case $1 in 0-list) TIMEOUT=$ASSIGNMENT0_TIMEOUT @@ -252,6 +261,7 @@ case $1 in 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 + configure_logger 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) diff --git a/checker/checker_daemons/so2_vm_checker_logger.sh b/checker/checker_daemons/so2_vm_checker_logger.sh new file mode 100644 index 0000000000000000000000000000000000000000..5d701258c9cd90e25b30a2b24b676154d308723b --- /dev/null +++ b/checker/checker_daemons/so2_vm_checker_logger.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# THIS SCRIPT RUNS INSIDE THE SO2 VM + +LOG_FILE=/home/root/skels/log.txt + +start() +{ + set -x + echo "" > ${LOG_FILE} + while true + do + sleep 1 + echo ------------------START_HERE------------------ >> $LOG_FILE + dmesg >> $LOG_FILE + echo -------------------END_HERE------------------- >> $LOG_FILE + done +} + +# Carry out specific functions when asked to by the system +case "$1" in + start) + echo "Starting so2_vm_checker_logger.sh..." + start & # start in background + ;; + *) + echo "Usage: /etc/init.d/foo {start|stop}" + exit 1 + ;; + esac + +exit 0 +