#!/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 global MASTER_PID := '' global AGENT_PID := '' global MESOS_WORK_DIR := $[mktemp -d -t mesos-XXXXXX] global MESOS_RUNTIME_DIR := $[mktemp -d -t mesos-XXXXXX] proc cleanup { # Make sure we kill the master on exit. if [[ ! -z ${MASTER_PID} ]] { kill $(MASTER_PID) } # Make sure we kill the agent on exit. if [[ ! -z ${AGENT_PID} ]] { kill $(AGENT_PID) } if [[ -d "${MESOS_WORK_DIR}" ]] { rm -rf $(MESOS_WORK_DIR); } if [[ -d "${MESOS_RUNTIME_DIR}" ]] { rm -rf $(MESOS_RUNTIME_DIR); } } atexit cleanup export LD_LIBRARY_PATH=$(MESOS_BUILD_DIR)/src/.libs global MASTER := "$(MESOS_SBIN_DIR)/mesos-master" global AGENT := "$(MESOS_SBIN_DIR)/mesos-agent" global 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) & global 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 global STATUS := ${?$(?) if [[ ${STATUS} -ne 0 ]] { echo "$(RED)Master crashed; failing test$(NORMAL)" exit 2 } # 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" & global 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 global STATUS := ${?$(?) if [[ ${STATUS} -ne 0 ]] { echo "$(RED)Slave crashed; failing test$(NORMAL)" exit 2 } # 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 global STATUS := ${?$(?) # Make sure the disk full framework "failed". if [[ ! ${STATUS} -eq 1 ]] { echo "$(RED) Disk full framework returned $(STATUS) not 1$(NORMAL)" exit 1 } # And make sure the agent is still running! kill -0 $(AGENT_PID) >/dev/null !2 > !1 global STATUS := ${?$(?) if [[ ${STATUS} -ne 0 ]] { echo "$(RED)Slave crashed; failing test$(NORMAL)" exit 2 } exit 0 (CommandList children: [ (C {(source)} {(${ VSub_Name MESOS_SOURCE_DIR) (/support/colors.sh)}) (C {(source)} {(${ VSub_Name MESOS_SOURCE_DIR) (/support/atexit.sh)}) (C {(source)} {(${ VSub_Name MESOS_HELPER_DIR) (/colors.sh)}) (C {(source)} {(${ VSub_Name MESOS_HELPER_DIR) (/atexit.sh)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:MASTER_PID) op:Equal rhs:{(SQ )} spids:[40])] spids: [40] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:AGENT_PID) op:Equal rhs:{(SQ )} spids:[42])] spids: [42] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MESOS_WORK_DIR) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(mktemp)} {(-d)} {(-t)} {(mesos-XXXXXX)})]) left_token: spids: [45 53] ) } spids: [44] ) ] spids: [44] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MESOS_RUNTIME_DIR) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(mktemp)} {(-d)} {(-t)} {(mesos-XXXXXX)})]) left_token: spids: [56 64] ) } spids: [55] ) ] spids: [55] ) (FuncDef name: cleanup body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name MASTER_PID)}) ) ) terminator: ) ] action: [(C {(kill)} {(${ VSub_Name MASTER_PID)})] spids: [-1 95] ) ] spids: [-1 105] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (BoolUnary op_id:BoolUnary_z child:{(${ VSub_Name AGENT_PID)}) ) ) terminator: ) ] action: [(C {(kill)} {(${ VSub_Name AGENT_PID)})] spids: [-1 128] ) ] spids: [-1 138] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id:BoolUnary_d child:{(DQ (${ VSub_Name MESOS_WORK_DIR))}) ) terminator: ) ] action: [ (Sentence child: (C {(rm)} {(-rf)} {(${ VSub_Name MESOS_WORK_DIR)}) terminator: ) ] spids: [-1 157] ) ] spids: [-1 170] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolUnary op_id: BoolUnary_d child: {(DQ (${ VSub_Name MESOS_RUNTIME_DIR))} ) ) terminator: ) ] action: [ (Sentence child: (C {(rm)} {(-rf)} {(${ VSub_Name MESOS_RUNTIME_DIR)}) terminator: ) ] spids: [-1 189] ) ] spids: [-1 202] ) ] spids: [73] ) spids: [67 72] ) (C {(atexit)} {(cleanup)}) (C {(export)} {(Lit_VarLike "LD_LIBRARY_PATH=") (${ VSub_Name MESOS_BUILD_DIR) (/src/.libs)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MASTER) op: Equal rhs: {(${ VSub_Name MESOS_SBIN_DIR) (/mesos-master)} spids: [220] ) ] spids: [220] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGENT) op: Equal rhs: {(${ VSub_Name MESOS_SBIN_DIR) (/mesos-agent)} spids: [226] ) ] spids: [226] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:DISK_FULL_FRAMEWORK) op: Equal rhs: {(${ VSub_Name MESOS_HELPER_DIR) (/disk-full-framework)} spids: [232] ) ] spids: [232] ) (C {(unset)} {(MESOS_BUILD_DIR)}) (C {(unset)} {(MESOS_SOURCE_DIR)}) (C {(unset)} {(MESOS_HELPER_DIR)}) (C {(unset)} {(MESOS_VERBOSE)}) (Sentence child: (C {(${ VSub_Name MASTER)} {(--ip) (Lit_Other "=") (127.0.0.1)} {(--port) (Lit_Other "=") (5432)} {(--work_dir) (Lit_Other "=") (${ VSub_Name MESOS_WORK_DIR)} ) terminator: ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MASTER_PID) op: Equal rhs: {(${ VSub_Bang "!")} spids: [291] ) ] spids: [291] ) (C {(echo)} { (DQ (${ VSub_Name GREEN) ("Launched master at ") (${ VSub_Name MASTER_PID) (${ VSub_Name NORMAL)) } ) (C {(sleep)} {(2)}) (SimpleCommand words: [{(kill)} {(-0)} {(${ VSub_Name MASTER_PID)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[327]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[330]) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:STATUS) op:Equal rhs:{(${ VSub_QMark "?")} spids:[333])] spids: [333] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_ne left:{(${ VSub_Name STATUS)} right:{(0)}) ) terminator: ) ] action: [ (C {(echo)} {(DQ (${ VSub_Name RED) ("Master crashed; failing test") (${ VSub_Name NORMAL))}) (C {(exit)} {(2)}) ] spids: [-1 353] ) ] spids: [-1 373] ) (C {(export)} {(Lit_VarLike "MESOS_SYSTEMD_ENABLE_SUPPORT=") (false)}) (Sentence child: (C {(${ VSub_Name AGENT)} {(--work_dir) (Lit_Other "=") (${ VSub_Name MESOS_WORK_DIR)} {(--runtime_dir) (Lit_Other "=") (${ VSub_Name MESOS_RUNTIME_DIR)} {(--master) (Lit_Other "=") (127.0.0.1) (Lit_Other ":") (5432)} {(--isolation) (Lit_Other "=") (SQ )} {(--enforce_container_disk_quota)} {(--resources) (Lit_Other "=") (DQ ("cpus:1;mem:96;disk:50"))} ) terminator: ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:AGENT_PID) op: Equal rhs: {(${ VSub_Bang "!")} spids: [444] ) ] spids: [444] ) (C {(echo)} { (DQ (${ VSub_Name GREEN) ("Launched agent at ") (${ VSub_Name AGENT_PID) (${ VSub_Name NORMAL)) } ) (C {(sleep)} {(2)}) (SimpleCommand words: [{(kill)} {(-0)} {(${ VSub_Name AGENT_PID)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[480]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[483]) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:STATUS) op:Equal rhs:{(${ VSub_QMark "?")} spids:[486])] spids: [486] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_ne left:{(${ VSub_Name STATUS)} right:{(0)}) ) terminator: ) ] action: [ (C {(echo)} {(DQ (${ VSub_Name RED) ("Slave crashed; failing test") (${ VSub_Name NORMAL))}) (C {(exit)} {(2)}) ] spids: [-1 506] ) ] spids: [-1 526] ) (C {(${ VSub_Name DISK_FULL_FRAMEWORK)} {(--master) (Lit_Other "=") (127.0.0.1) (Lit_Other ":") (5432)} {(--pre_sleep_duration) (Lit_Other "=") (1secs)} {(--post_sleep_duration) (Lit_Other "=") (30secs)} {(--disk_use_limit) (Lit_Other "=") (10mb)} {(--run_once)} ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:STATUS) op:Equal rhs:{(${ VSub_QMark "?")} spids:[566])] spids: [566] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (BoolBinary op_id:BoolBinary_eq left:{(${ VSub_Name STATUS)} right:{(1)}) ) ) terminator: ) ] action: [ (C {(echo)} { (DQ (${ VSub_Name RED) (" Disk full framework returned ") (${ VSub_Name STATUS) (" not 1") (${ VSub_Name NORMAL) ) } ) (C {(exit)} {(1)}) ] spids: [-1 592] ) ] spids: [-1 616] ) (SimpleCommand words: [{(kill)} {(-0)} {(${ VSub_Name AGENT_PID)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[630]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[633]) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:STATUS) op:Equal rhs:{(${ VSub_QMark "?")} spids:[636])] spids: [636] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id:BoolBinary_ne left:{(${ VSub_Name STATUS)} right:{(0)}) ) terminator: ) ] action: [ (C {(echo)} {(DQ (${ VSub_Name RED) ("Slave crashed; failing test") (${ VSub_Name NORMAL))}) (C {(exit)} {(2)}) ] spids: [-1 656] ) ] spids: [-1 676] ) (C {(exit)} {(0)}) ] )