diff --git a/.drone.jsonnet b/.drone.jsonnet index 9b0e3ec83..31fe66b61 100644 --- a/.drone.jsonnet +++ b/.drone.jsonnet @@ -29,7 +29,7 @@ local builddir = 'verylongdirnameforverystrangecpackbehavior'; local cmakeflags = '-DCMAKE_BUILD_TYPE=RelWithDebInfo -DPLUGIN_COLUMNSTORE=YES -DPLUGIN_XPAND=NO -DPLUGIN_MROONGA=NO -DPLUGIN_ROCKSDB=NO ' + '-DPLUGIN_TOKUDB=NO -DPLUGIN_CONNECT=NO -DPLUGIN_SPIDER=NO -DPLUGIN_OQGRAPH=NO -DPLUGIN_SPHINX=NO ' + '-DWITH_EMBEDDED_SERVER=OFF -DWITH_WSREP=OFF ' + - '-DBUILD_CONFIG=mysql_release'; + '-DBUILD_CONFIG=mysql_release -DWITH_UNITTESTS=YES'; local rpm_build_deps = 'install -y lz4 systemd-devel git make gcc gcc-c++ libaio-devel openssl-devel boost-devel bison snappy-devel flex libcurl-devel libxml2-devel ncurses-devel automake libtool policycoreutils-devel rpm-build lsof iproute pam-devel perl-DBI cracklib-devel expect createrepo'; @@ -37,7 +37,6 @@ local deb_build_deps = 'apt update && apt install --yes --no-install-recommends '&& mk-build-deps debian/control -t "apt-get -y -o Debug::pkgProblemResolver=yes --no-install-recommends" -r -i'; local platformMap(platform) = - local platform_map = { 'opensuse/leap:15': 'zypper ' + rpm_build_deps + ' liblz4-devel cmake libboost_system-devel libboost_filesystem-devel libboost_thread-devel libboost_regex-devel libboost_date_time-devel libboost_chrono-devel libboost_atomic-devel gcc-fortran && cmake ' + cmakeflags + ' -DRPM=sles15 && make -j$(nproc) package', 'centos:7': 'yum install -y epel-release && yum install -y cmake3 && ln -s /usr/bin/cmake3 /usr/bin/cmake && yum ' + rpm_build_deps + ' lz4-devel && cmake ' + cmakeflags + ' -DRPM=centos7 && make -j$(nproc) package', @@ -46,9 +45,33 @@ local platformMap(platform) = 'ubuntu:18.04': deb_build_deps + " && CMAKEFLAGS='" + cmakeflags + " -DDEB=bionic' debian/autobake-deb.sh", 'ubuntu:20.04': deb_build_deps + " && CMAKEFLAGS='" + cmakeflags + " -DDEB=focal' debian/autobake-deb.sh", }; - platform_map[platform]; + +local testRun(platform) = + local platform_map = { + 'opensuse/leap:15': 'ctest -R columnstore: -j $(nproc) --output-on-failure', + 'centos:7': 'ctest3 -R columnstore: -j $(nproc) --output-on-failure', + 'centos:8': 'ctest3 -R columnstore: -j $(nproc) --output-on-failure', + 'debian:10': 'cd builddir; ctest -R columnstore: -j $(nproc) --output-on-failure', + 'ubuntu:18.04': 'cd builddir; ctest -R columnstore: -j $(nproc) --output-on-failure', + 'ubuntu:20.04': 'cd builddir; ctest -R columnstore: -j $(nproc) --output-on-failure', + }; + platform_map[platform]; + + +local testPreparation(platform) = + local platform_map = { + 'opensuse/leap:15': 'zypper install -y gtest boost-devel libboost_system-devel libboost_filesystem-devel libboost_thread-devel libboost_regex-devel libboost_date_time-devel libboost_chrono-devel libboost_atomic-devel cppunit-devel snappy-devel cmake', + 'centos:7': 'yum -y install epel-release && yum install -y gtest-devel cppunit-devel cmake3 boost-devel snappy-devel', + 'centos:8': 'yum install -y dnf-plugins-core libarchive && yum config-manager --set-enabled powertools && yum install -y lz4 gtest-devel cppunit-devel cmake3 boost-devel snappy-devel', + 'debian:10': 'apt update && apt install --yes libboost-all-dev libgtest-dev libcppunit-dev libsnappy-dev googletest cmake', + 'ubuntu:18.04': 'apt update && apt install --yes libboost-all-dev libgtest-dev libcppunit-dev googletest libsnappy-dev cmake g++ && cd /usr/src/googletest; cmake . && cmake --build . --target install; cd -' , + 'ubuntu:20.04': 'apt update && apt install --yes libboost-all-dev libgtest-dev libcppunit-dev googletest libsnappy-dev cmake', + }; + platform_map[platform]; + + local Pipeline(branch, platform, event, arch='amd64') = { local pkg_format = if (std.split(platform, ':')[0] == 'centos' || std.split(platform, ':')[0] == 'opensuse/leap') then 'rpm' else 'deb', local init = if (pkg_format == 'rpm') then '/usr/lib/systemd/systemd' else 'systemd', @@ -357,10 +380,24 @@ local Pipeline(branch, platform, event, arch='amd64') = { // "sed -i 's/BETA/GAMMA/' storage/columnstore/CMakeLists.txt", // Workaround till upstream removes 4535 workaround (workaround for workaround!) "sed -i '/MCOL-4535/,/^$/d' debian/autobake-deb.sh", + testPreparation(platform), platformMap(platform), if (pkg_format == 'rpm') then 'createrepo .' else 'dpkg-scanpackages ../ | gzip > ../Packages.gz', ], }, + { + name: 'unittests', + image: platform, + volumes: [pipeline._volumes.mdb], + environment: { + DEBIAN_FRONTEND: 'noninteractive', + }, + commands: [ + 'cd /mdb/' + builddir, + testPreparation(platform), + testRun(platform) + ], + }, { name: 'list pkgs', image: 'docker:git', diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index dab4a03ef..09374649b 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,63 +1,43 @@ include_directories( ${ENGINE_COMMON_INCLUDES} ) +if (WITH_UNITTESTS) + enable_testing() + include(GoogleTest) + find_package(GTest REQUIRED) -enable_testing() -include(GoogleTest) -find_package(GTest REQUIRED) - -if (WITH_UNITTESTS OR WITH_ROWGROUP_UT) + #GoogleTest tests add_executable(rowgroup_tests rowgroup-tests.cpp) target_link_libraries(rowgroup_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${ENGINE_EXEC_LIBS} ${MARIADB_CLIENT_LIBS}) - # target_include_directories(rowgroup_tests ${GTEST_INCLUDE_DIR}) - install(TARGETS rowgroup_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) gtest_discover_tests(rowgroup_tests TEST_PREFIX columnstore:) -endif() -if (WITH_UNITTESTS OR WITH_ARITHMETICOPERATOR_UT) add_executable(arithmeticoperator_tests arithmeticoperator-tests.cpp) target_link_libraries(arithmeticoperator_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${ENGINE_EXEC_LIBS} ${MARIADB_CLIENT_LIBS}) - install(TARGETS arithmeticoperator_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) gtest_discover_tests(arithmeticoperator_tests TEST_PREFIX columnstore:) -endif() -if (WITH_UNITTESTS OR WITH_CSDECIMAL_UT) add_executable(mcs_decimal_tests mcs_decimal-tests.cpp) target_link_libraries(mcs_decimal_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${ENGINE_EXEC_LIBS} ${MARIADB_CLIENT_LIBS}) - install(TARGETS mcs_decimal_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) gtest_discover_tests(mcs_decimal_tests TEST_PREFIX columnstore:) -endif() -if (WITH_UNITTESTS OR WITH_DATACONVERT_UT) add_executable(dataconvert_tests dataconvert-tests.cpp) target_link_libraries(dataconvert_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${ENGINE_EXEC_LIBS} ${MARIADB_CLIENT_LIBS}) - install(TARGETS dataconvert_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) gtest_discover_tests(dataconvert_tests TEST_PREFIX columnstore:) -endif() -if (WITH_UNITTESTS OR WITH_SORTING_COMPARATORS_UT) - add_executable(comparators_tests comparators-tests.cpp) - target_link_libraries(comparators_tests ${ENGINE_LDFLAGS} ${MARIADB_CLIENT_LIBS} ${ENGINE_WRITE_LIBS} ${CPPUNIT_LIBRARIES} cppunit) - install(TARGETS comparators_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) - gtest_discover_tests(comparators_tests TEST_PREFIX columnstore:) -endif() + add_executable(rebuild_em_tests rebuild-em-tests.cpp) + target_link_libraries(rebuild_em_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${MARIADB_CLIENT_LIBS} ${ENGINE_WRITE_LIBS}) + gtest_discover_tests(rebuild_em_tests TEST_PREFIX columnstore:) -if (WITH_UNITTESTS OR WITH_SHARED_COMP_TESTS) + add_executable(compression_tests compression-tests.cpp) + target_link_libraries(compression_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${MARIADB_CLIENT_LIBS} ${ENGINE_WRITE_LIBS}) + gtest_discover_tests(compression_tests TEST_PREFIX columnstore:) + + # CPPUNIT TESTS add_executable(we_shared_components_tests shared_components_tests.cpp) add_dependencies(we_shared_components_tests loggingcpp) target_link_libraries(we_shared_components_tests ${ENGINE_LDFLAGS} ${MARIADB_CLIENT_LIBS} ${ENGINE_WRITE_LIBS} cppunit) - install(TARGETS we_shared_components_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) -endif() + #Fix Test and uncomment + #add_test(NAME columnstore:we_shared_components_tests, COMMAND we_shared_components_tests) -if (WITH_UNITTESTS OR WITH_REBUILD_EM_UT) - add_executable(rebuild_em_tests rebuild-em-tests.cpp) - target_link_libraries(rebuild_em_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${MARIADB_CLIENT_LIBS} ${ENGINE_WRITE_LIBS}) - install(TARGETS rebuild_em_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) - gtest_discover_tests(rebuild_em_tests TEST_PREFIX columnstore:) -endif() - -if (WITH_UNITTESTS OR WITH_COMPRESSION_UT) - add_executable(compression_tests compression-tests.cpp) - target_link_libraries(compression_tests ${ENGINE_LDFLAGS} ${GTEST_LIBRARIES} ${MARIADB_CLIENT_LIBS} ${ENGINE_WRITE_LIBS}) - install(TARGETS compression_tests DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) - gtest_discover_tests(compression_tests TEST_PREFIX columnstore:) + add_executable(comparators_tests comparators-tests.cpp) + target_link_libraries(comparators_tests ${ENGINE_LDFLAGS} ${MARIADB_CLIENT_LIBS} ${ENGINE_WRITE_LIBS} ${CPPUNIT_LIBRARIES} cppunit) + add_test(NAME columnstore:comparators_tests, COMMAND comparators_tests) endif() diff --git a/tests/comparators-tests.cpp b/tests/comparators-tests.cpp index 4b754dacf..f31a2526e 100644 --- a/tests/comparators-tests.cpp +++ b/tests/comparators-tests.cpp @@ -129,7 +129,7 @@ class FilterDriver : public CppUnit::TestFixture CPPUNIT_TEST_SUITE_END(); private: - // The tests creates an RG with 1 column of the cscDt type + // The tests creates an RG with 1 column of the cscDt type // then initialize RGData. After that it adds two numeric values (v1 < v2)and two NULL. // Then creates comparator structures and run a number of tests. v1 < v2 void testComparatorWithDT(execplan::CalpontSystemCatalog::ColDataType cscDt, @@ -381,31 +381,32 @@ private: idbCompare.initialize(inRG); ordering::OrderByData odbData = ordering::OrderByData(specVect, inRG); bool result = odbData(r1.getPointer(), r2.getPointer()); - std::cout << r1.toString() << " < " << r2.toString() << " is " + std::cout << r1.toString() << " < " << r2.toString() << " is " << ((result) ? "true" : "false") << std::endl; CPPUNIT_ASSERT(result == true); result = odbData(r2.getPointer(), r1.getPointer()); - std::cout << r2.toString() << " < " << r1.toString() << " is " + std::cout << r2.toString() << " < " << r1.toString() << " is " << ((result) ? "true" : "false") << std::endl; CPPUNIT_ASSERT(result == false); result = odbData(r2.getPointer(), r2.getPointer()); - std::cout << r2.toString() << " < " << r2.toString() << " is " + std::cout << r2.toString() << " < " << r2.toString() << " is " << ((result) ? "true" : "false") << std::endl; CPPUNIT_ASSERT(result == false); - // Compare value with NULL. if spec.fNf then NULLs goes first + // Compare value with NULL. if spec.fNf then NULLs goes first result = odbData(r3.getPointer(), r1.getPointer()); - std::cout << r3.toString() << " < " << r1.toString() << " is " + std::cout << r3.toString() << " < " << r1.toString() << " is " << ((result) ? "true" : "false") << std::endl; CPPUNIT_ASSERT(result == true); // Compare NULL with NULL result = odbData(r3.getPointer(), r1.getPointer()); - std::cout << r3.toString() << " < " << r3.toString() << " is " + std::cout << r3.toString() << " < " << r3.toString() << " is " << ((result) ? "true" : "false") << std::endl; CPPUNIT_ASSERT(result == true); } void INT_TEST() { +#ifdef __x86_64__ //bool generateValues = true; bool fixedValues = false; testComparatorWithDT(execplan::CalpontSystemCatalog::UTINYINT, 1, fixedValues, 20); @@ -424,6 +425,10 @@ private: testComparatorWithDT(execplan::CalpontSystemCatalog::FLOAT, 4, fixedValues, 20); testComparatorWithDT(execplan::CalpontSystemCatalog::DOUBLE, 8, fixedValues, 20); testComparatorWithDT(execplan::CalpontSystemCatalog::LONGDOUBLE, 8, fixedValues, 20); +#elif __arm__ + // TODO: add arm tests +#endif + } void FLOAT_TEST()