github.com/drud/ddev@v1.21.5-alpha1.0.20230226034409-94fcc4b94453/containers/ddev-dbserver/test/functions.sh (about) 1 #!/bin/bash 2 3 function basic_setup { 4 export CONTAINER_NAME="testserver" 5 export HOSTPORT=33000 6 export MYTMPDIR="${HOME}/tmp/testserver-sh_${RANDOM}_$$" 7 export outdir="${HOME}/tmp/mariadb_testserver/output_${RANDOM}_$$" 8 export VOLUME="dbserver_test-${RANDOM}_$$" 9 10 export MOUNTUID=33 11 export MOUNTGID=33 12 13 # Homebrew mysql client really really wants /usr/local/etc/my.cnf.d 14 if [ "${OS:-$(uname)}" != "Windows_NT" ] && [ ! -d "$(brew --prefix)/etc/my.cnf.d" ]; then 15 mkdir -p "$(brew --prefix)/etc/my.cnf.d" || sudo mkdir -p "$(brew --prefix)/etc/my.cnf.d" 16 fi 17 docker rm -f ${CONTAINER_NAME} 2>/dev/null || true 18 19 # Initialize the volume with the correct ownership 20 docker run --rm -v "${VOLUME}:/var/lib/mysql:nocopy" busybox:stable chown -R ${MOUNTUID}:${MOUNTGID} /var/lib/mysql 21 } 22 23 function teardown { 24 docker rm -f ${CONTAINER_NAME} 25 docker volume rm $VOLUME || true 26 } 27 28 # Wait for container to be ready. 29 function containercheck { 30 for i in {15..0}; do 31 # fail if we can't find the container 32 if ! docker inspect ${CONTAINER_NAME} >/dev/null; then 33 break 34 fi 35 36 status="$(docker inspect ${CONTAINER_NAME} | jq -r '.[0].State.Status')" 37 if [ "${status}" != "running" ]; then 38 break 39 fi 40 health="$(docker inspect --format '{{json .State.Health }}' ${CONTAINER_NAME} | jq -r .Status)" 41 case ${health} in 42 healthy) 43 return 0 44 ;; 45 *) 46 sleep 1 47 ;; 48 esac 49 done 50 echo "# --- ddev-dbserver FAIL -----" 51 return 1 52 }