hotupgrade_test.sh 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #!/bin/sh
  2. #
  3. # Script to test release hot code upgrade
  4. #
  5. # Usage:
  6. # # to generate and launch previous release, then generate a new release and upgrade files
  7. # ./test/hotupgrade_test.sh setup <revision-to-upgrade-from>
  8. # # to upgrade the release and perform sanity checks
  9. # ./test/hotupgrade_test.sh check
  10. set -e
  11. set -x
  12. REBAR=`which rebar3 || echo ./rebar3`
  13. COMMAND=$1
  14. BASE_REV=$2
  15. do_setup() {
  16. CUR_VERSION=`git log -1 --format='%H'` #`git rev-parse --abbrev-ref HEAD`
  17. # Building the release for the OLD version
  18. if [ ! -d ebin ]; then mkdir ebin; fi
  19. cp test/relx-base.config ./relx.config
  20. cp src/pooler.appup.src ebin/pooler.appup
  21. git checkout $BASE_REV
  22. if [ ! -e src/pooled_gs.erl ]; then cp test/pooled_gs.erl src/; fi
  23. $REBAR as test release
  24. ./_build/test/rel/pooler_test/bin/pooler_test daemon
  25. git clean -df
  26. # Building the release and relup file with the NEW version
  27. git checkout $CUR_VERSION
  28. if [ ! -e src/pooled_gs.erl ]; then cp test/pooled_gs.erl src/; fi
  29. $REBAR as test release --config test/relx-current.config
  30. $REBAR as test relup --config test/relx-current.config --relname pooler_test --relvsn=2.0.0 --upfrom=1.0.0
  31. $REBAR as test tar --config test/relx-current.config
  32. cp _build/test/rel/pooler_test/pooler_test-2.0.0.tar.gz _build/test/rel/pooler_test/releases/
  33. ./_build/test/rel/pooler_test/bin/pooler_test-1.0.0 unpack 2.0.0
  34. }
  35. TEST='Taken=[begin P = pooler:take_member(pool1, 1000), is_pid(P) orelse error(P), P end || _ <- lists:seq(1, 5)], [pooler:return_member(pool1, P, fail) || P <- Taken], ok.'
  36. do_check() {
  37. RES1=`./_build/test/rel/pooler_test/bin/pooler_test-1.0.0 eval "${TEST}"`
  38. if [ "$RES1" != "ok" ]; then
  39. echo "Before upgrade checkout failed" >&2
  40. echo $RES1 >&2
  41. exit 1
  42. fi
  43. ./_build/test/rel/pooler_test/bin/pooler_test-1.0.0 upgrade 2.0.0
  44. RES2=`./_build/test/rel/pooler_test/bin/pooler_test eval "${TEST}"`
  45. if [ "$RES2" != "ok" ]; then
  46. echo "After upgrade checkout failed" >&2
  47. echo $RES2 >&2
  48. exit 1
  49. fi
  50. ./_build/test/rel/pooler_test/bin/pooler_test stop
  51. }
  52. "do_$COMMAND"