test_helper.bash 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. setup() {
  2. IMAGE_NAME="$NAME:$VERSION"
  3. }
  4. # function relative to the current container / image
  5. build_image() {
  6. #disable outputs
  7. docker build -t $IMAGE_NAME $BATS_TEST_DIRNAME/../image &> /dev/null
  8. }
  9. run_image() {
  10. CONTAINER_ID=$(docker run $@ -d $IMAGE_NAME)
  11. CONTAINER_IP=$(get_container_ip_by_cid $CONTAINER_ID)
  12. }
  13. start_container() {
  14. start_containers_by_cid $CONTAINER_ID
  15. }
  16. stop_container() {
  17. stop_containers_by_cid $CONTAINER_ID
  18. }
  19. remove_container() {
  20. remove_containers_by_cid $CONTAINER_ID
  21. }
  22. clear_container() {
  23. stop_containers_by_cid $CONTAINER_ID
  24. remove_containers_by_cid $CONTAINER_ID
  25. }
  26. is_service_running() {
  27. is_service_running_by_cid $CONTAINER_ID $1
  28. }
  29. is_file_exists() {
  30. is_file_exists_by_cid $CONTAINER_ID $1
  31. }
  32. wait_service() {
  33. wait_service_by_cid $CONTAINER_ID $@
  34. }
  35. # generic functions
  36. get_container_ip_by_cid() {
  37. local IP=$(docker inspect -f "{{ .NetworkSettings.IPAddress }}" $1)
  38. echo "$IP"
  39. }
  40. start_containers_by_cid() {
  41. for cid in "$@"
  42. do
  43. #disable outputs
  44. docker start $cid &> /dev/null
  45. done
  46. }
  47. stop_containers_by_cid() {
  48. for cid in "$@"
  49. do
  50. #disable outputs
  51. docker stop $cid &> /dev/null
  52. done
  53. }
  54. remove_containers_by_cid() {
  55. for cid in "$@"
  56. do
  57. #disable outputs
  58. docker rm $cid &> /dev/null
  59. done
  60. }
  61. clear_containers_by_cid() {
  62. stop_containers_by_cid $@
  63. remove_containers_by_cid $@
  64. }
  65. is_service_running_by_cid() {
  66. docker exec $1 ps cax | grep $2 > /dev/null
  67. }
  68. is_file_exists_by_cid() {
  69. docker exec $1 cat "/container/run/state/startup-done" > /dev/null 2>&1
  70. }
  71. wait_service_by_cid() {
  72. cid=$1
  73. # first wait image init end
  74. while ! is_file_exists_by_cid $cid /etc/my_init_startup_files_completed
  75. do
  76. sleep 0.5
  77. done
  78. for service in "${@:2}"
  79. do
  80. # wait service
  81. while ! is_service_running_by_cid $cid $service
  82. do
  83. sleep 0.5
  84. done
  85. done
  86. }