#!/bin/bash
set -e
BASE_PATH=$(cd $(dirname $0); pwd)
PROJECT_PATH=$BASE_PATH/../../../..
PROJECT_PATH=`realpath $PROJECT_PATH`
MINDIE_MS_SRC_PATH=$PROJECT_PATH/mindie_motor/src
MINDIE_MS_TEST_PATH=$PROJECT_PATH/tests/ms
MINDIE_MS_OUTPUT_PATH=$PROJECT_PATH/mindie_motor/src/output
MINDIE_MS_OPEN_SOURCE_PATH=/open_source
source ${MINDIE_MS_TEST_PATH}/ms_test_util.sh
_prepare_3rd_party()
{
rm -rf ${MINDIE_MS_SRC_PATH}/open_source/*
rm -rf ${MINDIE_MS_TEST_PATH}/open_source/*
mkdir -p ${MINDIE_MS_SRC_PATH}/open_source/
mkdir -p ${MINDIE_MS_TEST_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/boost ${MINDIE_MS_SRC_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/kmc ${MINDIE_MS_SRC_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/libboundscheck ${MINDIE_MS_SRC_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/nlohmann ${MINDIE_MS_SRC_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/openssl ${MINDIE_MS_SRC_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/cpp-stub ${MINDIE_MS_TEST_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/googletest ${MINDIE_MS_TEST_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/lcov ${MINDIE_MS_TEST_PATH}/open_source/
cp -r ${MINDIE_MS_OPEN_SOURCE_PATH}/secodefuzz ${MINDIE_MS_TEST_PATH}/open_source/
}
_build_secodefuzz()
{
cd ${MINDIE_MS_TEST_PATH}/open_source/secodefuzz/OpenSource/test/test1
export CC=gcc
sed -i "s#/test/mayp/gcc8.1.0/bin/gcc#gcc#g" Makefile
make Secodefuzz_so
make Secodepits_so_ex
}
_build_lcov()
{
cd ${MINDIE_MS_TEST_PATH}/open_source/lcov
make -j8 && make install
}
_build_fuzz()
{
_build_secodefuzz
cd ${MINDIE_MS_TEST_PATH}/dt
rm -rf build && mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILDING_STAGE=gcov ..
make -j8
cd ${MINDIE_MS_TEST_PATH}/fuzz
rm -rf build && mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILDING_STAGE=fuzz ..
make -j8
}
main()
{
python3 ${MINDIE_MS_TEST_PATH}/scripts/replace_log_macro.py
_prepare_3rd_party
cd $MINDIE_MS_SRC_PATH
sh build.sh -s asan
_set_env
_build_lcov
_build_fuzz
cp ${MINDIE_MS_TEST_PATH}/fuzz/mindie_ms_controller_fuzz /out/
cp ${MINDIE_MS_TEST_PATH}/fuzz/mindie_ms_coordinator_fuzz /out/
chmod 640 -R $MINDIE_MS_SRC_PATH/config/**/*.json
chmod 640 -R $MINDIE_MS_SRC_PATH/output/config/**/*.json
cd ${MINDIE_MS_TEST_PATH}/dt
export ASAN_OPTIONS=log_path=/crashlog/report_crash_asan
}
main "$@"