From cf8557db3ad8a753edb9b247e20defd95480f0ff Mon Sep 17 00:00:00 2001 From: Alexey Rivkin Date: Thu, 25 May 2023 10:29:24 +0300 Subject: [PATCH] CI: Testing on VMs --- ci/azure-pipelines.yml | 57 ++++++++++++++++++++++++++++++++++ ci/vm/Vagrantfile | 13 ++++++++ ci/vm/entrypoint.sh | 69 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 ci/vm/Vagrantfile create mode 100644 ci/vm/entrypoint.sh diff --git a/ci/azure-pipelines.yml b/ci/azure-pipelines.yml index 72a20e5..939b056 100644 --- a/ci/azure-pipelines.yml +++ b/ci/azure-pipelines.yml @@ -58,6 +58,7 @@ stages: workingDirectory: $(System.DefaultWorkingDirectory)/test/gtest - stage: Build + dependsOn: Codestyle jobs: - job: Build pool: @@ -101,3 +102,59 @@ stages: make displayName: Build Ubuntu condition: contains(variables['build_container'], 'ubuntu') + + - stage: Test + dependsOn: Codestyle + jobs: + - job: Test + workspace: + clean: all + pool: + name: MLNX + demands: + - ucx_vagrant + + strategy: + matrix: + centos7: + BOX_NAME: centos7 + ubuntu18: + BOX_NAME: ubuntu1804 + ubuntu20: + BOX_NAME: ubuntu2004 + ubuntu22: + BOX_NAME: ubuntu2204 + + steps: + - checkout: self + clean: true + fetchDepth: 100 + + - bash: | + set -x + export VAGRANT_HOME=/opt/vagrant_home + vagrant up + displayName: Bring up VM + workingDirectory: $(System.DefaultWorkingDirectory)/ci/vm/ + + - bash: | + vagrant ssh -- -t ' + cd xpmem/test/share + sudo ./run.sh + ' + displayName: Old tests + workingDirectory: $(System.DefaultWorkingDirectory)/ci/vm/ + + - bash: | + vagrant ssh -- -t ' + sudo ./xpmem/test/gtest/gtest + ' + displayName: Gtest + workingDirectory: $(System.DefaultWorkingDirectory)/ci/vm/ + + - bash: | + vagrant destroy -f + vagrant global-status --prune + condition: always() + displayName: Bring down VM + workingDirectory: $(System.DefaultWorkingDirectory)/ci/vm/ diff --git a/ci/vm/Vagrantfile b/ci/vm/Vagrantfile new file mode 100644 index 0000000..04f5dfa --- /dev/null +++ b/ci/vm/Vagrantfile @@ -0,0 +1,13 @@ +#!/usr/bin/env ruby + +Vagrant.configure("2") do |config| + config.vm.box = "generic/#{ENV['BOX_NAME']}" + config.vm.provision "shell", :path => "entrypoint.sh", args: "#{ENV['BOX_NAME']} #{ENV['SYSTEM_PULLREQUEST_PULLREQUESTNUMBER']}" + config.vm.define "#{ENV['BOX_NAME']}" do |vm01| + vm01.vm.provider :libvirt do |libvirt| + vm01.vm.box_check_update = false + libvirt.memory = 8192 + libvirt.cpus = 8 + end + end +end diff --git a/ci/vm/entrypoint.sh b/ci/vm/entrypoint.sh new file mode 100644 index 0000000..4efca2c --- /dev/null +++ b/ci/vm/entrypoint.sh @@ -0,0 +1,69 @@ +#!/bin/bash +set -Exeuo pipefail + +OS=$1 +PR_NUM=$2 + +install_packages() { + if [[ $OS == *"ubuntu"* ]]; then + apt-get update && + DEBIAN_FRONTEND=noninteractive apt-get install -yq \ + automake \ + dkms \ + git \ + libtool && + apt-get clean && rm -rf /var/lib/apt/lists/* + elif [[ $OS == *"centos"* ]]; then + yum install -y -q centos-release-scl + yum install -y -q \ + automake \ + devtoolset-8-gcc \ + devtoolset-8-gcc-c++ \ + elfutils-libelf-devel \ + git \ + libtool \ + make && + yum clean all + fi +} + +xpmem_build() { + git clone -q https://github.com/openucx/xpmem.git + cd xpmem + git fetch origin pull/"$PR_NUM"/merge + git checkout FETCH_HEAD + ./autogen.sh + if [[ $OS == *"ubuntu"* ]]; then + ./configure --with-kerneldir=/usr/src/linux-headers-"$(uname -r)" + make -s + make check + elif [[ $OS == *"centos"* ]]; then + # Build with GCC-8 + scl enable devtoolset-8 -- bash -c " + ./configure --with-kerneldir=/usr/src/kernels/'$(uname -r)' + make -s + make check + " + fi +} + +xpmem_load() { + sudo insmod kernel/xpmem.ko + cat /sys/module/xpmem/srcversion + modinfo kernel/xpmem.ko + if modinfo kernel/xpmem.ko | grep -qf /sys/module/xpmem/srcversion; then + echo "XPMEM loaded successfully" + else + echo "Error: Failed to load xpmem kernel module" >&2 + exit 1 + fi +} + +err_report() { + echo "Exited with ERROR in line $1" +} +trap 'err_report $LINENO' ERR + +install_packages +xpmem_build +xpmem_load