@@ -14,18 +14,30 @@ set -o pipefail
1414MACHINE=$1
1515INTERNAL_PORT=8080
1616PREFIX=" ==>"
17+ BASE_NAME=" docker-php"
1718
18- if [ -z " $1 " ]; then
19+ if [[ -z " $1 " ] ]; then
1920 printf " Basic integration script for docker-php and its variants\n\n"
2021 printf " Usage:\n\ttest.sh [docker-machine ip]\n"
21- exit 1;
22+ exit 1
2223fi
2324
24- if [ ! $PHP_VARIANT ]; then
25+ if [[ ! $PHP_VARIANT ] ]; then
2526 echo " Missing PHP_VARIANT environment variable"
2627 exit 1
2728fi
2829
30+ # Required for dgoss execution, below
31+ if [[ ! -n " $GOSS_PATH " ]]; then
32+ [ -f $( which goss) ] || { echo ' goss not found, pass GOSS_PATH' ; exit 1; }
33+ GOSS_PATH=$( which goss)
34+ fi
35+
36+ if [[ ! -n " $DGOSS_PATH " ]]; then
37+ [ -f $( which dgoss) ] || { echo ' dgoss not found, pass DGOSS_PATH' ; exit 1; }
38+ DGOSS_PATH=$( which dgoss)
39+ fi
40+
2941# Distinguish between naming types
3042VARIANT_NAME=$PHP_VARIANT
3143DOCKERFILE_NAME=" Dockerfile-${PHP_VARIANT} "
@@ -36,13 +48,12 @@ TEST_STRING="PHP Version ${PHP_VERSION}."
3648PLATFORM=" ${PLATFORM:= linux/ amd64} "
3749
3850# Since containers may or may not be against the same docker engine, create a matrix-unique tag name for outputs
39- TAG_NAME=" docker-php -${VARIANT_NAME} -${PLATFORM} "
51+ TAG_NAME=" ${BASE_NAME} -${VARIANT_NAME} -${PLATFORM} "
4052# Formats as lowercase
4153TAG_NAME=$( echo $TAG_NAME | tr ' [:upper:]' ' [:lower:]' )
4254# Removes slashes
4355TAG_NAME=$( echo $TAG_NAME | sed ' s/\///' )
4456
45-
4657echo " ${PREFIX} Variant ${VARIANT_NAME} "
4758echo " ${PREFIX} PHP Version: ${PHP_VERSION} "
4859echo " ${PREFIX} Dockerfile: ${DOCKERFILE_NAME} "
@@ -51,6 +62,9 @@ echo "${PREFIX} Platform: ${PLATFORM}"
5162
5263printf " ${PREFIX} Building container\n"
5364
65+ printf " ${PREFIX} using goss (${GOSS_PATH} )\n"
66+ printf " ${PREFIX} using dgoss (${DGOSS_PATH} )\n"
67+
5468docker buildx build --platform $PLATFORM --iidfile $TAG_NAME -t $TAG_NAME -f $DOCKERFILE_NAME .
5569
5670# NOTE: multi-arch builds may not be accessible by docker tag, instead target by ID
@@ -63,6 +77,9 @@ printf "${PREFIX} Running container in background\n"
6377CONTAINER_ID=$( docker run --rm --platform $PLATFORM --env-file ./.test.env -p $INTERNAL_PORT -d $BUILD_SHA )
6478CONTAINER_PORT=$( docker inspect --format ' {{ (index (index .NetworkSettings.Ports "8080/tcp") 0).HostPort }}' $CONTAINER_ID )
6579
80+ printf " ${PREFIX} Waiting for container to boot\n"
81+ sleep 5
82+
6683# ==> Cleanup routine
6784# CI environments may be ephemeral, but local environments are not
6885function finish {
@@ -77,9 +94,7 @@ function finish {
7794
7895trap finish EXIT
7996
80- printf " ${PREFIX} Waiting for container to boot\n"
81- sleep 5
82-
97+ # -------------------------------------------------------------
8398echo " ${PREFIX} Check default response, including PHP version identification"
8499curl " ${MACHINE} :${CONTAINER_PORT} " | grep " ${TEST_STRING} "
85100
@@ -90,16 +105,19 @@ echo "${PREFIX} Send uploaded file"
90105curl --form upload=@tmp.txt " ${MACHINE} :${CONTAINER_PORT} " \
91106 | grep " ${TEST_STRING} " > /dev/null
92107
108+ # -------------------------------------------------------------
93109echo " ${PREFIX} Perform startup tests"
94- GOSS_PATH=goss \
110+
111+ GOSS_FILES_PATH=" runtime-tests/startup/" \
95112GOSS_SLEEP=5 \
96- GOSS_FILES_PATH=" runtime-tests/startup/${PHP_VARIANT} /" \
97- " ${GOSS_INSTALL_PATH} dgoss" run --rm $BUILD_SHA
113+ $DGOSS_PATH run --rm $BUILD_SHA
98114
115+ # -------------------------------------------------------------
99116echo " ${PREFIX} Perform NewRelic runtime tests"
100- GOSS_PATH=goss \
101- GOSS_FILES_PATH=" runtime-tests/newrelic/${PHP_VARIANT} /" \
102- " ${GOSS_INSTALL_PATH} dgoss" run \
117+
118+ GOSS_FILES_PATH=" runtime-tests/newrelic/" \
119+ GOSS_SLEEP=5 \
120+ $DGOSS_PATH run --rm \
103121 -e REPLACE_NEWRELIC_APP=" abcdefg" \
104122 -e REPLACE_NEWRELIC_LICENSE=" hijklmno" \
105123 -e NEWRELIC_TRACING_ENABLED=" true" \
0 commit comments