setup.sh 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #!/bin/bash
  2. fw_depends h2o mustache-c yajl
  3. H2O_APP_HOME="${IROOT}/h2o_app"
  4. BUILD_DIR="${H2O_APP_HOME}_build"
  5. H2O_APP_PROFILE_PORT="54321"
  6. H2O_APP_PROFILE_URL="http://127.0.0.1:$H2O_APP_PROFILE_PORT"
  7. build_h2o_app()
  8. {
  9. cmake -DCMAKE_INSTALL_PREFIX="$H2O_APP_HOME" -DCMAKE_BUILD_TYPE=Release \
  10. -DCMAKE_LIBRARY_PATH="${H2O_HOME}/lib;${MUSTACHE_C_HOME}/lib;${YAJL_HOME}/lib" \
  11. -DCMAKE_INCLUDE_PATH="${H2O_HOME}/include;${MUSTACHE_C_HOME}/include;${YAJL_HOME}/include" \
  12. -DCMAKE_C_FLAGS="-march=native $1" "$TROOT"
  13. make -j "$(nproc)"
  14. }
  15. run_curl()
  16. {
  17. for ((i = 0; i < 10; i++)); do
  18. curl "${H2O_APP_PROFILE_URL}/$1" > /dev/null 2>&1
  19. done
  20. }
  21. run_h2o_app()
  22. {
  23. "$1/h2o_app" -a1 -f "$2/template/fortunes.mustache" -m5 "$3" "$4" \
  24. -d "host=$DBHOST dbname=hello_world user=benchmarkdbuser password=benchmarkdbpass" &
  25. }
  26. generate_profile_data()
  27. {
  28. run_h2o_app . "${TROOT}" -p$H2O_APP_PROFILE_PORT -t1
  29. local -r H2O_APP_PROFILE_PID=$!
  30. while ! curl ${H2O_APP_PROFILE_URL} > /dev/null 2>&1; do sleep 1; done
  31. run_curl json
  32. run_curl db
  33. run_curl queries?queries=20
  34. run_curl fortunes
  35. run_curl updates?queries=20
  36. run_curl plaintext
  37. kill -s SIGTERM $H2O_APP_PROFILE_PID
  38. wait $H2O_APP_PROFILE_PID
  39. }
  40. install -d "$BUILD_DIR"
  41. pushd "$BUILD_DIR"
  42. build_h2o_app "-fprofile-generate"
  43. generate_profile_data
  44. make clean
  45. rm -f CMakeCache.txt
  46. build_h2o_app "-fprofile-use"
  47. make -j "$(nproc)" install
  48. popd
  49. rm -rf "$BUILD_DIR"
  50. run_h2o_app "${H2O_APP_HOME}/bin" "${H2O_APP_HOME}/share/h2o_app"