run.sh 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  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
  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. -Dcassandra.ring_delay_ms=0
  15. -Dcom.sun.management.jmxremote.authenticate=false
  16. -Dcom.sun.management.jmxremote.port=7199
  17. -Dcom.sun.management.jmxremote.ssl=false
  18. ' \
  19. "$image"
  20. )"
  21. trap "docker rm -vf $cid > /dev/null" EXIT
  22. trap "( set -x; docker logs --tail=20 $cid )" ERR
  23. _status() {
  24. docker run --rm \
  25. --link "$cid":cassandra \
  26. --entrypoint nodetool \
  27. "$clientImage" \
  28. -h cassandra status
  29. }
  30. # Make sure our container is up
  31. . "$dir/../../retry.sh" '_status'
  32. cqlsh() {
  33. docker run -i --rm \
  34. --link "$cid":cassandra \
  35. --entrypoint cqlsh \
  36. "$clientImage" \
  37. -u cassandra -p cassandra "$@" cassandra
  38. }
  39. # Make sure our container is listening
  40. . "$dir/../../retry.sh" 'cqlsh < /dev/null'
  41. # https://wiki.apache.org/cassandra/GettingStarted#Step_4:_Using_cqlsh
  42. cqlsh -e "
  43. CREATE KEYSPACE mykeyspace
  44. WITH REPLICATION = {
  45. 'class': 'SimpleStrategy',
  46. 'replication_factor': 1
  47. }
  48. "
  49. cqlsh -k mykeyspace -e "
  50. CREATE TABLE users (
  51. user_id int PRIMARY KEY,
  52. fname text,
  53. lname text
  54. )
  55. "
  56. cqlsh -k mykeyspace -e "
  57. INSERT INTO users (user_id, fname, lname)
  58. VALUES (1745, 'john', 'smith')
  59. "
  60. cqlsh -k mykeyspace -e "
  61. INSERT INTO users (user_id, fname, lname)
  62. VALUES (1744, 'john', 'doe')
  63. "
  64. cqlsh -k mykeyspace -e "
  65. INSERT INTO users (user_id, fname, lname)
  66. VALUES (1746, 'john', 'smith')
  67. "
  68. # TODO find some way to get cqlsh to provide machine-readable output D:
  69. [[ "$(cqlsh -k mykeyspace -e "
  70. SELECT * FROM users
  71. ")" == *'3 rows'* ]]
  72. cqlsh -k mykeyspace -e "
  73. CREATE INDEX ON users (lname)
  74. "
  75. [[ "$(cqlsh -k mykeyspace -e "
  76. SELECT * FROM users WHERE lname = 'smith'
  77. ")" == *'2 rows'* ]]