You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

evaluate.sh 1.5 kB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #!/bin/bash
  2. # 待执行的评测文件
  3. sourceClassNames="$3"
  4. # 执行命令
  5. executeCommand="python3"
  6. # 获取测试用例的输入(请勿改动此行语句)
  7. input=$2; OLD_IFS="$IFS"; IFS=,; ins=($input); IFS="$OLD_IFS"
  8. compileResult=$(echo -n "compile successfully" | base64)
  9. # 执行函数
  10. execute(){
  11. # 当前关卡的执行目标文件
  12. sourceClassName=${sourceClassNames[$1 - 1]}
  13. # 当前关卡号
  14. challengeStage=$1
  15. # 循环获取各测试用例下的实际输出
  16. res_usage="{\"testSetUsages\":["
  17. output=''
  18. i=0
  19. while [[ i -lt ${#ins[*]} ]]; do
  20. #echo 0 > /sys/fs/cgroup/memory/memory.max_usage_in_bytes
  21. startCpuUsage=$(cat /sys/fs/cgroup/cpuacct/cpuacct.usage)
  22. result=$(echo "${ins[$i]}" | base64 -d | $executeCommand $sourceClassName 2>&1 | tee /data/workspace/user.out | base64)
  23. #拼接输出结果
  24. endCpuUsage=$(cat /sys/fs/cgroup/cpuacct/cpuacct.usage)
  25. let testSetCpuUsage=$endCpuUsage-$startCpuUsage
  26. maxMemUsage=$(cat /sys/fs/cgroup/memory/memory.max_usage_in_bytes)
  27. res_usage="$res_usage{\"testSetTime\":\"$testSetCpuUsage\",\"testSetMem\":\"$maxMemUsage\"},"
  28. output=$output\"$result\",
  29. let i++
  30. done
  31. output="[${output%?}]"
  32. }
  33. execute $1
  34. res_usage="${res_usage::-1}"
  35. res_usage="$res_usage]}"
  36. res_usage=$(echo -ne "$res_usage"|base64)
  37. # 返回评测结果
  38. returnResult(){
  39. result="{\"compileResult\":\"$compileResult\",\"out\":$output}"
  40. echo $result
  41. }
  42. returnResult

No Description