diff --git a/ci/get-nprocessors.sh b/ci/get-nprocessors.sh new file mode 100755 index 0000000..43635e7 --- /dev/null +++ b/ci/get-nprocessors.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +# Copyright 2017 Google Inc. +# All Rights Reserved. +# +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following disclaimer +# in the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# This file is typically sourced by another script. +# if possible, ask for the precise number of processors, +# otherwise take 2 processors as reasonable default; see +# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization +if [ -x /usr/bin/getconf ]; then + NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN) +else + NPROCESSORS=2 +fi + +# as of 2017-09-04 Travis CI reports 32 processors, but GCC build +# crashes if parallelized too much (maybe memory consumption problem), +# so limit to 4 processors for the time being. +if [ $NPROCESSORS -gt 4 ] ; then + echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4." + NPROCESSORS=4 +fi diff --git a/ci/perpare_pulp3_netrc.sh b/ci/perpare_pulp3_netrc.sh new file mode 100644 index 0000000..8414bbb --- /dev/null +++ b/ci/perpare_pulp3_netrc.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env sh +set -evx +echo "machine ${PULP3_SERVER_URL}\nlogin ${PULP3_SERVER_LOGIN}\npassword ${PULP3_SERVER_PASSWORD}\n" > ~/.netrc diff --git a/ci/travis.sh b/ci/travis.sh new file mode 100644 index 0000000..6e9056b --- /dev/null +++ b/ci/travis.sh @@ -0,0 +1,72 @@ +#!/usr/bin/env sh +set -evx + +chmod +x ci/get-nprocessors.sh +. ci/get-nprocessors.sh + +# if possible, ask for the precise number of processors, +# otherwise take 2 processors as reasonable default; see +# https://docs.travis-ci.com/user/speeding-up-the-build/#Makefile-optimization +if [ -x /usr/bin/getconf ]; then + NPROCESSORS=$(/usr/bin/getconf _NPROCESSORS_ONLN) +else + NPROCESSORS=2 +fi + +# as of 2017-09-04 Travis CI reports 32 processors, but GCC build +# crashes if parallelized too much (maybe memory consumption problem), +# so limit to 4 processors for the time being. +if [ $NPROCESSORS -gt 4 ] ; then + echo "$0:Note: Limiting processors to use by make from $NPROCESSORS to 4." + NPROCESSORS=4 +fi + +# Tell make to use the processors. No preceding '-' required. +MAKEFLAGS="j${NPROCESSORS}" +export MAKEFLAGS + +env | sort + +# Set default values to OFF for these variables if not specified. +: "${NO_EXCEPTION:=OFF}" +: "${NO_RTTI:=OFF}" +: "${COMPILER_IS_GNUCXX:=OFF}" + +# Install dependency from YUM +if [ -n "${INSTALL_DEPENDENCY_LIBRARY}" ]; then + yum install -y $INSTALL_DEPENDENCY_LIBRARY + source /etc/profile.d/framework.sh +fi + +if [ $ASAN_OPTION ] && [ -f "/opt/rh/devtoolset-7/enable" ] ;then + source /opt/rh/devtoolset-7/enable +fi + +mkdir build || true +cd build + +cmake3 -DCMAKE_CXX_FLAGS=$CXX_FLAGS \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + -DCMAKE_INSTALL_PREFIX=$INSTALL_PREFIX \ + -DASAN_OPTION=$ASAN_OPTION \ + -DVERSION_DAILY_BUILD=$TESTING_VERSION_BUILD \ + .. + +make + +if [ -n "${PACKAGE}" ]; then + make package +fi + + +if [ -n "${UPLOAD}" ]; then + cp ~/rpm_upload_tools.py ./ + python3 rpm_upload_tools.py ${PULP3_REPO_NAME} ${PULP3_DIST_NAME} *.rpm +fi + +if [ -n "${UPLOAD_SYMBOL_FILES}" ]; then + rpm -i $SYMBOL_TARGET*debuginfo*.rpm + _symbol_file=`find /usr/lib/debug/ -name "$SYMBOL_TARGET*.so*.debug"` + cp $_symbol_file ${_symbol_file}info.${CI_COMMIT_SHORT_SHA} + sentry-cli upload-dif -t elf ${_symbol_file}info.${CI_COMMIT_SHORT_SHA} +fi diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index f5596b6..797a85e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -18,7 +18,6 @@ target_link_libraries(maat_framework_gtest maat_frame_static gtest_static) add_executable(adapter_hs_gtest adapter_hs_gtest.cpp) target_link_libraries(adapter_hs_gtest maat_frame_static gtest_static) -file(COPY rule DESTINATION ./) file(COPY table_info.conf DESTINATION ./) file(COPY literal_expr.conf DESTINATION ./) file(COPY regex_expr.conf DESTINATION ./) diff --git a/test/adapter_hs_gtest.cpp b/test/adapter_hs_gtest.cpp index 4669baa..9b92f6c 100644 --- a/test/adapter_hs_gtest.cpp +++ b/test/adapter_hs_gtest.cpp @@ -151,12 +151,14 @@ int parse_config_file(const char *filename, and_expr_t exprs[], size_t *n_expr) if (exprs[i].patterns[j].is_hexbin == 1) { size_t pat_str_len = strlen(item->valuestring) + 1; char *pat_str = ALLOC(char, pat_str_len); - pat_str_len = hex2bin(item->valuestring, strlen(item->valuestring), pat_str, pat_str_len); + pat_str_len = hex2bin(item->valuestring, strlen(item->valuestring), + pat_str, pat_str_len); memcpy(exprs[i].patterns[j].pat, pat_str, pat_str_len); exprs[i].patterns[j].pat_len = pat_str_len; } else { - memcpy(exprs[i].patterns[j].pat, item->valuestring, strlen(item->valuestring)); + memcpy(exprs[i].patterns[j].pat, item->valuestring, + strlen(item->valuestring)); exprs[i].patterns[j].pat_len = strlen(item->valuestring); } } @@ -206,15 +208,18 @@ TEST(block_mode_initialize, invalid_input_parameter) and_expr_t exprs[64]; /* case1: invalid scan_mode parameter */ - hs_instance = adapter_hs_initialize(HS_SCAN_MODE_MAX, HS_PATTERN_TYPE_REG, 1, exprs, 1, g_logger); + hs_instance = adapter_hs_initialize(HS_SCAN_MODE_MAX, HS_PATTERN_TYPE_REG, + 1, exprs, 1, g_logger); EXPECT_EQ(hs_instance, NULL); /* case2: invalid expr parameter */ - hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, 1, NULL, 1, g_logger); + hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, + 1, NULL, 1, g_logger); EXPECT_EQ(hs_instance, NULL); /* case3: invalid expr num */ - hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, 1, exprs, 0, g_logger); + hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, + 1, exprs, 0, g_logger); EXPECT_EQ(hs_instance, NULL); } @@ -223,23 +228,27 @@ TEST(block_mode_scan, invalid_input_parameter) and_expr_t expr_array[64]; size_t n_expr_array = 0; - struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, 1, NULL, 0, g_logger); + struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, + 1, NULL, 0, g_logger); EXPECT_EQ(hs_instance, NULL); - hs_instance = adapter_hs_initialize(HS_SCAN_MODE_MAX, HS_PATTERN_TYPE_REG, 1, expr_array, n_expr_array, g_logger); + hs_instance = adapter_hs_initialize(HS_SCAN_MODE_MAX, HS_PATTERN_TYPE_REG, 1, expr_array, + n_expr_array, g_logger); EXPECT_EQ(hs_instance, NULL); n_expr_array = 1; expr_array[0].expr_id = 101; expr_array[0].n_patterns = 10; - hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, 1, expr_array, n_expr_array, g_logger); + hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, 1, expr_array, + n_expr_array, g_logger); EXPECT_EQ(hs_instance, NULL); memset(expr_array, 0, sizeof(expr_array)); n_expr_array = 1; expr_array[0].expr_id = 101; expr_array[0].n_patterns = 1; - hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, 1, expr_array, n_expr_array, g_logger); + hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_REG, 1, expr_array, + n_expr_array, g_logger); EXPECT_EQ(hs_instance, NULL); } @@ -252,7 +261,8 @@ TEST(block_mode_scan, literal_sub_has_normal_offset) EXPECT_EQ(ret, 0); EXPECT_EQ(n_expr_array, 11); - struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, expr_array, n_expr_array, g_logger); + struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, + expr_array, n_expr_array, g_logger); EXPECT_NE(hs_instance, NULL); expr_array_free(expr_array, n_expr_array); @@ -291,7 +301,8 @@ TEST(block_mode_scan, literal_sub_has_left_unlimit_offset) int ret = parse_config_file("./literal_expr.conf", expr_array, &n_expr_array); EXPECT_EQ(ret, 0); - struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, expr_array, n_expr_array, g_logger); + struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, + expr_array, n_expr_array, g_logger); EXPECT_NE(hs_instance, NULL); expr_array_free(expr_array, n_expr_array); @@ -331,7 +342,8 @@ TEST(block_mode_scan, literal_sub_has_right_unlimit_offset) int ret = parse_config_file("./literal_expr.conf", expr_array, &n_expr_array); EXPECT_EQ(ret, 0); - struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, expr_array, n_expr_array, g_logger); + struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, + expr_array, n_expr_array, g_logger); EXPECT_NE(hs_instance, NULL); expr_array_free(expr_array, n_expr_array); @@ -386,7 +398,8 @@ TEST(block_mode_scan, literal_sub_with_no_offset) int ret = parse_config_file("./literal_expr.conf", expr_array, &n_expr_array); EXPECT_EQ(ret, 0); - struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, expr_array, n_expr_array, g_logger); + struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, + expr_array, n_expr_array, g_logger); EXPECT_NE(hs_instance, NULL); expr_array_free(expr_array, n_expr_array); @@ -433,7 +446,8 @@ TEST(block_mode_scan, literal_exactly) int ret = parse_config_file("./literal_expr.conf", expr_array, &n_expr_array); EXPECT_EQ(ret, 0); - struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, expr_array, n_expr_array, g_logger); + struct adapter_hs *hs_instance = adapter_hs_initialize(HS_SCAN_MODE_BLOCK, HS_PATTERN_TYPE_STR, 1, + expr_array, n_expr_array, g_logger); EXPECT_NE(hs_instance, NULL); expr_array_free(expr_array, n_expr_array); diff --git a/test/maat_framework_gtest.cpp b/test/maat_framework_gtest.cpp index 57c5a16..83b5490 100644 --- a/test/maat_framework_gtest.cpp +++ b/test/maat_framework_gtest.cpp @@ -97,8 +97,9 @@ TEST_F(MaatFlagScan, withExprRegion) { EXPECT_NE(n_read, 0); const char *expr_scan_data = "hello world"; - ret = maat_scan_string(g_maat_instance, expr_table_id, 0, expr_scan_data, strlen(expr_scan_data), - results, ARRAY_SIZE, &n_hit_result, &state); + ret = maat_scan_string(g_maat_instance, expr_table_id, 0, expr_scan_data, + strlen(expr_scan_data), results, ARRAY_SIZE, + &n_hit_result, &state); EXPECT_EQ(ret, MAAT_SCAN_HIT); EXPECT_EQ(n_hit_result, 1); EXPECT_EQ(results[0], 193); @@ -588,6 +589,7 @@ protected: } }; + #if 0 TEST_F(MaatIntervalScan, Pure) { int results[ARRAY_SIZE] = {0}; @@ -635,6 +637,7 @@ TEST_F(MaatIntervalScan, IntervalPlus) { maat_state_free(&state); } #endif + int count_line_num_cb(const char *table_name, const char *line, void *u_para) { (*((unsigned int *)u_para))++;