Added profiling logic to tests with perf
This commit is contained in:
		@@ -12,10 +12,17 @@ else
 | 
			
		||||
    if [[ $FAKE_ZENITY_RESPONSE == "yes_tmp" ]]; then
 | 
			
		||||
      printf "Allow this time\n"
 | 
			
		||||
      exit 1
 | 
			
		||||
    elif [[ $FAKE_ZENITY_RESPONSE == "yes_tmp_alt" ]]; then
 | 
			
		||||
      printf "Allow this time\n"
 | 
			
		||||
      echo "yes_alt" >~/.fake_zenity_response
 | 
			
		||||
      exit 1
 | 
			
		||||
    elif [[ $FAKE_ZENITY_RESPONSE == "no" ]]; then
 | 
			
		||||
      exit 1
 | 
			
		||||
    elif [[ $FAKE_ZENITY_RESPONSE == "yes" ]]; then
 | 
			
		||||
      exit 0
 | 
			
		||||
    elif [[ $FAKE_ZENITY_RESPONSE == "yes_alt" ]]; then
 | 
			
		||||
      echo "yes_tmp_alt" >~/.fake_zenity_response
 | 
			
		||||
      exit 0
 | 
			
		||||
    fi
 | 
			
		||||
  fi
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
@@ -25,10 +25,18 @@ if [[ $1 == "--setuid" ]]; then
 | 
			
		||||
  echo "Valgrind will not be used due to setuid compatibility issues."
 | 
			
		||||
  ../build/icfs -o default_permissions ./protected ./.pt.db &
 | 
			
		||||
  sleep 1
 | 
			
		||||
elif [[ $1 == "--perf" ]]; then
 | 
			
		||||
  echo "Profiling with perf..."
 | 
			
		||||
  ../build/icfs -o default_permissions ./protected ./.pt.db &
 | 
			
		||||
  echo "Profiling will require root privilieges."
 | 
			
		||||
  sleep 3
 | 
			
		||||
  echo "Attaching to $(pgrep icfs)"
 | 
			
		||||
  sudo perf record -g -e cycles:u --call-graph dwarf -p $(pgrep icfs) &
 | 
			
		||||
  sleep 10
 | 
			
		||||
else
 | 
			
		||||
  echo "Database protection will not be tested due to the lack of setuid capabilites."
 | 
			
		||||
  echo "To test it, run this script with '--setuid'."
 | 
			
		||||
  valgrind -s ../build/icfs -o default_permissions ./protected ./.pt.db &
 | 
			
		||||
  valgrind --leak-check=full -s ../build/icfs -o default_permissions ./protected ./.pt.db &
 | 
			
		||||
  sleep 5
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
@@ -126,9 +134,29 @@ else
 | 
			
		||||
  echo "[ICFS-TEST]: OK"
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
if [[ $1 == "--perf" ]]; then
 | 
			
		||||
  zenity --set-fake-response yes_tmp
 | 
			
		||||
  rm -rf ./protected/*
 | 
			
		||||
  zenity --set-fake-response yes_alt
 | 
			
		||||
  bonnie++ -p 4
 | 
			
		||||
  bonnie++ -d ./protected -c 4 -r 256 -y s >/dev/null &
 | 
			
		||||
  bonnie++ -d ./protected -c 4 -r 256 -y s >/dev/null &
 | 
			
		||||
  bonnie++ -d ./protected -c 4 -r 256 -y s >/dev/null &
 | 
			
		||||
  bonnie++ -d ./protected -c 4 -r 256 -y s >/dev/null
 | 
			
		||||
  bonnie++ -p -1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
# unmount
 | 
			
		||||
 | 
			
		||||
sleep 0.5
 | 
			
		||||
#lsof +f -- $(realpath ./protected)
 | 
			
		||||
umount $(realpath ./protected)
 | 
			
		||||
sleep 0.5
 | 
			
		||||
 | 
			
		||||
if [[ $1 == "--perf" ]]; then
 | 
			
		||||
  mv ./callgraph.png ./callgraph_old.png
 | 
			
		||||
  real_user=$USER
 | 
			
		||||
  sudo chown "$real_user" ./perf.data
 | 
			
		||||
  perf script --dsos=icfs | gprof2dot -f perf | dot -Tpng -o callgraph.png
 | 
			
		||||
  echo "Profile graph was written to \"callgraph.png\""
 | 
			
		||||
fi
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user