qemuimagetest: Add basic function check for gcc/g++/make command in target
Add one case for compile tools sanity test in target, including gcc/g++/make. Signed-off-by Jiajun Xu <jiajun.xu@intel.com>
This commit is contained in:
parent
bcf8853e45
commit
62caed8237
|
@ -0,0 +1,52 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Compiler Test Case for Sanity Test
|
||||||
|
# The case boot up the Qemu target with `poky-qemu qemuxxx`.
|
||||||
|
# Then check if gcc/g++/make command can work in target.
|
||||||
|
#
|
||||||
|
# Author: Jiajun Xu <jiajun.xu@intel.com>
|
||||||
|
#
|
||||||
|
# This file is licensed under the GNU General Public License,
|
||||||
|
# Version 2.
|
||||||
|
#
|
||||||
|
|
||||||
|
. $POKYBASE/scripts/qemuimage-testlib
|
||||||
|
|
||||||
|
TIMEOUT=360
|
||||||
|
RET=1
|
||||||
|
|
||||||
|
# Start qemu and check its network
|
||||||
|
Test_Create_Qemu ${TIMEOUT}
|
||||||
|
|
||||||
|
# If qemu network is up, check ssh service in qemu
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
Test_Info "Begin to Test SSH Service in Qemu"
|
||||||
|
Test_SSH_UP ${TARGET_IPADDR} ${TIMEOUT}
|
||||||
|
RET=$?
|
||||||
|
else
|
||||||
|
RET=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if gcc/g++/make can work in target
|
||||||
|
if [ $RET -eq 0 -a -f $TOOLS/compiler_test.sh ]; then
|
||||||
|
# Copy compiler_test.sh into target
|
||||||
|
Test_Target_Pre ${TARGET_IPADDR} $TOOLS/compiler_test.sh
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
# Run compiler_test.sh to check if gcc/g++/make can work in target
|
||||||
|
Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/compiler_test.sh"
|
||||||
|
RET=$?
|
||||||
|
else
|
||||||
|
RET=1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${RET} -eq 0 ]; then
|
||||||
|
Test_Info "Compiler Test PASS"
|
||||||
|
Test_Kill_Qemu
|
||||||
|
Test_Print_Result "compiler" 0
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
Test_Info "Compiler FAIL, Pls. check above error log"
|
||||||
|
Test_Kill_Qemu
|
||||||
|
Test_Print_Result "compiler" 1
|
||||||
|
exit 1
|
||||||
|
fi
|
|
@ -6,3 +6,4 @@ sanity shutdown
|
||||||
sanity zypper_help
|
sanity zypper_help
|
||||||
sanity zypper_search
|
sanity zypper_search
|
||||||
sanity rpm_query
|
sanity rpm_query
|
||||||
|
sanity compiler
|
||||||
|
|
|
@ -6,3 +6,4 @@ sanity shutdown
|
||||||
sanity zypper_help
|
sanity zypper_help
|
||||||
sanity zypper_search
|
sanity zypper_search
|
||||||
sanity rpm_query
|
sanity rpm_query
|
||||||
|
sanity compiler
|
||||||
|
|
|
@ -6,3 +6,4 @@ sanity shutdown
|
||||||
sanity zypper_help
|
sanity zypper_help
|
||||||
sanity zypper_search
|
sanity zypper_search
|
||||||
sanity rpm_query
|
sanity rpm_query
|
||||||
|
sanity compiler
|
||||||
|
|
|
@ -6,3 +6,4 @@ sanity shutdown
|
||||||
sanity zypper_help
|
sanity zypper_help
|
||||||
sanity zypper_search
|
sanity zypper_search
|
||||||
sanity rpm_query
|
sanity rpm_query
|
||||||
|
sanity compiler
|
||||||
|
|
|
@ -6,3 +6,4 @@ sanity shutdown
|
||||||
sanity zypper_help
|
sanity zypper_help
|
||||||
sanity zypper_search
|
sanity zypper_search
|
||||||
sanity rpm_query
|
sanity rpm_query
|
||||||
|
sanity compiler
|
||||||
|
|
|
@ -0,0 +1,137 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# compiler test script running in target
|
||||||
|
#
|
||||||
|
# Author: Jiajun Xu <jiajun.xu@intel.com>
|
||||||
|
#
|
||||||
|
# This file is licensed under the GNU General Public License,
|
||||||
|
# Version 2.
|
||||||
|
#
|
||||||
|
|
||||||
|
# Prepare test folder for compiler test
|
||||||
|
COMPILE_FOLDER="/opt/test/compile_test"
|
||||||
|
TEST_FILE="$COMPILE_FOLDER/compile_test.c"
|
||||||
|
EXECUTE_FILE="$COMPILE_FOLDER/compile_test"
|
||||||
|
TEST_MAKEFILE="$COMPILE_FOLDER/makefile"
|
||||||
|
TEST_LIST="gcc g++ make"
|
||||||
|
|
||||||
|
if [ ! -d $COMPILE_FOLDER ]; then
|
||||||
|
mkdir -p $COMPILE_FOLDER
|
||||||
|
fi
|
||||||
|
|
||||||
|
Target_Info()
|
||||||
|
{
|
||||||
|
echo -e "\tTARGET: $*"
|
||||||
|
}
|
||||||
|
|
||||||
|
Target_Err()
|
||||||
|
{
|
||||||
|
echo -e "\tTARGET: ##### Error Log #####"
|
||||||
|
$@
|
||||||
|
echo -e "\tTARGET: ##### End #####"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to generate a c test file for compiler testing
|
||||||
|
Gen_File()
|
||||||
|
{
|
||||||
|
temp=`mktemp`
|
||||||
|
|
||||||
|
# Generate c/c++ test file for compiler testing
|
||||||
|
echo "#include <stdio.h>" >> $temp
|
||||||
|
echo "#include <math.h>" >> $temp
|
||||||
|
echo "" >> $temp
|
||||||
|
echo "double" >> $temp
|
||||||
|
echo "convert(long long l)" >> $temp
|
||||||
|
echo "{" >> $temp
|
||||||
|
echo " return (double)l; // or double(l)" >> $temp
|
||||||
|
echo "}" >> $temp
|
||||||
|
echo "" >> $temp
|
||||||
|
echo "int" >> $temp
|
||||||
|
echo "main(int argc, char * argv[])" >> $temp
|
||||||
|
echo "{" >> $temp
|
||||||
|
echo " long long l = 10;" >> $temp
|
||||||
|
echo " double f;" >> $temp
|
||||||
|
echo "" >> $temp
|
||||||
|
echo " f = convert(l);" >> $temp
|
||||||
|
echo " printf(\"convert: %lld => %f\n\", l, f);" >> $temp
|
||||||
|
echo "" >> $temp
|
||||||
|
echo " f = 1234.67;" >> $temp
|
||||||
|
echo " printf(\"floorf(%f) = %f\n\", f, floorf(f));" >> $temp
|
||||||
|
echo " return 0;" >> $temp
|
||||||
|
echo "}" >> $temp
|
||||||
|
echo $temp
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to generate a makefile for compiler testing
|
||||||
|
Gen_Makefile()
|
||||||
|
{
|
||||||
|
temp=`mktemp`
|
||||||
|
basename=`basename $EXECUTE_FILE`
|
||||||
|
|
||||||
|
echo -e "$basename: $basename.o" >> $temp
|
||||||
|
echo -e "\tgcc -o $basename $basename.o -lm" >> $temp
|
||||||
|
echo -e "$basename.o: $basename.c" >> $temp
|
||||||
|
echo -e "\tgcc -c $basename.c" >> $temp
|
||||||
|
|
||||||
|
echo $temp
|
||||||
|
}
|
||||||
|
|
||||||
|
# Generate a c test file for compiler testing
|
||||||
|
test_file=`Gen_File`
|
||||||
|
|
||||||
|
MOVE=`which mv`
|
||||||
|
$MOVE $test_file $TEST_FILE
|
||||||
|
|
||||||
|
# Begin compiler test in target
|
||||||
|
for cmd in $TEST_LIST
|
||||||
|
do
|
||||||
|
which $cmd
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
Target_Info "No $cmd command found"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$cmd" == "make" ]; then
|
||||||
|
rm -rf $EXECUTE_FILE
|
||||||
|
|
||||||
|
# For makefile test, we need to generate a makefile and run with a c file
|
||||||
|
makefile=`Gen_Makefile`
|
||||||
|
$MOVE $makefile $TEST_MAKEFILE
|
||||||
|
|
||||||
|
cd `dirname $TEST_MAKEFILE`
|
||||||
|
make
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
Target_Info "$cmd running with error, Pls. check error in following"
|
||||||
|
Target_Err make
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
rm -rf $EXECUTE_FILE
|
||||||
|
|
||||||
|
# For gcc/g++, we compile a c test file and check the output
|
||||||
|
$cmd $TEST_FILE -o $EXECUTE_FILE -lm
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
Target_Info "$cmd running with error, Pls. check error in following"
|
||||||
|
Target_Err $cmd $TEST_FILE -o $EXECUTE_FILE -lm
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if the binary file generated by $cmd can work without error
|
||||||
|
if [ -f $EXECUTE_FILE ]; then
|
||||||
|
$EXECUTE_FILE
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
Target_Info "$EXECUTE_FILE running with error, Pls. check error in following"
|
||||||
|
Target_Err $EXECUTE_FILE
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
Target_Info "$cmd can work without problem in target"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
Target_Info "No executalbe file $EXECUTE_FILE found, Pls. check the error log"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
exit 0
|
Loading…
Reference in New Issue