VirtualBox

Ignore:
Timestamp:
Dec 7, 2012 2:58:52 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
82549
Message:

Installer/linux: headless X server service clean-up.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Installer/linux/testcase/tstHeadlessXOrg.sh

    r43832 r44063  
    5858## Create a simple configuration file.  Add items onto the end to override them
    5959# on an item-by-item basis.
    60 create_basic_configuration_file()
    61 {
    62   FILE_NAME="$1"    ## The name of the configuration file to create.
    63   BASE_FOLDER="$2"  ## The basic folder for creating things under.
     60create_basic_configuration()
     61{
     62  TEST_FOLDER="${1}"
     63  FILE_NAME="${TEST_FOLDER}conf"    ## The name of the configuration file to create.
     64  BASE_FOLDER="${TEST_FOLDER}"
     65  XORG_FOLDER="${TEST_FOLDER}/xorg"
     66  mkdir -p "${XORG_FOLDER}"
    6467  cat > "${FILE_NAME}" << EOF
    6568HEADLESS_X_ORG_CONFIGURATION_FOLDER="${BASE_FOLDER}/xorg"
     
    6770HEADLESS_X_ORG_LOG_FILE="log"
    6871HEADLESS_X_ORG_RUN_FOLDER="${BASE_FOLDER}/run"
    69 HEADLESS_X_ORG_CHECK_PREREQUISITES=
     72HEADLESS_X_ORG_WAIT_FOR_PREREQUISITES="true"
    7073HEADLESS_X_ORG_SERVER_PRE_COMMAND=
    7174HEADLESS_X_ORG_SERVER_COMMAND="echo"
     
    8891TEST_NAME_FULL="${OUR_FOLDER}/$(basename "$0")"
    8992
    90 # We use this to test a long-running process
    91 [ x"$1" = "x--test-sleep" ] &&
    92   while true; do true; done
    93 
    9493# Create a temporary directory for configuration and logging.
    95 for i in 0 1 2 3 4 5 6 7 8 9; do
    96   TEST_FOLDER="/tmp/${TEST_NAME} ${i}"  # Space in the name to test quoting.
    97   mkdir -m 0700 "${TEST_FOLDER}" 2>/dev/null && break
    98 done
    99 [ -d "${TEST_FOLDER}" ] || abort "Failed to create a temporary folder\n"
    100 # Clean up.  Small race here, but probably not important.
    101 trap "rm -r \"${TEST_FOLDER}\" 2>/dev/null" EXIT HUP INT QUIT ABRT TERM
    102 # Server configuration folder.
    103 XORG_FOLDER="${TEST_FOLDER}/xorg"
    104 mkdir -p "${XORG_FOLDER}"
     94TEST_FOLDER_BASE="/tmp/${TEST_NAME} 99/"  # Space in the name to test quoting.
     95{
     96  rm -rf "${TEST_FOLDER_BASE}" 2>/dev/null &&
     97    mkdir -m 0700 "${TEST_FOLDER_BASE}" 2>/dev/null
     98} || abort "Could not create test folder.\n"
    10599
    106100###############################################################################
     
    108102###############################################################################
    109103print_line "simple start-up test"
    110 create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
     104create_basic_configuration "${TEST_FOLDER_BASE}simple_start-up_test/"
    111105touch "${XORG_FOLDER}/xorg.conf.2"
    112106touch "${XORG_FOLDER}/xorg.conf.4"
     
    131125}
    132126
    133 ./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     127scripts/VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}conf" &
    134128PID=$!
    135129expect_exit "${PID}" 5 test_simple_start_up
    136 rm "${XORG_FOLDER}"/xorg.conf.*
    137130
    138131###############################################################################
    139132# No configuration files.                                                     #
    140133###############################################################################
     134create_basic_configuration "${TEST_FOLDER_BASE}no_configuration_files/"
    141135print_line "no configuration files"
    142136
     
    153147}
    154148
    155 ./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     149scripts/VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}conf" &
    156150PID=$!
    157151expect_exit "${PID}" 5 test_should_fail
     
    161155###############################################################################
    162156print_line "bad configuration files"
     157create_basic_configuration "${TEST_FOLDER_BASE}bad_configuration_files/"
    163158touch "${XORG_FOLDER}/xorg.conf.2"
    164159touch "${XORG_FOLDER}/xorg.conf.4"
    165160touch "${XORG_FOLDER}/xorg.conf.other"
    166 ./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     161scripts/VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}conf" &
    167162PID=$!
    168163expect_exit "${PID}" 5 test_should_fail
    169 rm "${XORG_FOLDER}/"xorg.conf.*
    170164
    171165###############################################################################
     
    174168
    175169# Set up a configuration file for a long-running command.
    176 create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
    177 cat >> "${TEST_FOLDER}/conf" << EOF
    178 HEADLESS_X_ORG_SERVER_COMMAND="\"${TEST_NAME_FULL}\" --test-sleep"
    179 EOF
    180 
    181 print_line "long running server command (sleeps)"
    182 touch "${XORG_FOLDER}/xorg.conf.1"
     170create_basic_configuration "${TEST_FOLDER_BASE}long-running_command/"
     171cat >> "${TEST_FOLDER}conf" << EOF
     172HEADLESS_X_ORG_SERVER_COMMAND="${TEST_FOLDER}command.sh"
     173EOF
     174
     175cat > "${TEST_FOLDER}command.sh" << EOF
     176#!/bin/sh
     177touch "${TEST_FOLDER}stopped"
     178touch "${TEST_FOLDER}started"
     179trap "touch \\"${TEST_FOLDER}stopped\\"; exit" TERM
     180rm "${TEST_FOLDER}stopped"
     181while true; do :; done
     182EOF
     183chmod a+x "${TEST_FOLDER}command.sh"
     184
     185print_line "long running server command"
    183186touch "${XORG_FOLDER}/xorg.conf.5"
    184187FAILURE=""
    185 ./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     188scripts/VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}conf" &
    186189PID="$!"
    187 STARTED=""
    188 for i in 1 2 3 4 5; do
    189   sleep 1  # Make sure it runs for at least one second.
    190   if ps -a -f | grep "${TEST_NAME}.*1" | grep -q -v grep &&
    191     ps -a -f | grep "${TEST_NAME}.*5" | grep -q -v grep; then
    192     STARTED="true"
    193     break
    194   fi
    195 done
    196 [ -n "${STARTED}" ] || FAILURE="\nFAILED to start servers.\n"
     190while [ ! -f "${TEST_FOLDER}started" ]; do :; done
     191while [ -f "${TEST_FOLDER}stopped" ]; do :; done
    197192[ -n "${PID}" ] && kill "${PID}" 2>/dev/null
    198 STOPPED=""
    199 if [ -z "${FAILURE}" ]; then
    200   for i in 1 2 3 4 5; do
    201     if ! ps -a -f | grep "${TEST_NAME}.*1" | grep -q -v grep &&
    202       ! ps -a -f | grep "${TEST_NAME}.*5" | grep -q -v grep; then
    203       STOPPED="true"
    204       break;
    205     fi
    206     sleep 1
    207   done
    208   [ -n "${STOPPED}" ] ||
    209     FAILURE="\nFAILED to stop servers.\n"  # To terminate or not to terminate?
     193while [ ! -f "${TEST_FOLDER}stopped" ]; do :; done
     194printf "SUCCESS.\n"
     195
     196###############################################################################
     197# Pre-requisite test.                                                         #
     198###############################################################################
     199
     200# Set up a configuration file with a pre-requisite.
     201create_basic_configuration "${TEST_FOLDER_BASE}pre-requisite/"
     202cat >> "${TEST_FOLDER}conf" << EOF
     203HEADLESS_X_ORG_WAIT_FOR_PREREQUISITES="false"
     204EOF
     205
     206print_line "configuration file with failed pre-requisite"
     207touch "${XORG_FOLDER}/xorg.conf.2"
     208touch "${XORG_FOLDER}/xorg.conf.4"
     209if scripts/VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}conf"; then
     210  echo "\nFAILED to stop for failed pre-requisite.\n"
     211else
     212  echo "SUCCESS"
    210213fi
    211 if [ -n "${FAILURE}" ]; then
    212   printf "${FAILURE}"
    213 else
    214   printf "SUCCESS.\n"
    215 fi
    216 rm "${XORG_FOLDER}/"xorg.conf.*
    217 
    218 ###############################################################################
    219 # Pre-requisite test.                                                         #
    220 ###############################################################################
    221 
    222 # Set up a configuration file with a pre-requisite.
    223 create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
    224 cat >> "${TEST_FOLDER}/conf" << EOF
    225 HEADLESS_X_ORG_CHECK_PREREQUISITES="[ -e \\"${TEST_FOLDER}/run/prereq\\" ]"
    226 EOF
    227 
    228 print_line "configuration file with pre-requisite (sleeps)"
    229 touch "${XORG_FOLDER}/xorg.conf.2"
    230 touch "${XORG_FOLDER}/xorg.conf.4"
    231 FAILURE=""
    232 ./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
    233 PID="$!"
    234 sleep 1
    235 ps -p "${PID}" > /dev/null 2>&1 || FAILURE="\nFAILED to wait for pre-requisite.\n"
    236 touch "${TEST_FOLDER}/run/prereq"
    237 if [ -z "${FAILURE}" ]; then
    238   expect_exit "${PID}" 10 test_simple_start_up
    239 else
    240   printf "${FAILURE}"
    241 fi
    242 rm -r "${XORG_FOLDER}"/xorg.conf.* "${TEST_FOLDER}/run"
    243214
    244215###############################################################################
     
    247218
    248219# Set up our pre-command test configuration file.
    249 create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
    250 
    251 cat >> "${TEST_FOLDER}/conf" << EOF
     220create_basic_configuration "${TEST_FOLDER_BASE}pre-command/"
     221
     222cat >> "${TEST_FOLDER}conf" << EOF
     223test_pre_command_server_pre_command()
     224{
     225  touch "${TEST_FOLDER}/run/pre"
     226}
    252227test_pre_command_server_command()
    253228{
    254229  cp "${TEST_FOLDER}/run/pre" "${TEST_FOLDER}/run/pre2"
    255230}
    256 HEADLESS_X_ORG_SERVER_PRE_COMMAND="touch \"${TEST_FOLDER}/run/pre\""
     231HEADLESS_X_ORG_SERVER_PRE_COMMAND="test_pre_command_server_pre_command"
    257232HEADLESS_X_ORG_SERVER_COMMAND="test_pre_command_server_command"
    258233EOF
     
    280255
    281256rm -f "${TEST_FOLDER}/run/pre"
    282 ./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     257scripts/VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}conf" &
    283258PID=$!
    284259expect_exit "${PID}" 5 test_pre_command
    285 rm -f "${XORG_FOLDER}"/xorg.conf.* "${TEST_FOLDER}"/run/pre*
    286260
    287261###############################################################################
     
    290264
    291265# Set up our post-command test configuration file.
    292 create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
    293 cat >> "${TEST_FOLDER}/conf" << EOF
     266create_basic_configuration "${TEST_FOLDER_BASE}post-command/"
     267cat >> "${TEST_FOLDER}conf" << EOF
    294268test_post_command_post_command()
    295269{
     
    322296
    323297rm -f "${TEST_FOLDER}/run/post"
    324 ./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     298scripts/VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}conf" &
    325299PID=$!
    326300expect_exit "${PID}" 5 test_post_command
    327 rm -f "${XORG_FOLDER}"/xorg.conf.* "${TEST_FOLDER}/run/post"
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette