run.sh 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/bin/bash
  2. set -eo pipefail
  3. dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
  4. image="$1"
  5. export MYSQL_ROOT_PASSWORD='this is an example test password'
  6. export MYSQL_USER='0123456789012345' # "ERROR: 1470 String 'my cool mysql user' is too long for user name (should be no longer than 16)"
  7. export MYSQL_PASSWORD='my cool mysql password'
  8. export MYSQL_DATABASE='my cool mysql database'
  9. # TokuDB can be checked only if transparent_hugepage is disabled
  10. if [ -f /sys/kernel/mm/transparent_hugepage/defrag ]; then
  11. DEFRAG_OLDSTATE=$(cat /sys/kernel/mm/transparent_hugepage/defrag | sed -e 's/.*\[//; s/].*//')
  12. if [ "${DEFRAG_OLDSTATE}" != "never" -a ! -w /sys/kernel/mm/transparent_hugepage/defrag ]; then
  13. echo [skipped] due to enabled transparent_hugepage
  14. exit 0
  15. fi
  16. fi
  17. # TokuDB can be checked only if transparent_hugepage is disabled
  18. if [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then
  19. HUGEPAGE_OLDSTATE=$(cat /sys/kernel/mm/transparent_hugepage/enabled | sed -e 's/.*\[//; s/].*//')
  20. if [ "$HUGEPAGE_OLDSTATE" != "never" -a ! -w /sys/kernel/mm/transparent_hugepage/enabled ]; then
  21. echo [skipped] due to enabled transparent_hugepage
  22. exit 0
  23. fi
  24. fi
  25. cname="mysql-container-$RANDOM-$RANDOM"
  26. cid="$(
  27. docker run -d \
  28. -e INIT_TOKUDB=1 \
  29. -e MYSQL_ROOT_PASSWORD \
  30. -e MYSQL_USER \
  31. -e MYSQL_PASSWORD \
  32. -e MYSQL_DATABASE \
  33. --name "$cname" \
  34. "$image"
  35. )"
  36. trap "docker rm -vf $cid > /dev/null" EXIT
  37. mysql() {
  38. docker run --rm -i \
  39. --link "$cname":mysql \
  40. --entrypoint mysql \
  41. -e MYSQL_PWD="$MYSQL_PASSWORD" \
  42. "$image" \
  43. -hmysql \
  44. -u"$MYSQL_USER" \
  45. --silent \
  46. "$@" \
  47. "$MYSQL_DATABASE"
  48. }
  49. . "$dir/../../retry.sh" --tries 20 "echo 'SELECT 1' | mysql"
  50. echo 'CREATE TABLE test (a INT, b INT, c VARCHAR(255), PRIMARY KEY index_a (a), CLUSTERING KEY index_b (b)) ENGINE=TokuDB' | mysql
  51. [ "$(echo 'SELECT COUNT(*) FROM test' | mysql)" = 0 ]