blob: 83ae0947d4f5ec0a960e8cefa925cacbe6c6808e [file] [log] [blame]
#!/usr/bin/env bash
# This script runs the disk full framework on a cluster using the disk/du
# isolator and checks that the framework returns a status of 1.
source ${MESOS_SOURCE_DIR}/support/colors.sh
source ${MESOS_SOURCE_DIR}/support/atexit.sh
source ${MESOS_HELPER_DIR}/colors.sh
source ${MESOS_HELPER_DIR}/atexit.sh
MASTER_PID=
AGENT_PID=
MESOS_WORK_DIR=`mktemp -d -t mesos-XXXXXX`
MESOS_RUNTIME_DIR=`mktemp -d -t mesos-XXXXXX`
function cleanup() {
# Make sure we kill the master on exit.
if [[ ! -z ${MASTER_PID} ]]; then
kill ${MASTER_PID}
fi
# Make sure we kill the agent on exit.
if [[ ! -z ${AGENT_PID} ]]; then
kill ${AGENT_PID}
fi
if [[ -d "${MESOS_WORK_DIR}" ]]; then
rm -rf ${MESOS_WORK_DIR};
fi
if [[ -d "${MESOS_RUNTIME_DIR}" ]]; then
rm -rf ${MESOS_RUNTIME_DIR};
fi
}
atexit cleanup
export LD_LIBRARY_PATH=${MESOS_BUILD_DIR}/src/.libs
MASTER=${MESOS_SBIN_DIR}/mesos-master
AGENT=${MESOS_SBIN_DIR}/mesos-agent
DISK_FULL_FRAMEWORK=${MESOS_HELPER_DIR}/disk-full-framework
# The mesos binaries expect MESOS_ prefixed environment variables
# to correspond to flags, so we unset these here.
unset MESOS_BUILD_DIR
unset MESOS_SOURCE_DIR
unset MESOS_HELPER_DIR
unset MESOS_VERBOSE
# Launch master.
${MASTER} \
--ip=127.0.0.1 \
--port=5432 \
--work_dir=${MESOS_WORK_DIR} &
MASTER_PID=${!}
echo "${GREEN}Launched master at ${MASTER_PID}${NORMAL}"
sleep 2
# Check the master is still running after 2 seconds.
kill -0 ${MASTER_PID} >/dev/null 2>&1
STATUS=${?}
if [[ ${STATUS} -ne 0 ]]; then
echo "${RED}Master crashed; failing test${NORMAL}"
exit 2
fi
# Disable support for systemd as this test does not run as root.
# This flag must be set as an environment variable because the flag
# does not exist on non-Linux builds.
export MESOS_SYSTEMD_ENABLE_SUPPORT=false
# Launch agent.
${AGENT} \
--work_dir=${MESOS_WORK_DIR} \
--runtime_dir=${MESOS_RUNTIME_DIR} \
--master=127.0.0.1:5432 \
--isolation='disk/du' \
--enforce_container_disk_quota \
--resources="cpus:1;mem:96;disk:50" &
AGENT_PID=${!}
echo "${GREEN}Launched agent at ${AGENT_PID}${NORMAL}"
sleep 2
# Check the agent is still running after 2 seconds.
kill -0 ${AGENT_PID} >/dev/null 2>&1
STATUS=${?}
if [[ ${STATUS} -ne 0 ]]; then
echo "${RED}Slave crashed; failing test${NORMAL}"
exit 2
fi
# The main event!
${DISK_FULL_FRAMEWORK} \
--master=127.0.0.1:5432 \
--pre_sleep_duration=1secs \
--post_sleep_duration=30secs \
--disk_use_limit=10mb \
--run_once
STATUS=${?}
# Make sure the disk full framework "failed".
if [[ ! ${STATUS} -eq 1 ]]; then
echo "${RED} Disk full framework returned ${STATUS} not 1${NORMAL}"
exit 1
fi
# And make sure the agent is still running!
kill -0 ${AGENT_PID} >/dev/null 2>&1
STATUS=${?}
if [[ ${STATUS} -ne 0 ]]; then
echo "${RED}Slave crashed; failing test${NORMAL}"
exit 2
fi
exit 0