Skip to content

Commit

Permalink
Adding script to execute sonic-framework/tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Bibhuprasad Singh committed Feb 5, 2025
1 parent 14eb980 commit 3687fee
Show file tree
Hide file tree
Showing 4 changed files with 356 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/sonic-framework/tests/test_scripts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Steps to run tests_script.sh

1. Build the workspace, incase the workspace is not built using following commands.

cd /sonic-buildiamge

make init

NOJESSIE=1 NOSTRETCH=1 NOBUSTER=1 NOBULLSEYE=1 SONIC_BUILD_JOBS=12 make configure PLATFORM=vs

NOJESSIE=1 NOSTRETCH=1 NOBUSTER=1 NOBULLSEYE=1 SONIC_BUILD_JOBS=12 make target/sonic-vs.img.gz


2. Create a virtual environment using following steps.

Run create_virtualenv.sh script to create a virtual environment.

sh create_virtualenv.sh ./


3. Run test_script.sh inside the virtual envirment to execute the UT test cases

sh test_script.sh ./

17 changes: 17 additions & 0 deletions src/sonic-framework/tests/test_scripts/create_virtualenv.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#!/bin/bash

# read virtual environment name
read -p "Enter the name of the virtual environment: " venv

# Install virtual env
sudo apt-get install python3-pip

sudo apt-get install virtualenv

# Create a virtual environment
virtualenv $venv
echo
echo
echo "To activate the virtualenv, run:"

echo " source $venv/bin/activate"
97 changes: 97 additions & 0 deletions src/sonic-framework/tests/test_scripts/database_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{
"INSTANCES": {
"redis": {
"hostname": "127.0.0.1",
"port": 6379,
"unix_socket_path": "/var/run/redis/redis.sock"
},
"redis_chassis": {
"hostname": "redis_chassis.server",
"port": 6380,
"unix_socket_path": "/var/run/redis/redis_chassis.sock"
}
},
"DATABASES": {
"APPL_DB": {
"id": 0,
"separator": ":",
"instance": "redis"
},
"ASIC_DB": {
"id": 1,
"separator": ":",
"instance": "redis"
},
"COUNTERS_DB": {
"id": 2,
"separator": ":",
"instance": "redis"
},
"LOGLEVEL_DB": {
"id": 3,
"separator": ":",
"instance": "redis"
},
"CONFIG_DB": {
"id": 4,
"separator": "|",
"instance": "redis"
},
"PFC_WD_DB": {
"id": 5,
"separator": ":",
"instance": "redis"
},
"FLEX_COUNTER_DB": {
"id": 5,
"separator": ":",
"instance": "redis"
},
"STATE_DB": {
"id": 6,
"separator": "|",
"instance": "redis"
},
"SNMP_OVERLAY_DB": {
"id": 7,
"separator": "|",
"instance": "redis"
},
"RESTAPI_DB": {
"id": 8,
"separator": "|",
"instance": "redis"
},
"GB_ASIC_DB": {
"id": 9,
"separator": ":",
"instance": "redis"
},
"GB_COUNTERS_DB": {
"id": 10,
"separator": ":",
"instance": "redis"
},
"GB_FLEX_COUNTER_DB": {
"id": 11,
"separator": ":",
"instance": "redis"
},
"CHASSIS_APP_DB": {
"id": 12,
"separator": "|",
"instance": "redis_chassis"
},
"CHASSIS_STATE_DB": {
"id": 13,
"separator": "|",
"instance": "redis_chassis"
},
"APPL_STATE_DB": {
"id": 14,
"separator": ":",
"instance": "redis"
}
},
"VERSION": "1.0"
}
218 changes: 218 additions & 0 deletions src/sonic-framework/tests/test_scripts/tests_script.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,218 @@
#!/bin/bash

# All the following steps need to be executed inside virtual Environment.
# From /sonic-buildimage path.
#
# Getting the absolute path for script and sonic-buildimage.
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
cd $SCRIPT_DIR/../../../..
BUILD_DIR="$(pwd)"

# Creating a temp directory and
# Downloading required libhiredis packages to the temp directory.
TMP_DIR=$(mktemp -d)
cd "$TMP_DIR" || exit 1

if curl -O https://ftp.debian.org/debian/pool/main/h/hiredis/libhiredis0.14_0.14.1-3_amd64.deb
then echo "Download Request for libhiredis0.14_0.14.1-3_amd64.deb was successful"
else echo "CURL Request for libhiredis0.14_0.14.1-3_amd64.deb failed !"
exit 1
fi

if curl -O https://ftp.debian.org/debian/pool/main/h/hiredis/libhiredis-dev_0.14.1-3_amd64.deb
then echo "Download Request for libhiredis-dev_0.14.1-3_amd64.deb was successful"
else echo "CURL Request for libhiredis-dev_0.14.1-3_amd64.deb failed !"
exit 1
fi

# Installing all the required dependencies/pkgs
# Present in target/debs/bookworm and /tmp/new path.
cd $BUILD_DIR/target/debs/bookworm

sudo dpkg -r libhiredis-dev
sudo apt remove libhiredis0.14
sudo dpkg -r libhiredis1.1.0

if sudo dpkg -i $TMP_DIR/libhiredis0.14_0.14.1-3_amd64.deb
then echo "Successfully installed libhiredis0.14_0.14.1-3_amd64.deb"
else echo "libhiredis0.14_0.14.1-3_amd64.deb installtion failed !"
exit 1
fi

if sudo dpkg -i $TMP_DIR/libhiredis-dev_0.14.1-3_amd64.deb
then echo "Successfully installed libhiredis-dev_0.14.1-3_amd64.deb"
else echo "libhiredis-dev_0.14.1-3_amd64.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-3-200_*.deb
then echo "Successfully installed libnl-3-200_*.deb"
else echo "libnl-3-200_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-3-dev_*.deb
then echo "Successfully installed libnl-3-dev_*.deb"
else echo "libnl-3-dev_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-genl-3-200_*.deb
then echo "Successfully installed libnl-genl-3-200_*.deb"
else echo "libnl-genl-3-200_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-genl-3-dev_*.deb
then echo "Successfully installed libnl-genl-3-dev_*.deb"
else echo "libnl-genl-3-dev_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-route-3-200_*.deb
then echo "Successfully installed libnl-route-3-200_*.deb"
else echo "libnl-route-3-200_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-route-3-dev_*.deb
then echo "Successfully installed libnl-route-3-dev_*.deb"
else echo "libnl-route-3-dev_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-nf-3-200_*.deb
then echo "Successfully installed libnl-nf-3-200_*.deb"
else echo "libnl-nf-3-200_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-nf-3-dev_*.deb
then echo "Successfully installed libnl-nf-3-dev_*.deb"
else echo "libnl-nf-3-dev_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-cli-3-200_*.deb
then echo "Successfully installed libnl-cli-3-200_*.deb"
else echo "libnl-cli-3-200_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libnl-cli-3-dev_*.deb
then echo "Successfully installed libnl-cli-3-dev_*.deb"
else echo "libnl-cli-3-dev_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libyang_*.deb
then echo "Successfully installed libyang_*.deb"
else echo "libyang_*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libyang-*.deb
then echo "Successfully installed libyang-*.deb"
else echo "libyang-*.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libswsscommon_1.0.0_amd64.deb
then echo "Successfully installed libswsscommon_1.0.0_amd64.deb"
else echo "libswsscommon_1.0.0_amd64.deb installtion failed !"
exit 1
fi

if sudo dpkg -i libswsscommon-dev_1.0.0_amd64.deb
then echo "Successfully installed libswsscommon-dev_1.0.0_amd64.deb"
else echo "libswsscommon-dev_1.0.0_amd64.deb installtion failed !"
exit 1
fi

# Removing the temp directory.
[[ -d $TMP_DIR ]] && rm -rf "$TMP_DIR"

# Installing pip and add base-tooling-requirement.text
sudo apt-get update
pip install --upgrade pip

touch base-tooling-requirements.txt
sudo echo "Pympler ==0.8 --hash=sha256:f74cd2982c5cd92ded55561191945616f2bb904a0ae5cdacdb566c6696bdb922" >>base-tooling-requirements.txt

pip install --require-hashes -r base-tooling-requirements.txt

# Installing required redis-tools inside virtualenv
sudo apt install redis-server redis-tools
sudo sed -i 's/notify-keyspace-events ""/notify-keyspace-events AKE/' /etc/redis/redis.conf
sudo sed -ri 's/^# unixsocket/unixsocket/' /etc/redis/redis.conf
sudo sed -ri 's/^unixsocketperm .../unixsocketperm 777/' /etc/redis/redis.conf
sudo sed -ri 's/redis-server.sock/redis.sock/' /etc/redis/redis.conf

# Restarting redis-server :
sudo service redis-server restart &
if [[ $? -ne 0 ]]; then
echo "Redis service restart failed!"
exit 1
fi

# Installing all required dependencies to execute tests
# Installing gtest :
sudo apt-get install -y libgtest-dev
if [[ $? -ne 0 ]]; then
echo "libgtest-dev installation failed!"
exit 1
fi

# Installing gmock :
sudo apt-get install -y libgmock-dev
if [[ $? -ne 0 ]]; then
echo "libgmock-dev installation failed!"
exit 1
fi

# Installing libjansson-dev
sudo apt-get install -y libjansson-dev
if [[ $? -ne 0 ]]; then
echo "libjansson-dev installation failed!"
exit 1
fi

# Installing protobuf-compiler
sudo apt install -y protobuf-compiler
if [[ $? -ne 0 ]]; then
echo "protobuf-compiler installation failed!"
exit 1
fi

# Installing libdbus-c++-bin
sudo apt install -y libdbus-c++-bin
if [[ $? -ne 0 ]]; then
echo "libdbus-c++-bin installation failed!"
exit 1
fi

# Installing libdbus-c++-dev
sudo apt install -y libdbus-c++-dev
if [[ $? -ne 0 ]]; then
echo "libdbus-c++-dev installation failed!"
exit 1
fi

# Creating Directory: /var/run/redis/sonic-db
# Copying database_config.json file to /var/run/redis/sonic-db path.
sudo mkdir -p /var/run/redis/sonic-db
sudo cp $SCRIPT_DIR/database_config.json /var/run/redis/sonic-db/

#Building the sonic-fraework/tests.
cd $BUILD_DIR/src/sonic-framework/
./autogen.sh
./configure
make
cd tests
make

#executin the sonic-framework tests.
./tests
./tests_asan
./tests_tsan
./tests_usan

0 comments on commit 3687fee

Please sign in to comment.