| #!/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 |