initial CSIT-DMM test scripts
[csit.git] / tests / dmm / dmm_scripts / install_dmm.sh
diff --git a/tests/dmm/dmm_scripts/install_dmm.sh b/tests/dmm/dmm_scripts/install_dmm.sh
new file mode 100755 (executable)
index 0000000..d6b7a86
--- /dev/null
@@ -0,0 +1,128 @@
+#!/bin/bash
+
+set -x
+
+TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
+OS_ID=$(grep '^ID=' /etc/os-release | cut -f2- -d= | sed -e 's/\"//g')
+ROOTDIR=/tmp/DMM-testing
+
+DMM_DIR=${ROOTDIR}/dmm/
+
+#DPDK download path
+DPDK_DOWNLOAD_PATH=/tmp/dpdk
+
+#dpdk installation path
+DPDK_INSTALL_PATH=/usr
+
+# compile and install the DPDK
+echo "DPDK build started....."
+cd ${ROOTDIR}
+chmod +x *.deb
+sudo dpkg -i libnuma1_2.0.11-1ubuntu1.1_amd64.deb
+sudo dpkg -i libnuma-dev_2.0.11-1ubuntu1.1_amd64.deb
+
+#DPDK will be having dependancy on linux headers
+if [ "$OS_ID" == "ubuntu" ]; then
+    sudo apt-get -y install git build-essential linux-headers-`uname -r`
+    sudo apt-get install libnuma-dev
+elif [ "$OS_ID" == "debian" ]; then
+    sudo apt-get -y install git build-essential linux-headers-`uname -r`
+elif [ "$OS_ID" == "centos" ]; then
+    sudo yum groupinstall -y "Development Tools"
+    sudo yum install -y kernel-headers
+elif [ "$OS_ID" == "opensuse" ]; then
+    sudo yum groupinstall -y "Development Tools"
+    sudo yum install -y kernel-headers
+fi
+
+#===========build DPDK================
+mkdir -p $DPDK_DOWNLOAD_PATH
+
+DPDK_FOLDER=$DPDK_DOWNLOAD_PATH/dpdk-18.02-$TIMESTAMP
+cd $DPDK_DOWNLOAD_PATH
+mkdir $DPDK_FOLDER
+tar xvf /tmp/DMM-testing/dpdk-18.02.tar.xz -C $DPDK_FOLDER
+cd $DPDK_FOLDER/dpdk-18.02
+
+sed -i 's!CONFIG_RTE_EXEC_ENV=.*!CONFIG_RTE_EXEC_ENV=y!1' config/common_base
+sed -i 's!CONFIG_RTE_BUILD_SHARED_LIB=.*!CONFIG_RTE_BUILD_SHARED_LIB=y!1' config/common_base
+sed -i 's!CONFIG_RTE_LIBRTE_EAL=.*!CONFIG_RTE_LIBRTE_EAL=y!1' config/common_base
+sed -i 's!CONFIG_RTE_EAL_PMD_PATH=.*!CONFIG_RTE_EAL_PMD_PATH="/tmp/dpdk/drivers/"!1' config/common_base
+
+sudo make install  T=x86_64-native-linuxapp-gcc DESTDIR=${DPDK_INSTALL_PATH} -j 4
+if [ $? -eq 0 ]
+then
+  echo "DPDK build is SUCCESS"
+else
+  echo "DPDK build has FAILED"
+  exit 1
+fi
+
+mkdir -p /tmp/dpdk/drivers/
+cp -f /usr/lib/librte_mempool_ring.so /tmp/dpdk/drivers/
+
+export NSTACK_LOG_ON=DBG
+
+# Try to kill the vs_epoll
+sudo killall vs_epoll
+
+sudo pgrep vs_epoll
+if [ $? -eq "0" ]; then
+    success=false
+    sudo pkill vs_epoll
+    echo "RC = $?"
+    for attempt in {1..5}; do
+        echo "Checking if vs_epoll is still alive, attempt nr ${attempt}"
+        sudo pgrep vs_epoll
+        if [ $? -eq "1" ]; then
+            echo "vs_epoll is dead"
+            success=true
+            break
+        fi
+        echo "vs_epoll is still alive, waiting 1 second"
+        sleep 1
+    done
+    if [ "$success" = false ]; then
+        echo "The command sudo pkill vs_epoll failed"
+        sudo pkill -9 vs_epoll
+        echo "RC = $?"
+        exit 1
+    fi
+else
+    echo "vs_epoll is not running"
+fi
+
+# check and setup the hugepages
+SYS_HUGEPAGE=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages)
+hugepageFree=$(cat /sys/kernel/mm/hugepages/hugepages-2048kB/free_hugepages)
+
+if [ ${SYS_HUGEPAGE} -lt 1024 ] || [ $hugepageFree -eq 0 ]; then
+    MOUNT=$(mount | grep /mnt/nstackhuge)
+    count=$(mount | grep /mnt/nstackhuge | wc -l)
+
+    while [ "${MOUNT}" != "" ] || [ "${count}" -ne 0 ]
+    do
+        sudo umount /mnt/nstackhuge
+        sleep 1
+        MOUNT=$(mount | grep /mnt/nstackhuge)
+        count=$[$count -1]
+    done
+
+    sock_count=$(lscpu | grep 'Socket(s):' | head -1 | awk '{print $2}')
+    ls -l /sys/devices/system/node/
+
+    while [ "${sock_count}" -ne 0 ]
+    do
+        sock_count=$[$sock_count - 1]
+        echo 1024 | sudo tee /sys/devices/system/node/node"$sock_count"/hugepages/hugepages-2048kB/nr_hugepages
+    done
+
+    sudo mkdir -p /mnt/nstackhuge
+    sudo mount -t hugetlbfs -o pagesize=2M none /mnt/nstackhuge/
+    test $? -eq 0 || exit 1
+else
+    sudo mkdir -p /mnt/nstackhuge
+    sudo mount -t hugetlbfs -o pagesize=2M none /mnt/nstackhuge/
+fi
+
+sudo mkdir -p /var/run/ip_module/