2d8b79b2d4
- README.md for adding test servers - Bash script for running tests on remote servers - Extend test_runner.py to flash using esptool.py - Python3.4 support. README.md update
106 lines
2.9 KiB
Bash
Executable file
106 lines
2.9 KiB
Bash
Executable file
#!/bin/bash
|
|
#
|
|
# This script builds tests, deploys them on one of the available test
|
|
# servers and runs them. If deployment fails it will not return an error code.
|
|
# If tests fail the script will return an error code.
|
|
# It is done this way not to fail Travis build if one of the test servers is
|
|
# down.
|
|
|
|
# Test servers configuration
|
|
TEST_SERVERS[0]="IP=195.138.84.66;User=pi;Type=solo"
|
|
TEST_SERVERS[1]="IP=195.138.84.66;User=pi;Type=dual"
|
|
|
|
# It will be populated in 'build' function
|
|
FLASH_CMD=
|
|
|
|
# Function doesn't accept any arguments. It builds the tests,
|
|
# packages the binaries into the archive and populates FLASH_CMD variable.
|
|
function build {
|
|
echo "Building tests"
|
|
make -C ./tests clean
|
|
make -C ./tests -j8
|
|
FLASH_CMD=$(make -s -C ./tests print_flash_cmd)
|
|
|
|
# Now we need to pack all files that are included in the flash cmd
|
|
# so they can be transferred to the remote server and run there
|
|
# Also we need to prepare flash command:
|
|
# - remove firmware files path
|
|
# - remove serial port parameter
|
|
mkdir -p /tmp/firmware
|
|
rm -rf /tmp/firmware/*
|
|
params=($FLASH_CMD)
|
|
pushd ./tests
|
|
for param in "${params[@]}"
|
|
do
|
|
if [ -f ${param} ]
|
|
then
|
|
file_name=${param##*/}
|
|
cp ${param} /tmp/firmware/
|
|
FLASH_CMD=${FLASH_CMD/${param}/${file_name}}
|
|
fi
|
|
|
|
# Removing port parameter from the cmd string
|
|
if [[ "$param" == "-p" || "$param" == "--port" ]]
|
|
then
|
|
FLASH_CMD=${FLASH_CMD/${param}/}
|
|
next_port=true
|
|
else
|
|
# Removing port value from the cmd string
|
|
if [ "$next_port" ]
|
|
then
|
|
FLASH_CMD=${FLASH_CMD/${param} /}
|
|
unset next_port
|
|
fi
|
|
fi
|
|
done
|
|
cp test_runner.py /tmp/firmware/
|
|
tar -czf /tmp/tests.tar.gz -C /tmp/firmware .
|
|
popd
|
|
}
|
|
|
|
# $1 - Server IP
|
|
# $2 - Login user name
|
|
function deploy {
|
|
echo "Deploying tests, server IP=${1}"
|
|
scp /tmp/tests.tar.gz ${2}@${1}:/tmp/tests.tar.gz
|
|
ssh ${2}@${1} mkdir -p /tmp/eor_test
|
|
ssh ${2}@${1} rm -rf /tmp/eor_test/*
|
|
ssh ${2}@${1} tar -xzf /tmp/tests.tar.gz -C /tmp/eor_test
|
|
}
|
|
|
|
# $1 - Server IP
|
|
# $2 - Login user name
|
|
# $3 - Type "solo" or "dual"
|
|
function run_tests {
|
|
echo "Running tests, server IP=${1}, type=${3}"
|
|
echo "Flash cmd: ${FLASH_CMD}"
|
|
# Run test runner on the remote server
|
|
ssh ${2}@${1} "source ~/.profile; /tmp/eor_test/test_runner.py --type ${3} -f -c \"${FLASH_CMD}\""
|
|
}
|
|
|
|
# First step is to build a firmware
|
|
build
|
|
|
|
failed=0
|
|
|
|
for server in "${TEST_SERVERS[@]}"
|
|
do
|
|
params=(${server//;/ })
|
|
ip=${params[0]#IP=}
|
|
user=${params[1]#User=}
|
|
type=${params[2]#Type=}
|
|
|
|
deploy ${ip} ${user}
|
|
if [ "$?" -eq "0" ]
|
|
then
|
|
run_tests ${ip} ${user} ${type}
|
|
if [ "$?" -ne "0" ]
|
|
then
|
|
failed=$((failed+1))
|
|
fi
|
|
else
|
|
echo "Server ${ip} is not available"
|
|
fi
|
|
done
|
|
|
|
exit $failed
|