run.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. #!/bin/bash
  2. [ "$DEBUG" ] && set -x
  3. set -eo pipefail -o errtrace
  4. dir="$(dirname "$(readlink -f "$BASH_SOURCE")")"
  5. image="$1"
  6. # Use the image being tested as our client image since it should already have curl
  7. clientImage="$image"
  8. # Create an instance of the container-under-test
  9. cid="$(
  10. docker run -d \
  11. -e MAX_HEAP_SIZE='128m' \
  12. -e HEAP_NEWSIZE='32m' \
  13. -e JVM_OPTS='
  14. -Dcom.sun.management.jmxremote.port=7199
  15. -Dcom.sun.management.jmxremote.ssl=false
  16. -Dcom.sun.management.jmxremote.authenticate=false
  17. ' \
  18. "$image"
  19. )"
  20. trap "docker rm -vf $cid > /dev/null" EXIT
  21. trap "( set -x; docker logs --tail=20 $cid )" ERR
  22. _status() {
  23. docker run --rm --link "$cid":cassandra "$clientImage" nodetool -h cassandra status
  24. }
  25. # Make sure our container is up
  26. . "$dir/../../retry.sh" '_status'
  27. cqlsh() {
  28. docker run -i --rm \
  29. --link "$cid":cassandra \
  30. "$clientImage" \
  31. cqlsh -u cassandra -p cassandra "$@" cassandra
  32. }
  33. # Make sure our container is listening
  34. . "$dir/../../retry.sh" 'cqlsh < /dev/null'
  35. # https://wiki.apache.org/cassandra/GettingStarted#Step_4:_Using_cqlsh
  36. cqlsh -e "
  37. CREATE KEYSPACE mykeyspace
  38. WITH REPLICATION = {
  39. 'class': 'SimpleStrategy',
  40. 'replication_factor': 1
  41. }
  42. "
  43. cqlsh -k mykeyspace -e "
  44. CREATE TABLE users (
  45. user_id int PRIMARY KEY,
  46. fname text,
  47. lname text
  48. )
  49. "
  50. cqlsh -k mykeyspace -e "
  51. INSERT INTO users (user_id, fname, lname)
  52. VALUES (1745, 'john', 'smith')
  53. "
  54. cqlsh -k mykeyspace -e "
  55. INSERT INTO users (user_id, fname, lname)
  56. VALUES (1744, 'john', 'doe')
  57. "
  58. cqlsh -k mykeyspace -e "
  59. INSERT INTO users (user_id, fname, lname)
  60. VALUES (1746, 'john', 'smith')
  61. "
  62. # TODO find some way to get cqlsh to provide machine-readable output D:
  63. [[ "$(cqlsh -k mykeyspace -e "
  64. SELECT * FROM users
  65. ")" == *'3 rows'* ]]
  66. cqlsh -k mykeyspace -e "
  67. CREATE INDEX ON users (lname)
  68. "
  69. [[ "$(cqlsh -k mykeyspace -e "
  70. SELECT * FROM users WHERE lname = 'smith'
  71. ")" == *'2 rows'* ]]