VirtualBox

Ignore:
Timestamp:
Oct 22, 2012 4:18:03 PM (12 years ago)
Author:
vboxsync
Message:

Installer/linux: added support for pre-requisite test and pre-start command to HeadlessXOrg service script.

File:
1 edited

Legend:

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

    r43688 r43704  
    1414#
    1515
    16 [ x"$1" = x"--keep-temp" ] && KEEP_TEMP=true
    17 
    1816## The function definition at the start of every non-trivial shell script!
    1917abort()
     
    3432}
    3533
    36 ## Run a test in which VBoxHeadlessXOrg.sh is expected to complete within a
    37 # certain time and call a function if it does which should check whether the
    38 # test was successful and print status information.  The function takes the
    39 # exit status as its single parameter.
    40 run_expect_exit()
    41 {
    42   CONF_FILE="$1"      ## The configuration file.
     34## Expected a process to complete within a certain time and call a function if
     35# it does which should check whether the test was successful and print status
     36# information.  The function takes the exit status as its single parameter.
     37expect_exit()
     38{
     39  PID="$1"            ## The PID we are waiting for.
    4340  TIME_OUT="$2"       ## The time-out before we terminate the process.
    4441  TEST_FUNCTION="$3"  ## The function to call on exit to check the test result.
    45   ./VBoxHeadlessXOrg.sh -c "${CONF_FILE}" &
    46   PID=$!
     42
    4743  # Give it time to complete.
    4844  { sleep "${TIME_OUT}"; kill "${PID}" 2>/dev/null; } &
     
    5753    ${TEST_FUNCTION} "${STATUS}"
    5854esac
     55}
     56
     57## Create a simple configuration file.  Add items onto the end to override them
     58# on an item-by-item basis.
     59create_basic_configuration_file()
     60{
     61  FILE_NAME="$1"    ## The name of the configuration file to create.
     62  BASE_FOLDER="$2"  ## The basic folder for creating things under.
     63  cat > "${FILE_NAME}" << EOF
     64HEADLESS_X_ORG_CONFIGURATION_FOLDER="${BASE_FOLDER}/xorg"
     65HEADLESS_X_ORG_LOG_FOLDER="${BASE_FOLDER}/log"
     66HEADLESS_X_ORG_LOG_FILE="log"
     67HEADLESS_X_ORG_RUN_FOLDER="${BASE_FOLDER}/run"
     68HEADLESS_X_ORG_CHECK_PREREQUISITES=
     69HEADLESS_X_ORG_SERVER_PRE_COMMAND=
     70HEADLESS_X_ORG_SERVER_COMMAND="echo \\\${screen} \\\${conf_file} \\\${log_file}"
     71HEADLESS_X_ORG_SERVER_LOG_FILE_TEMPLATE="log.\\\${screen}"
     72EOF
     73
    5974}
    6075
     
    7691[ -d "${TEST_FOLDER}" ] || abort "Failed to create a temporary folder\n"
    7792# Clean up.  Small race here, but probably not important.
    78 [ -z "${KEEP_TEMP}" ] &&
    79   trap "rm -r \"${TEST_FOLDER}\" 2>/dev/null" EXIT HUP INT QUIT ABRT TERM
     93trap "rm -r \"${TEST_FOLDER}\" 2>/dev/null" EXIT HUP INT QUIT ABRT TERM
    8094# Server configuration folder.
    8195XORG_FOLDER="${TEST_FOLDER}/xorg"
    82 mkdir "${XORG_FOLDER}"
    83 
    84 # Set up our basic configuration file.
    85 cat > "${TEST_FOLDER}/conf" << EOF
    86 HEADLESS_X_ORG_CONFIGURATION_FOLDER="${XORG_FOLDER}"
    87 HEADLESS_X_ORG_LOG_FOLDER="${TEST_FOLDER}/log"
    88 HEADLESS_X_ORG_LOG_FILE="log"
    89 HEADLESS_X_ORG_SERVER_COMMAND="echo \\\${screen} \\\${conf_file} \\\${log_file}"
    90 HEADLESS_X_ORG_SERVER_LOG_FILE_TEMPLATE="log.\\\${screen}"
    91 EOF
     96mkdir -p "${XORG_FOLDER}"
    9297
    9398# Simple start-up test.
    9499print_line "simple start-up test"
    95 touch "${XORG_FOLDER}/xorg.conf.2"
    96 touch "${XORG_FOLDER}/xorg.conf.4"
     100create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
     101touch "${XORG_FOLDER}/xorg.conf.2"
     102touch "${XORG_FOLDER}/xorg.conf.4"
     103
    97104test_simple_start_up()
    98105{
     
    113120  esac
    114121}
    115 run_expect_exit "${TEST_FOLDER}/conf" 5 test_simple_start_up
     122
     123./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     124PID=$!
     125expect_exit "${PID}" 5 test_simple_start_up
    116126rm "${XORG_FOLDER}"/xorg.conf.*
    117127
    118128# No configuration files.
    119129print_line "no configuration files"
     130
    120131test_should_fail()
    121132{
     
    129140  esac
    130141}
    131 run_expect_exit "${TEST_FOLDER}/conf" 5 test_should_fail
     142
     143./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     144PID=$!
     145expect_exit "${PID}" 5 test_should_fail
    132146
    133147# Bad configuration files.
     
    136150touch "${XORG_FOLDER}/xorg.conf.4"
    137151touch "${XORG_FOLDER}/xorg.conf.other"
    138 run_expect_exit "${TEST_FOLDER}/conf" 5 test_should_fail
     152./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     153PID=$!
     154expect_exit "${PID}" 5 test_should_fail
    139155rm "${XORG_FOLDER}/"xorg.conf.*
    140156
    141157# Set up a configuration file for a long-running command.
    142 cat > "${TEST_FOLDER}/conf" << EOF
    143 HEADLESS_X_ORG_CONFIGURATION_FOLDER="${XORG_FOLDER}"
    144 HEADLESS_X_ORG_LOG_FOLDER="${TEST_FOLDER}/log"
    145 HEADLESS_X_ORG_LOG_FILE="log"
     158create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
     159cat >> "${TEST_FOLDER}/conf" << EOF
    146160HEADLESS_X_ORG_SERVER_COMMAND="echo $$ > ${TEST_FOLDER}/pid.\\\${screen}; cat"
    147 HEADLESS_X_ORG_SERVER_LOG_FILE_TEMPLATE="log.\\\${screen}"
    148161EOF
    149162
     
    173186rm "${XORG_FOLDER}/"xorg.conf.*
    174187rm -f "${TEST_FOLDER}/pid.1" "${TEST_FOLDER}/pid.5"
     188
     189# Set up a configuration file with a pre-requisite.
     190create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
     191cat >> "${TEST_FOLDER}/conf" << EOF
     192HEADLESS_X_ORG_CHECK_PREREQUISITES="[ -e \\"${TEST_FOLDER}/run/prereq\\" ]"
     193EOF
     194
     195# Pre-requisite test.
     196print_line "configuration file with pre-requisite (sleeps)"
     197touch "${XORG_FOLDER}/xorg.conf.2"
     198touch "${XORG_FOLDER}/xorg.conf.4"
     199FAILURE=""
     200./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     201PID="$!"
     202sleep 1
     203ps -p "${PID}" > /dev/null 2>&1 || FAILURE="\nFAILED to wait for pre-requisite.\n"
     204touch "${TEST_FOLDER}/run/prereq"
     205if [ -z "${FAILURE}" ]; then
     206  expect_exit "${PID}" 10 test_simple_start_up
     207else
     208  printf "${FAILURE}"
     209fi
     210rm -r "${XORG_FOLDER}"/xorg.conf.* "${TEST_FOLDER}/run"
     211
     212# Set up our pre-command test configuration file.
     213create_basic_configuration_file "${TEST_FOLDER}/conf" "${TEST_FOLDER}"
     214cat >> "${TEST_FOLDER}/conf" << EOF
     215HEADLESS_X_ORG_SERVER_PRE_COMMAND="touch \"${TEST_FOLDER}/run/pre\""
     216EOF
     217
     218# Pre-command test.
     219print_line "pre-command test"
     220touch "${XORG_FOLDER}/xorg.conf.2"
     221touch "${XORG_FOLDER}/xorg.conf.4"
     222
     223test_pre_command()
     224{
     225  STATUS="$1"
     226  case "${STATUS}" in
     227  0)
     228    LOG_FOLDER="${TEST_FOLDER}/log"
     229    LOG="${LOG_FOLDER}/log"
     230    if [ -e "${TEST_FOLDER}/run/pre" ]; then
     231      printf "SUCCESS.\n"
     232    else
     233      printf "\nFAILED: pre-command not executed.\n"
     234    fi
     235    ;;
     236  *)
     237    printf "\nFAILED: exit status ${STATUS}.\n"
     238  esac
     239}
     240
     241rm -f "${TEST_FOLDER}/run/pre"
     242./VBoxHeadlessXOrg.sh -c "${TEST_FOLDER}/conf" &
     243PID=$!
     244expect_exit "${PID}" 5 test_pre_command
     245rm -f "${XORG_FOLDER}"/xorg.conf.* "${TEST_FOLDER}/run/pre"
Note: See TracChangeset for help on using the changeset viewer.

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