Skip to content

Commit

Permalink
Merge pull request #240 from LLNL/feature/test_script
Browse files Browse the repository at this point in the history
Brush up test scripts.
  • Loading branch information
KIwabuchi committed Oct 4, 2022
2 parents 923c262 + 6c76a15 commit d7e56ea
Show file tree
Hide file tree
Showing 4 changed files with 117 additions and 144 deletions.
81 changes: 14 additions & 67 deletions scripts/CI/build_and_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

##############################################################################
# Bash script that builds and tests Metall with many compile time configurations
#
# 1. Set environmental variables for build
# Set manually:
# export CC=gcc
Expand All @@ -12,6 +13,9 @@
# spack load g++
# spack load boost
#
# Metall's CMake configuration step downloads the Boost C++ libraries automatically
# if the library is not found.
#
# 2. Set optional environmental variables for test
# export METALL_TEST_DIR=/tmp
# export METALL_LIMIT_MAKE_PARALLELS=n
Expand All @@ -21,83 +25,26 @@
# sh ./scripts/CI/build_and_test.sh
##############################################################################

#######################################
# Builds and runs test programs
# Globals:
# METALL_ROOT_DIR
# METALL_TEST_DIR
# METALL_LIMIT_MAKE_PARALLELS (option)
# Arguments:
# CMake options to pass
# Outputs: STDOUT and STDERR
#######################################
run_build_and_test_core() {
local BUILD_DIR=./build

mkdir -p ${BUILD_DIR}
pushd ${BUILD_DIR}
echo "Build and test in ${PWD}"

# Build
local CMAKE_OPTIONS="$@"
local CMAKE_FILE_LOCATION=${METALL_ROOT_DIR}
or_die cmake ${CMAKE_FILE_LOCATION} ${CMAKE_OPTIONS}
if [[ -z "${METALL_LIMIT_MAKE_PARALLELS}" ]]; then
or_die make -j
else
or_die make -j${METALL_LIMIT_MAKE_PARALLELS}
fi

# Test 1
rm -rf ${METALL_TEST_DIR}
or_die ctest --timeout 1000

# Test 2
rm -rf ${METALL_TEST_DIR}
pushd bench/adjacency_list
or_die bash ${METALL_ROOT_DIR}/bench/adjacency_list/test/test.sh -d${METALL_TEST_DIR}
popd

# Test 3
rm -rf ${METALL_TEST_DIR}
pushd bench/adjacency_list
or_die bash ${METALL_ROOT_DIR}/bench/adjacency_list/test/test_large.sh -d${METALL_TEST_DIR}
popd

# TODO: reflink test and C_API test

rm -rf ${METALL_TEST_DIR}

popd
rm -rf ${BUILD_DIR}
}

#######################################
# Show some system information
# Outputs: STDOUT and STDERR
#######################################
show_system_info() {
exec_cmd df -h
exec_cmd df -ih
exec_cmd free -g
exec_cmd uname -r
}

#######################################
# main function
# Globals:
# METALL_BUILD_TYPE (option)
# METALL_BUILD_DIR (option, defined if not given)
# METALL_TEST_DIR (option, defined if not given)
# METALL_ROOT_DIR (defined in this function, readonly)
# METALL_BUILD_TYPE (option)
# Outputs: STDOUT and STDERR
#######################################
main() {
readonly METALL_ROOT_DIR=${PWD}
source ${METALL_ROOT_DIR}/scripts/test_kernel.sh
source ${METALL_ROOT_DIR}/scripts/test_utility.sh

echo "Build and test on ${HOSTNAME}"
show_system_info

echo "Build and test on ${HOSTNAME}"
if [[ -z "${METALL_BUILD_DIR}" ]]; then
readonly METALL_BUILD_DIR="${METALL_ROOT_DIR}/build_${RANDOM}"
fi

setup_test_dir
export METALL_TEST_DIR
Expand All @@ -111,7 +58,8 @@ main() {
for DISABLE_FREE_FILE_SPACE in OFF; do
for DISABLE_SMALL_OBJECT_CACHE in OFF; do
for FREE_SMALL_OBJECT_SIZE_HINT in 0; do
run_build_and_test_core -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
run_build_and_test_kernel \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DDISABLE_FREE_FILE_SPACE=${DISABLE_FREE_FILE_SPACE} \
-DDISABLE_SMALL_OBJECT_CACHE=${DISABLE_SMALL_OBJECT_CACHE} \
-DFREE_SMALL_OBJECT_SIZE_HINT=${FREE_SMALL_OBJECT_SIZE_HINT} \
Expand All @@ -124,8 +72,7 @@ main() {
-DBUILD_EXAMPLE=ON \
-DRUN_BUILD_AND_TEST_WITH_CI=ON \
-DBUILD_VERIFICATION=OFF \
-DVERBOSE_SYSTEM_SUPPORT_WARNING=OFF \
-DLOGGING=OFF
-DVERBOSE_SYSTEM_SUPPORT_WARNING=OFF
done
done
done
Expand Down
95 changes: 18 additions & 77 deletions scripts/release_test/full_build_and_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@
# Bash script that builds and tests Metall with all compile time configurations
# This test would take a few hours at least
#
# 1. Set environmental variables for build
# 1. Set environmental variables for build, if needed
# Set manually:
# export CC=gcc
# export CXX=g++
# export CMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}:/path/to/boost
# export CMAKE_PREFIX_PATH=/path/to/boost:${CMAKE_PREFIX_PATH}
#
# Or, configure environmental variables using spack:
# spack load g++
# spack load boost
#
# Metall's CMake configuration step downloads the Boost C++ libraries automatically
# if the library is not found.
#
# 2. Set optional environmental variables for test
# export METALL_TEST_DIR=/tmp
# export METALL_BUILD_DIR=./build
Expand All @@ -23,105 +26,43 @@
# sh ./scripts/release_test/full_build_and_test.sh
##############################################################################

#######################################
# Builds documents
# Globals:
# METALL_ROOT_DIR
# METALL_BUILD_DIR
# Outputs: STDOUT and STDERR
#######################################
build_docs() {
mkdir -p ${METALL_BUILD_DIR}
cd ${METALL_BUILD_DIR}
echo "Build and test in ${PWD}"

# Build
local CMAKE_FILE_LOCATION=${METALL_ROOT_DIR}
or_die cmake ${CMAKE_FILE_LOCATION} -DBUILD_DOC=ON
or_die make build_doc

cd ../
rm -rf ${METALL_BUILD_DIR}
}

#######################################
# Builds and runs test programs
# Globals:
# METALL_ROOT_DIR
# METALL_TEST_DIR
# METALL_BUILD_DIR
# METALL_LIMIT_MAKE_PARALLELS (option)
# Arguments:
# CMake options to pass
# Outputs: STDOUT and STDERR
#######################################
run_build_and_test_core() {
mkdir -p ${METALL_BUILD_DIR}
pushd ${METALL_BUILD_DIR}
echo "Build and test in ${PWD}"

# Build
local CMAKE_OPTIONS="$@"
local CMAKE_FILE_LOCATION=${METALL_ROOT_DIR}
or_die cmake ${CMAKE_FILE_LOCATION} ${CMAKE_OPTIONS}
if [[ -z "${METALL_LIMIT_MAKE_PARALLELS}" ]]; then
or_die make -j
else
or_die make -j${METALL_LIMIT_MAKE_PARALLELS}
fi

# Test 1
rm -rf ${METALL_TEST_DIR}
or_die ctest --timeout 1000

# Test 2
rm -rf ${METALL_TEST_DIR}
pushd bench/adjacency_list
or_die bash ./test/test.sh -d${METALL_TEST_DIR}
popd

# Test 3
rm -rf ${METALL_TEST_DIR}
pushd bench/adjacency_list
or_die bash ./test/test_large.sh -d${METALL_TEST_DIR}
popd

# TODO: reflink test and C_API test

rm -rf ${METALL_TEST_DIR}
popd
rm -rf ${METALL_BUILD_DIR}
}

#######################################
# main function
# Globals:
# METALL_TEST_DIR (option, defined if not given)
# METALL_BUILD_DIR (option, defined if not given)
# METALL_TEST_DIR (option, defined if not given)
# METALL_ROOT_DIR (defined in this function, readonly)
# Outputs: STDOUT and STDERR
#######################################
main() {
readonly METALL_ROOT_DIR=${PWD}
source ${METALL_ROOT_DIR}/scripts/test_kernel.sh
source ${METALL_ROOT_DIR}/scripts/test_utility.sh

echo "Build and test on ${HOSTNAME}"
show_system_info

if [[ -z "${METALL_BUILD_DIR}" ]]; then
readonly METALL_BUILD_DIR="${METALL_ROOT_DIR}/build_${RANDOM}"
fi

# Build documents only
setup_test_dir
export METALL_TEST_DIR

# Build documents
build_docs

for BUILD_TYPE in Debug RelWithDebInfo Release; do
for DISABLE_FREE_FILE_SPACE in ON OFF; do
for DISABLE_SMALL_OBJECT_CACHE in ON OFF; do
for FREE_SMALL_OBJECT_SIZE_HINT in 0 8 4096 65536; do
for LOGGING in ON OFF; do
run_build_and_test_core -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
for USE_ANONYMOUS_NEW_MAP in ON OFF; do
run_build_and_test_kernel \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DDISABLE_FREE_FILE_SPACE=${DISABLE_FREE_FILE_SPACE} \
-DDISABLE_SMALL_OBJECT_CACHE=${DISABLE_SMALL_OBJECT_CACHE} \
-DFREE_SMALL_OBJECT_SIZE_HINT=${FREE_SMALL_OBJECT_SIZE_HINT} \
-DLOGGING=${LOGGING} \
-DUSE_ANONYMOUS_NEW_MAP=${USE_ANONYMOUS_NEW_MAP} \
-DBUILD_BENCH=ON \
-DBUILD_TEST=ON \
-DRUN_LARGE_SCALE_TEST=ON \
Expand Down
74 changes: 74 additions & 0 deletions scripts/test_kernel.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
#######################################
# Builds and runs test programs
# Globals:
# METALL_ROOT_DIR
# METALL_TEST_DIR
# METALL_BUILD_DIR
# METALL_LIMIT_MAKE_PARALLELS (option)
# Arguments:
# CMake options to pass
# Outputs: STDOUT and STDERR
#######################################
run_build_and_test_kernel() {
source ${METALL_ROOT_DIR}/scripts/test_utility.sh

mkdir -p ${METALL_BUILD_DIR}
pushd ${METALL_BUILD_DIR}
echo "Build and test in ${PWD}"

# Build
local CMAKE_OPTIONS="$@"
local CMAKE_FILE_LOCATION=${METALL_ROOT_DIR}
or_die cmake ${CMAKE_FILE_LOCATION} ${CMAKE_OPTIONS}
if [[ -z "${METALL_LIMIT_MAKE_PARALLELS}" ]]; then
or_die make -j
else
or_die make -j${METALL_LIMIT_MAKE_PARALLELS}
fi

# Test 1
rm -rf ${METALL_TEST_DIR}
or_die ctest --timeout 1000

# Test 2
rm -rf ${METALL_TEST_DIR}
pushd bench/adjacency_list
or_die bash ./test/test.sh -d${METALL_TEST_DIR}
popd

# Test 3
rm -rf ${METALL_TEST_DIR}
pushd bench/adjacency_list
or_die bash ./test/test_large.sh -d${METALL_TEST_DIR}
popd

# TODO: reflink test and C_API test

rm -rf ${METALL_TEST_DIR}
popd
rm -rf ${METALL_BUILD_DIR}
}


#######################################
# Builds documents
# Globals:
# METALL_ROOT_DIR
# METALL_BUILD_DIR
# Outputs: STDOUT and STDERR
#######################################
build_docs() {
source ${METALL_ROOT_DIR}/scripts/test_utility.sh

mkdir -p ${METALL_BUILD_DIR}
cd ${METALL_BUILD_DIR}
echo "Build and test in ${PWD}"

# Build
local CMAKE_FILE_LOCATION=${METALL_ROOT_DIR}
or_die cmake ${CMAKE_FILE_LOCATION} -DBUILD_DOC=ON
or_die make build_doc

cd ../
rm -rf ${METALL_BUILD_DIR}
}
11 changes: 11 additions & 0 deletions scripts/test_utility.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,15 @@ setup_test_dir() {

# mkdir -p ${METALL_TEST_DIR} # Metall creates automatically if the directory does not exist
echo "Store test data to ${METALL_TEST_DIR}"
}

#######################################
# Show some system information
# Outputs: STDOUT and STDERR
#######################################
show_system_info() {
exec_cmd df -h
exec_cmd df -ih
exec_cmd free -g
exec_cmd uname -r
}

0 comments on commit d7e56ea

Please sign in to comment.