summaryrefslogtreecommitdiff
path: root/scripts/qemuimage-tests
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/qemuimage-tests')
-rwxr-xr-xscripts/qemuimage-tests/sanity/boot29
-rwxr-xr-xscripts/qemuimage-tests/sanity/compiler52
-rwxr-xr-xscripts/qemuimage-tests/sanity/connman52
-rwxr-xr-xscripts/qemuimage-tests/sanity/dmesg52
-rwxr-xr-xscripts/qemuimage-tests/sanity/rpm_query52
-rwxr-xr-xscripts/qemuimage-tests/sanity/scp71
-rwxr-xr-xscripts/qemuimage-tests/sanity/shutdown76
-rwxr-xr-xscripts/qemuimage-tests/sanity/ssh39
-rwxr-xr-xscripts/qemuimage-tests/sanity/zypper_help52
-rwxr-xr-xscripts/qemuimage-tests/sanity/zypper_search52
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/core-image-lsb7
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/core-image-minimal1
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/core-image-sato8
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/core-image-sato-sdk9
-rw-r--r--scripts/qemuimage-tests/scenario/qemuarm/meta-toolchain-gmae3
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/core-image-lsb7
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/core-image-minimal1
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/core-image-sato8
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/core-image-sato-sdk9
-rw-r--r--scripts/qemuimage-tests/scenario/qemumips/meta-toolchain-gmae3
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/core-image-lsb7
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/core-image-minimal1
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/core-image-sato8
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/core-image-sato-sdk9
-rw-r--r--scripts/qemuimage-tests/scenario/qemuppc/meta-toolchain-gmae3
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/core-image-lsb7
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/core-image-minimal1
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato8
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato-sdk9
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86-64/meta-toolchain-gmae3
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/core-image-lsb7
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/core-image-minimal1
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/core-image-sato8
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/core-image-sato-sdk9
-rw-r--r--scripts/qemuimage-tests/scenario/qemux86/meta-toolchain-gmae3
-rwxr-xr-xscripts/qemuimage-tests/toolchain/cvs31
-rwxr-xr-xscripts/qemuimage-tests/toolchain/iptables31
-rwxr-xr-xscripts/qemuimage-tests/toolchain/sudoku-savant31
-rw-r--r--scripts/qemuimage-tests/tools/compiler_test.sh137
-rw-r--r--scripts/qemuimage-tests/tools/connman_test.sh75
-rw-r--r--scripts/qemuimage-tests/tools/dmesg.sh26
-rw-r--r--scripts/qemuimage-tests/tools/rpm_test.sh45
-rw-r--r--scripts/qemuimage-tests/tools/zypper_test.sh45
43 files changed, 1088 insertions, 0 deletions
diff --git a/scripts/qemuimage-tests/sanity/boot b/scripts/qemuimage-tests/sanity/boot
new file mode 100755
index 000000000..cf8aafbc5
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/boot
@@ -0,0 +1,29 @@
+#!/bin/bash
+#
+# Boot Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if qemu and qemu network is up.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=120
+
+# Start qemu and check its network
+Test_Create_Qemu ${TIMEOUT}
+
+if [ $? -eq 0 ]; then
+ Test_Info "Boot Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "Boot" 0
+ exit 0
+else
+ Test_Info "Boot Test FAIL"
+ Test_Kill_Qemu
+ Test_Print_Result "Boot" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/compiler b/scripts/qemuimage-tests/sanity/compiler
new file mode 100755
index 000000000..ef0700732
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/compiler
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Compiler Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu 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.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+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
diff --git a/scripts/qemuimage-tests/sanity/connman b/scripts/qemuimage-tests/sanity/connman
new file mode 100755
index 000000000..0c62902f8
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/connman
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Conmman Check Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if connman can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+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 connman can work in target
+if [ $RET -eq 0 -a -f $TOOLS/connman_test.sh ]; then
+ # Copy connman_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/connman_test.sh
+ if [ $? -eq 0 ]; then
+ # Run connman_test.sh to check if connman can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/connman_test.sh"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "Connman Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "connman" 0
+ exit 0
+else
+ Test_Info "Connman Test FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "connman" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/dmesg b/scripts/qemuimage-tests/sanity/dmesg
new file mode 100755
index 000000000..aed29e05e
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/dmesg
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Dmesg Check Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if there is any error log in dmesg.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+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 there is any error log in dmesg
+if [ $RET -eq 0 -a -f $TOOLS/dmesg.sh ]; then
+ # Copy dmesg.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/dmesg.sh
+ if [ $? -eq 0 ]; then
+ # Run dmesg.sh to check if there is any error message with command dmesg
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/dmesg.sh"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "Dmesg Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "dmesg" 0
+ exit 0
+else
+ Test_Info "Dmesg Test FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "dmesg" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/rpm_query b/scripts/qemuimage-tests/sanity/rpm_query
new file mode 100755
index 000000000..dd652bd99
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/rpm_query
@@ -0,0 +1,52 @@
+#!/bin/bash
+# RPM Check Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if rpm command can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+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 rpm query can work in target
+if [ $RET -eq 0 -a -f $TOOLS/rpm_test.sh ]; then
+ # Copy rpm_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/rpm_test.sh
+ if [ $? -eq 0 ]; then
+ # Run rpm_test.sh to check if rpm query can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/rpm_test.sh -qa"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "rpm query Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "rpm_query" 0
+ exit 0
+else
+ Test_Info "rpm query FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "rpm_query" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/scp b/scripts/qemuimage-tests/sanity/scp
new file mode 100755
index 000000000..b0b693d0c
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/scp
@@ -0,0 +1,71 @@
+#!/bin/bash
+# SCP Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if file can be copied into target with scp command.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+RET=1
+SPID=0
+i=0
+
+# 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 file can be copied from host into target
+# For qemu target, the file is 5M
+if [ $RET -eq 0 ]; then
+ echo $QEMUARCH | grep -q "qemu"
+
+ if [ $? -eq 0 ]; then
+ dd if=/dev/zero of=${TEST_TMP}/scp_test_file bs=512k count=10
+ Test_SCP ${TARGET_IPADDR} ${TEST_TMP}/scp_test_file /home/root &
+ SPID=$!
+ fi
+
+ # Check if scp finished or not
+ while [ $i -lt $TIMEOUT ]
+ do
+ ps -fp $SPID > /dev/null
+ if [ $? -ne 0 ]; then
+ RET=0
+ break
+ fi
+ i=$((i+5))
+ sleep 5
+ done
+
+ # Kill scp process if scp is not finished in time
+ if [ $i -ge $TIMEOUT ]; then
+ RET=1
+ kill $SPID
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "SCP Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "SCP" 0
+ exit 0
+else
+ Test_Info "SCP Test FAIL"
+ Test_Kill_Qemu
+ Test_Print_Result "SCP" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/shutdown b/scripts/qemuimage-tests/sanity/shutdown
new file mode 100755
index 000000000..d55c85941
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/shutdown
@@ -0,0 +1,76 @@
+#!/bin/bash
+# Shutdown Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if target can shutdown
+# For qemux86/x86-64, we use command "poweroff" for target shutdown
+# For non-x86 targets, we use command "reboot" for target shutdown
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+
+RET=1
+i=0
+
+# 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 target can shutdown
+if [ $RET -eq 0 ]; then
+ echo $QEMUARCH | grep -q "qemux86"
+
+ # For qemux86/x86-64, command "poweroff" is used
+ # For non x86 qemu targets, command "reboot" is used because of BUG #100
+ if [ $? -eq 0 ]; then
+ Test_SSH ${TARGET_IPADDR} "/sbin/poweroff"
+ else
+ Test_SSH ${TARGET_IPADDR} "/sbin/reboot"
+ fi
+
+ # If qemu start up process ends up, it means shutdown completes
+ while [ $i -lt $TIMEOUT ]
+ do
+ ps -fp $PID > /dev/null
+ if [ $? -ne 0 ]; then
+ RET=0
+ break
+ fi
+ i=$((i+5))
+ sleep 5
+ done
+
+ if [ $i -ge $TIMEOUT ]; then
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "Shutdown Test PASS"
+ Test_Print_Result "shutdown" 0
+
+ # Remove TARGET_IPSAVE since no existing qemu running now
+ if [ -e ${TARGET_IPSAVE} ]; then
+ rm -rf ${TARGET_IPSAVE}
+ fi
+ exit 0
+else
+ Test_Info "Shutdown Test FAIL"
+ Test_Kill_Qemu
+ Test_Print_Result "shutdown" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/ssh b/scripts/qemuimage-tests/sanity/ssh
new file mode 100755
index 000000000..181296b0b
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/ssh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# SSH Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if ssh service in qemu is up.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+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
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "SSH Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "SSH" 0
+ exit 0
+else
+ Test_Info "SSH Test FAIL"
+ Test_Kill_Qemu
+ Test_Print_Result "SSH" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/zypper_help b/scripts/qemuimage-tests/sanity/zypper_help
new file mode 100755
index 000000000..94f82c434
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/zypper_help
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Zypper Check Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if zypper command can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+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 zypper help can work in target
+if [ $RET -eq 0 -a -f $TOOLS/zypper_test.sh ]; then
+ # Copy zypper_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/zypper_test.sh
+ if [ $? -eq 0 ]; then
+ # Run zypper_test.sh to check if zypper help can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/zypper_test.sh help"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "zypper help Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_help" 0
+ exit 0
+else
+ Test_Info "zypper help FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_help" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/sanity/zypper_search b/scripts/qemuimage-tests/sanity/zypper_search
new file mode 100755
index 000000000..e687eadfb
--- /dev/null
+++ b/scripts/qemuimage-tests/sanity/zypper_search
@@ -0,0 +1,52 @@
+#!/bin/bash
+# Zypper Check Test Case for Sanity Test
+# The case boot up the Qemu target with `runqemu qemuxxx`.
+# Then check if zypper command can work in target.
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=400
+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 zypper search can work in target
+if [ $RET -eq 0 -a -f $TOOLS/zypper_test.sh ]; then
+ # Copy zypper_test.sh into target
+ Test_Target_Pre ${TARGET_IPADDR} $TOOLS/zypper_test.sh
+ if [ $? -eq 0 ]; then
+ # Run zypper_test.sh to check if zypper search can work in target
+ Test_SSH ${TARGET_IPADDR} "sh $TARGET_TEST_DIR/zypper_test.sh search avahi"
+ RET=$?
+ else
+ RET=1
+ fi
+fi
+
+if [ ${RET} -eq 0 ]; then
+ Test_Info "zypper search package avahi Test PASS"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_search" 0
+ exit 0
+else
+ Test_Info "zypper search package avahi FAIL, Pls. check above error log"
+ Test_Kill_Qemu
+ Test_Print_Result "zypper_search" 1
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/core-image-lsb b/scripts/qemuimage-tests/scenario/qemuarm/core-image-lsb
new file mode 100644
index 000000000..4fa606876
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuarm/core-image-lsb
@@ -0,0 +1,7 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/core-image-minimal b/scripts/qemuimage-tests/scenario/qemuarm/core-image-minimal
new file mode 100644
index 000000000..0fcc7bba8
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuarm/core-image-minimal
@@ -0,0 +1 @@
+sanity boot
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/core-image-sato b/scripts/qemuimage-tests/scenario/qemuarm/core-image-sato
new file mode 100644
index 000000000..7a6353e1a
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuarm/core-image-sato
@@ -0,0 +1,8 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/core-image-sato-sdk b/scripts/qemuimage-tests/scenario/qemuarm/core-image-sato-sdk
new file mode 100644
index 000000000..42b8e1902
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuarm/core-image-sato-sdk
@@ -0,0 +1,9 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuarm/meta-toolchain-gmae b/scripts/qemuimage-tests/scenario/qemuarm/meta-toolchain-gmae
new file mode 100644
index 000000000..199176efc
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuarm/meta-toolchain-gmae
@@ -0,0 +1,3 @@
+toolchain cvs
+toolchain iptables
+toolchain sudoku-savant
diff --git a/scripts/qemuimage-tests/scenario/qemumips/core-image-lsb b/scripts/qemuimage-tests/scenario/qemumips/core-image-lsb
new file mode 100644
index 000000000..4fa606876
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemumips/core-image-lsb
@@ -0,0 +1,7 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemumips/core-image-minimal b/scripts/qemuimage-tests/scenario/qemumips/core-image-minimal
new file mode 100644
index 000000000..0fcc7bba8
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemumips/core-image-minimal
@@ -0,0 +1 @@
+sanity boot
diff --git a/scripts/qemuimage-tests/scenario/qemumips/core-image-sato b/scripts/qemuimage-tests/scenario/qemumips/core-image-sato
new file mode 100644
index 000000000..7a6353e1a
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemumips/core-image-sato
@@ -0,0 +1,8 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemumips/core-image-sato-sdk b/scripts/qemuimage-tests/scenario/qemumips/core-image-sato-sdk
new file mode 100644
index 000000000..42b8e1902
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemumips/core-image-sato-sdk
@@ -0,0 +1,9 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemumips/meta-toolchain-gmae b/scripts/qemuimage-tests/scenario/qemumips/meta-toolchain-gmae
new file mode 100644
index 000000000..199176efc
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemumips/meta-toolchain-gmae
@@ -0,0 +1,3 @@
+toolchain cvs
+toolchain iptables
+toolchain sudoku-savant
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/core-image-lsb b/scripts/qemuimage-tests/scenario/qemuppc/core-image-lsb
new file mode 100644
index 000000000..4fa606876
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuppc/core-image-lsb
@@ -0,0 +1,7 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/core-image-minimal b/scripts/qemuimage-tests/scenario/qemuppc/core-image-minimal
new file mode 100644
index 000000000..0fcc7bba8
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuppc/core-image-minimal
@@ -0,0 +1 @@
+sanity boot
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/core-image-sato b/scripts/qemuimage-tests/scenario/qemuppc/core-image-sato
new file mode 100644
index 000000000..7a6353e1a
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuppc/core-image-sato
@@ -0,0 +1,8 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/core-image-sato-sdk b/scripts/qemuimage-tests/scenario/qemuppc/core-image-sato-sdk
new file mode 100644
index 000000000..42b8e1902
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuppc/core-image-sato-sdk
@@ -0,0 +1,9 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemuppc/meta-toolchain-gmae b/scripts/qemuimage-tests/scenario/qemuppc/meta-toolchain-gmae
new file mode 100644
index 000000000..199176efc
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemuppc/meta-toolchain-gmae
@@ -0,0 +1,3 @@
+toolchain cvs
+toolchain iptables
+toolchain sudoku-savant
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/core-image-lsb b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-lsb
new file mode 100644
index 000000000..4fa606876
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-lsb
@@ -0,0 +1,7 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/core-image-minimal b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-minimal
new file mode 100644
index 000000000..0fcc7bba8
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-minimal
@@ -0,0 +1 @@
+sanity boot
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato
new file mode 100644
index 000000000..7a6353e1a
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato
@@ -0,0 +1,8 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato-sdk b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato-sdk
new file mode 100644
index 000000000..42b8e1902
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/core-image-sato-sdk
@@ -0,0 +1,9 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86-64/meta-toolchain-gmae b/scripts/qemuimage-tests/scenario/qemux86-64/meta-toolchain-gmae
new file mode 100644
index 000000000..199176efc
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86-64/meta-toolchain-gmae
@@ -0,0 +1,3 @@
+toolchain cvs
+toolchain iptables
+toolchain sudoku-savant
diff --git a/scripts/qemuimage-tests/scenario/qemux86/core-image-lsb b/scripts/qemuimage-tests/scenario/qemux86/core-image-lsb
new file mode 100644
index 000000000..4fa606876
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86/core-image-lsb
@@ -0,0 +1,7 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86/core-image-minimal b/scripts/qemuimage-tests/scenario/qemux86/core-image-minimal
new file mode 100644
index 000000000..0fcc7bba8
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86/core-image-minimal
@@ -0,0 +1 @@
+sanity boot
diff --git a/scripts/qemuimage-tests/scenario/qemux86/core-image-sato b/scripts/qemuimage-tests/scenario/qemux86/core-image-sato
new file mode 100644
index 000000000..7a6353e1a
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86/core-image-sato
@@ -0,0 +1,8 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86/core-image-sato-sdk b/scripts/qemuimage-tests/scenario/qemux86/core-image-sato-sdk
new file mode 100644
index 000000000..42b8e1902
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86/core-image-sato-sdk
@@ -0,0 +1,9 @@
+sanity ssh
+sanity scp
+sanity dmesg
+sanity zypper_help
+sanity zypper_search
+sanity rpm_query
+sanity compiler
+sanity connman
+sanity shutdown
diff --git a/scripts/qemuimage-tests/scenario/qemux86/meta-toolchain-gmae b/scripts/qemuimage-tests/scenario/qemux86/meta-toolchain-gmae
new file mode 100644
index 000000000..199176efc
--- /dev/null
+++ b/scripts/qemuimage-tests/scenario/qemux86/meta-toolchain-gmae
@@ -0,0 +1,3 @@
+toolchain cvs
+toolchain iptables
+toolchain sudoku-savant
diff --git a/scripts/qemuimage-tests/toolchain/cvs b/scripts/qemuimage-tests/toolchain/cvs
new file mode 100755
index 000000000..871d99110
--- /dev/null
+++ b/scripts/qemuimage-tests/toolchain/cvs
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# CVS compile Test for toolchain test
+# The case extract toolchain tarball into temp folder
+# Then compile CVS with the toolchain environment
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=120
+
+# Extract and test toolchain tarball
+Test_Toolchain cvs ${TIMEOUT}
+
+if [ $? -eq 0 ]; then
+ Test_Info "CVS Test PASS"
+ Test_Print_Result "CVS" 0
+ exit 0
+elif [ $? -eq 1 ]; then
+ Test_Info "CVS Test FAIL"
+ Test_Print_Result "CVS" 1
+ exit 1
+else
+ Test_Info "Skip CVS Test due to some configuration problem"
+ Test_Print_Result "CVS" 2
+ exit 2
+fi
diff --git a/scripts/qemuimage-tests/toolchain/iptables b/scripts/qemuimage-tests/toolchain/iptables
new file mode 100755
index 000000000..af89bbe7b
--- /dev/null
+++ b/scripts/qemuimage-tests/toolchain/iptables
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# iptables compile Test for toolchain test
+# The case extract toolchain tarball into temp folder
+# Then compile iptables with the toolchain environment
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=120
+
+# Extract and test toolchain tarball
+Test_Toolchain iptables ${TIMEOUT}
+
+if [ $? -eq 0 ]; then
+ Test_Info "iptables Test PASS"
+ Test_Print_Result "iptables" 0
+ exit 0
+elif [ $? -eq 1 ]; then
+ Test_Info "iptables Test FAIL"
+ Test_Print_Result "iptables" 1
+ exit 1
+else
+ Test_Info "Skip iptables Test due to some configuration problem"
+ Test_Print_Result "iptables" 2
+ exit 2
+fi
diff --git a/scripts/qemuimage-tests/toolchain/sudoku-savant b/scripts/qemuimage-tests/toolchain/sudoku-savant
new file mode 100755
index 000000000..3d149dea2
--- /dev/null
+++ b/scripts/qemuimage-tests/toolchain/sudoku-savant
@@ -0,0 +1,31 @@
+#!/bin/bash
+#
+# sudoku-savant compile Test for toolchain test
+# The case extract toolchain tarball into temp folder
+# Then compile sudoku-savant with the toolchain environment
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+. $COREBASE/scripts/qemuimage-testlib
+
+TIMEOUT=240
+
+# Extract and test toolchain tarball
+Test_Toolchain sudoku-savant ${TIMEOUT}
+
+if [ $? -eq 0 ]; then
+ Test_Info "sudoku-savant Test PASS"
+ Test_Print_Result "sudoku-savant" 0
+ exit 0
+elif [ $? -eq 1 ]; then
+ Test_Info "sudoku-savant Test FAIL"
+ Test_Print_Result "sudoku-savant" 1
+ exit 1
+else
+ Test_Info "Skip sudoku-savant Test due to some configuration problem"
+ Test_Print_Result "sudoku-savant" 2
+ exit 2
+fi
diff --git a/scripts/qemuimage-tests/tools/compiler_test.sh b/scripts/qemuimage-tests/tools/compiler_test.sh
new file mode 100644
index 000000000..9c30d6d78
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/compiler_test.sh
@@ -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
diff --git a/scripts/qemuimage-tests/tools/connman_test.sh b/scripts/qemuimage-tests/tools/connman_test.sh
new file mode 100644
index 000000000..8ed8b8b4a
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/connman_test.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+# connman test script running in target
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+Target_Info()
+{
+ echo -e "\tTARGET: $*"
+}
+
+Target_Err()
+{
+ echo -e "\tTARGET: connman has issue when running, Pls. check the error log"
+ echo -e "\tTARGET: ##### Error Log #####"
+ $1
+ echo -e "\tTARGET: ##### End #####"
+}
+
+# Check if ps comes from Procps or busybox first
+ls -l `which ps` | grep -q "busybox"
+RET=$?
+
+if [ $RET -eq 0 ]; then
+ PS="ps"
+else
+ PS="ps -ef"
+fi
+
+# Check if connmand is in target
+if [ ! -f /usr/sbin/connmand ]; then
+ Target_Info "No connmand command found"
+ exit 1
+fi
+
+# Check if connmand is running in background
+if [ $RET -eq 0 ]; then
+ count=`ps | awk '{print $5}' | grep -c connmand`
+else
+ count=`ps -eo comm | cut -d " " -f 1 | grep -c connmand`
+fi
+
+if [ $count -ne 1 ]; then
+ Target_Info "connmand has issue when running in background, Pls, check the output of ps"
+ ${PS} | grep connmand
+ exit 1
+fi
+
+# Check if there is always only one connmand running in background
+if [ connmand > /dev/null 2>&1 ]; then
+ Target_Info "connmand command run without problem"
+
+ if [ $RET -eq 0 ]; then
+ count=`ps | awk '{print $5}' | grep -c connmand`
+ else
+ count=`ps -eo comm | cut -d " " -f 1 | grep -c connmand`
+ fi
+
+ if [ $count -ne 1 ]; then
+ Target_Info "There are more than one connmand running in background, Pls, check the output of ps"
+ ${PS} | grep connmand
+ exit 1
+ else
+ Target_Info "There is always one connmand running in background, test pass"
+ exit 0
+ fi
+else
+ Target_Err connmand
+ exit 1
+fi
+
+exit 0
diff --git a/scripts/qemuimage-tests/tools/dmesg.sh b/scripts/qemuimage-tests/tools/dmesg.sh
new file mode 100644
index 000000000..66c022343
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/dmesg.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+# Dmesg test script running in QEMU
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+which dmesg
+if [ $? -ne 0 ]; then
+ echo "QEMU: No dmesg command found"
+ exit 1
+fi
+
+dmesg | grep -iq "error"
+if [ $? -eq 0 ]; then
+ echo "QEMU: There is some error log in dmesg:"
+ echo "QEMU: ##### Error Log ######"
+ dmesg | grep -i "error"
+ echo "QEMU: ##### End ######"
+ exit 1
+else
+ echo "QEMU: No error log in dmesg"
+ exit 0
+fi
diff --git a/scripts/qemuimage-tests/tools/rpm_test.sh b/scripts/qemuimage-tests/tools/rpm_test.sh
new file mode 100644
index 000000000..6e6f9112c
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/rpm_test.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# rpm test script running in target
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+Target_Info()
+{
+ echo -e "\tTARGET: $*"
+}
+
+Target_Err()
+{
+ echo -e "\tTARGET: rpm command has issue when running, Pls. check the error log"
+ echo -e "\tTARGET: ##### Error Log #####"
+ $1
+ echo -e "\tTARGET: ##### End #####"
+}
+
+which rpm
+if [ $? -ne 0 ]; then
+ Target_Info "No rpm command found"
+ exit 1
+fi
+
+if [ rpm > /dev/null 2>&1 ]; then
+ Target_Info "rpm command run without problem"
+else
+ Target_Err rpm
+ exit 1
+fi
+
+# run rpm with specific command parsed to rpm_test.sh
+rpm $* > /dev/null 2>&1
+
+if [ $? -eq 0 ]; then
+ Target_Info "rpm $* work without problem"
+ exit 0
+else
+ Target_Err rpm $*
+ exit 1
+fi
diff --git a/scripts/qemuimage-tests/tools/zypper_test.sh b/scripts/qemuimage-tests/tools/zypper_test.sh
new file mode 100644
index 000000000..5e8e7aaac
--- /dev/null
+++ b/scripts/qemuimage-tests/tools/zypper_test.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+# zypper test script running in target
+#
+# Author: Jiajun Xu <jiajun.xu@intel.com>
+#
+# This file is licensed under the GNU General Public License,
+# Version 2.
+#
+
+Target_Info()
+{
+ echo -e "\tTARGET: $*"
+}
+
+Target_Err()
+{
+ echo -e "\tTARGET: zypper command has issue when running, Pls. check the error log"
+ echo -e "\tTARGET: ##### Error Log #####"
+ $1
+ echo -e "\tTARGET: ##### End #####"
+}
+
+which zypper
+if [ $? -ne 0 ]; then
+ Target_Info "No zypper command found"
+ exit 1
+fi
+
+if [ zypper > /dev/null 2>&1 ]; then
+ Target_Info "zypper command run without problem"
+else
+ Target_Err zypper
+ exit 1
+fi
+
+# run zypper with specific command parsed to zypper_test.sh
+zypper $* > /dev/null 2>&1
+
+if [ $? -eq 0 ]; then
+ Target_Info "zypper $* work without problem"
+ exit 0
+else
+ Target_Err zypper $*
+ exit 1
+fi