run_hi_tests.sh #4

  • //
  • guest/
  • perforce_software/
  • helix-installer/
  • dev/
  • test/
  • run_hi_tests.sh
  • View
  • Commits
  • Open Download .zip Download (4 KB)
#!/bin/bash
#------------------------------------------------------------------------------

# Test Suite for Helix Installer
# Calls 'vagrant up' to call the Helix Installer on various OS's,
# and then inspects the installed SDP on each generated VM.

# Usage:
# cd <HelixInstallRoot>/test
### Review env.sh, source if desired, modify to change defaults.
# source ./env.sh
# ./run_hi_tests.sh 2>&1 | tee log.run_hi_tests

# Warning: Be prepared to enter password if 'vagrant up' goes interactive while
# doing 'sudo', as it might if you haven't used 'sudo' recently.

# Local Functions
function msg () { echo -e "$*"; }
function pass () { msg "PASS: ${1:-Unknown Passed Test}"; PassCount+=1; }
function fail () { msg "FAIL: ${1:-Unknown Failed Test}"; FailCount+=1; }
function skip () { msg "SKIP: ${1:-Unknown Skipped Test}"; SkipCount+=1; }
function errmsg () { msg "\\nError: ${1-Unknown Error}\\n"; ErrorCount+=1; }
function bail () { errmsg "${1-Unknown Error}"; exit "${2:-1}"; }

# Variables
declare Version="1.1.1"
declare VagrantCfg="helix_installer_test.json"
declare VagrantBootstrap="bootstrap-linux.sh"
declare -i HIFastMode=0
declare -i PassCount=0
declare -i FailCount=0
declare -i SkipCount=0
declare -i TestCount=0
declare -i ErrorCount=0
declare -i OverallExitStatus=0
declare -i FullTest=${HIT_FULL:-0}
declare HostList=${HIT_OS_LIST:-ALL}

# Main Program

msg "\\nStarted ${0##*/} v$Version at $(date)."

if [[ -r "$VagrantBootstrap" ]]; then
   if grep -Eq '^declare HelixInstallerArgs=.*-fast' "$VagrantBootstrap"; then
      msg "The Vagrant boostrap file uses Helix Installer fast mode.\\nP4Perl/P4Python tests will be skipped."
      HIFastMode=1
   else
      msg "The Vagrant boostrap file uses Helix Installer without -fast.\\nP4Perl/P4Python tests will be run."
      HIFastMode=0
   fi
else
   bail "Missing Vagrant bootsrap file: $VagrantBootstrap"
fi

if [[ "$FullTest" -eq 1 ]]; then
   msg "Calling 'vagrant destroy --force' to to blast VMs."
   vagrant destroy --force
   msg "Calling 'vagrant up' to initiate Helix Installer."
   vagrant up
else
   msg "Skipping 'vagrant up'."
fi

if [[ $HostList == "ALL" ]]; then
   HostList="$(grep :nodename "$VagrantCfg"|cut -d '"' -f 4)"
fi

msg "Operating systems: $HostList"

for host in $HostList; do
   # Test hosts are named 'helix-<os>'.  Allow a shorthand in env.sh of
   # specifying just the '<os>' name, e.g. centos7 or ubuntu16.
   [[ "$host" == "helix-"* ]] || host="helix-$host"
   msg "Host=$host"

   msg "Running: vagrant ssh $host -c 'sudo su - perforce -c \"p4 changes -t -m 3\"'"
   if vagrant ssh "$host" -c 'sudo su - perforce -c "p4 changes -t -m 3"'; then
      pass "Sample Depot is running on $host."
   else
      fail "Sample Depot is NOT running on $host."
   fi
   TestCount+=1

   if [[ "$HIFastMode" -eq 0 ]]; then
      msg "Running: vagrant ssh $host -c 'sudo su - perforce -c \"ls -l /p4/common/perl\"'"
      if vagrant ssh "$host" -c 'sudo su - perforce -c "ls -l /p4/common/perl"'; then
         pass "Perl built on $host."
      else
         fail "Perl DID NOT build on $host."
      fi
   else
      skip "Perl not checked due to '-fast' in $VagrantBootstrap."
   fi
   TestCount+=1

   msg "Running: vagrant ssh $host -c 'sudo su - perforce -c \"ls -l /p4/common/python\"'"
   if [[ "$HIFastMode" -eq 0 ]]; then
      if vagrant ssh "$host" -c 'sudo su - perforce -c "ls -l /p4/common/python"'; then
         pass "Python built on $host."
      else
         fail "Python DID NOT build on $host."
      fi
   else
      skip "Python not checked due to '-fast' in $VagrantBootstrap."
   fi
   TestCount+=1
done

msg "Summary:\\n   Tests Executed:\\t$TestCount\\n   Passed:\\t\\t$PassCount\\n   Skipped:\\t\\t$SkipCount\\n   Failed:\\t\\t$FailCount\\n   Test system errors:\\t$ErrorCount"

if [[ "$TestCount" -ge 0 && "$FailCount" -eq 0 && "$ErrorCount" -eq 0 ]]; then
   if [[ "$SkipCount" -eq 0 ]]; then
      msg "\\nSUCCESS:  All tests were executed, and all passed."
   else
      msg "\\nSUCCESS:  All tests passed ($SkipCount skipped)."
   fi
else
   msg "\\nFAIL:  At least one test failed (or none ran)."
   OverallExitStatus=1
fi

msg "That took $((SECONDS/3600)) hours $((SECONDS%3600/60)) minutes $((SECONDS%60)) seconds.\n"

exit "$OverallExitStatus"
# Change User Description Committed
#13 27288 C. Thomas Tyler Removed old Vagrant Test suite.
#12 27284 C. Thomas Tyler Added Docker test suite to displace Vagrant.
Initial version passes with options:
hits.sh -o centos7
#11 26784 C. Thomas Tyler reset_sdp.sh v3.17.0:

Made /hx* mount points configurable in settings.cfg, and
updated documentation accordingly.

Added support for configuring /hxmetadata1 and /hxmetadata2
with different values.

Added test coverage for changing /hxdepots from the default.

Enhanced test suite.

TEST FAIL NOTE: As of this change, tests are succeeding on all
platforms except CentOS 6. Failures are in the test suite
infrastructure, not related to this change.
#10 26556 C. Thomas Tyler Fixed issue with tests on SSL-enabled servers.

Fixed issue with running tests on multiple servers by refactoring the single
'vagrant up' call for all hosts to have a per-host call 'vagrant up <>'.
#9 26405 C. Thomas Tyler Automated logging.
#8 26025 C. Thomas Tyler Fixed test suite quoting bug.
#7 26021 C. Thomas Tyler Test suite enhancements to better test Configured mode with
settings.cfg.
#6 25890 C. Thomas Tyler Enhanced test suite to truly verify that P4Perl and P4Python
are usable.
#5 25820 C. Thomas Tyler Enhanced bootstrap test to call Heilx Installer with '-i' to
enable testing of scenarios involving newly added files.
#4 25755 C. Thomas Tyler Cosmetic output tweak.
#3 25754 C. Thomas Tyler Helix Installer test suite changes:

Added new test outcome 'SKIP' to supplement 'PASS'/'FAIL'.

Added logic to not bother running P4Perl/P4Python tests if '-fast'
is specified in the bootstrap script, as in that case we don't
expect those to have been installed.

Changed bootstrap method back to '-fast' for now.
#2 25722 C. Thomas Tyler Fixed host naming convention issue.
#1 25673 C. Thomas Tyler Added simple test driver and results analysis script.

Calls 'vagrant up' to call the Helix Installer on various OS's,
and then inspects the installed SDP generated VMs.