| ## |
| # Copyright (c) DataStax, Inc. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| ## |
| |
| #------------------------------ |
| # Test options |
| #------------------------------ |
| |
| option(INTEGRATION_VERBOSE_LOGGING "Disable/Enable verbose integration tests console logging" OFF) |
| if(INTEGRATION_VERBOSE_LOGGING) |
| add_definitions(-DINTEGRATION_VERBOSE_LOGGING) |
| endif() |
| option(CCM_VERBOSE_LOGGING "Disable/Enable verbose CCM console logging" OFF) |
| if(CCM_VERBOSE_LOGGING) |
| add_definitions(-DCCM_VERBOSE_LOGGING) |
| endif() |
| if(WIN32) |
| option(USE_VISUAL_LEAK_DETECTOR "Use Visual Leak Detector" OFF) |
| if(USE_VISUAL_LEAK_DETECTOR) |
| add_definitions(-DUSE_VISUAL_LEAK_DETECTOR) |
| endif() |
| endif() |
| if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") |
| if(MSVC_VERSION GREATER 1800 OR MSVC_VERSION EQUAL 1800) # VS2013+/VS 12.0+ |
| add_definitions(-DGTEST_LANG_CXX11=1) |
| add_definitions(-DGTEST_HAS_TR1_TUPLE=0) |
| endif() |
| endif() |
| |
| #------------------------------ |
| # Google test framework |
| #------------------------------ |
| |
| # Build the base include paths for the tests |
| include_directories(${CASS_ROOT_DIR}/tests/src/vendor) |
| include_directories(${CASS_INCLUDE_DIR}) |
| include_directories(${CASS_SRC_DIR}) |
| include_directories(${CASS_SRC_DIR}/third_party/sparsehash/src) |
| |
| set(GOOGLE_TEST_DIR ${CASS_ROOT_DIR}/tests/src/vendor/gtest) |
| set(GOOGLE_TEST_HEADER_FILES "${GOOGLE_TEST_DIR}/gtest.h") |
| set(GOOGLE_TEST_SOURCE_FILES "${GOOGLE_TEST_DIR}/gtest-all.cc") |
| |
| source_group("Header Files\\gtest" FILES ${GOOGLE_TEST_HEADER_FILES}) |
| source_group("Source Files\\gtest" FILES ${GOOGLE_TEST_SOURCE_FILES}) |
| |
| if(MSVC AND MSVC_VERSION EQUAL 1700) |
| # Summary of tuple support for Microsoft Visual Studio: |
| # Compiler version(MS) version(cmake) Support |
| # ---------- ----------- -------------- ----------------------------- |
| # <= VS 2010 <= 10 <= 1600 Use Google Tests's own tuple. |
| # VS 2012 11 1700 std::tr1::tuple + _VARIADIC_MAX=10 |
| # VS 2013 12 1800 std::tr1::tuple |
| add_definitions(-D_VARIADIC_MAX=10) |
| endif() |
| |
| #------------------------------ |
| # Compiler flags |
| #------------------------------ |
| |
| if(CASS_USE_STATIC_LIBS) |
| add_definitions(-DCASS_STATIC) |
| endif() |
| |
| #------------------------ |
| # Test source files |
| #------------------------ |
| |
| file(GLOB INTEGRATION_TESTS_INCLUDE_FILES src/integration/*.hpp) |
| file(GLOB INTEGRATION_TESTS_CCM_INCLUDE_FILES src/integration/ccm/*.hpp) |
| file(GLOB INTEGRATION_TESTS_OBJECTS_INCLUDE_FILES src/integration/objects/*.hpp) |
| file(GLOB INTEGRATION_TESTS_POLICIES_INCLUDE_FILES src/integration/policies/*.hpp) |
| file(GLOB INTEGRATION_TESTS_VALUES_INCLUDE_FILES src/integration/values/*.hpp) |
| file(GLOB INTEGRATION_TESTS_SOURCE_FILES src/integration/*.cpp) |
| file(GLOB INTEGRATION_TESTS_CCM_SOURCE_FILES src/integration/ccm/*.cpp) |
| file(GLOB INTEGRATION_TESTS_OBJECTS_SOURCE_FILES src/integration/objects/*.cpp) |
| file(GLOB INTEGRATION_TESTS_TESTS_SOURCE_FILES src/integration/tests/*.cpp) |
| |
| source_group("Header Files" FILES ${INTEGRATION_TESTS_INCLUDE_FILES}) |
| source_group("Header Files\\ccm" FILES ${INTEGRATION_TESTS_CCM_INCLUDE_FILES}) |
| source_group("Header Files\\objects" FILES ${INTEGRATION_TESTS_OBJECTS_INCLUDE_FILES}) |
| source_group("Header Files\\policies" FILES ${INTEGRATION_TESTS_POLICIES_INCLUDE_FILES}) |
| source_group("Header Files\\values" FILES ${INTEGRATION_TESTS_VALUES_INCLUDE_FILES}) |
| source_group("Source Files" FILES ${INTEGRATION_TESTS_SOURCE_FILES}) |
| source_group("Source Files\\ccm" FILES ${INTEGRATION_TESTS_CCM_SOURCE_FILES}) |
| source_group("Source Files\\objects" FILES ${INTEGRATION_TESTS_OBJECTS_SOURCE_FILES}) |
| source_group("Source Files\\tests" FILES ${INTEGRATION_TESTS_TESTS_SOURCE_FILES}) |
| |
| # Add utility functionality from the Cassandra driver |
| set(CASS_SRC_DIR ${CASS_ROOT_DIR}/src) |
| set(CPP_DRIVER_HEADER_SOURCE_FILES ${CASS_SRC_DIR}/atomic.hpp |
| ${CASS_SRC_DIR}/macros.hpp |
| ${CASS_SRC_DIR}/ref_counted.hpp |
| ${CASS_SRC_DIR}/scoped_lock.hpp |
| ${CASS_SRC_DIR}/scoped_ptr.hpp |
| ${CASS_SRC_DIR}/utils.hpp) |
| set(CPP_DRIVER_HEADER_SOURCE_ATOMIC_FILES ${CASS_SRC_DIR}/atomic/atomic_boost.hpp |
| ${CASS_SRC_DIR}/atomic/atomic_intrinsics.hpp |
| ${CASS_SRC_DIR}/atomic/atomic_intrinsics_gcc.hpp |
| ${CASS_SRC_DIR}/atomic/atomic_intrinsics_msvc.hpp) |
| set(CPP_DRIVER_SOURCE_FILES ${CASS_SRC_DIR}/utils.cpp) |
| source_group("Header Files\\driver" FILES ${CASS_API_HEADER_FILES}) |
| source_group("Header Files\\driver" FILES ${CPP_DRIVER_HEADER_SOURCE_FILES}) |
| source_group("Header Files\\driver\\atomic" FILES ${CPP_DRIVER_HEADER_SOURCE_ATOMIC_FILES}) |
| source_group("Source Files\\driver" FILES ${CPP_DRIVER_SOURCE_FILES}) |
| |
| # Group dependencies |
| source_group("Source Files/dependencies/libuv" FILES ${LIBUV_INCLUDE_FILES}) |
| |
| set(COMMON_INTEGRATION_TEST_INCLUDE_FILES ${INTEGRATION_TESTS_INCLUDE_FILES} |
| ${INTEGRATION_TESTS_CCM_INCLUDE_FILES} |
| ${INTEGRATION_TESTS_OBJECTS_INCLUDE_FILES} |
| ${INTEGRATION_TESTS_POLICIES_INCLUDE_FILES} |
| ${INTEGRATION_TESTS_VALUES_INCLUDE_FILES} |
| ${CCM_INCLUDE_FILES} |
| ${CASS_API_HEADER_FILES} |
| ${CPP_DRIVER_INCLUDE_FILES} |
| ${CPP_DRIVER_HEADER_SOURCE_FILES} |
| ${CPP_DRIVER_HEADER_SOURCE_ATOMIC_FILES} |
| ${GOOGLE_TEST_HEADER_FILES} |
| ${LIBUV_INCLUDE_FILES} |
| ${LIBSSH2_INCLUDE_FILES} |
| ${OPENSSL_INCLUDE_FILES}) |
| |
| set(COMMON_INTEGRATION_TEST_SOURCE_FILES ${INTEGRATION_TESTS_SOURCE_FILES} |
| ${INTEGRATION_TESTS_CCM_SOURCE_FILES} |
| ${INTEGRATION_TESTS_OBJECTS_SOURCE_FILES} |
| ${INTEGRATION_TESTS_TESTS_SOURCE_FILES} |
| ${CPP_DRIVER_SOURCE_FILES} |
| ${GOOGLE_TEST_SOURCE_FILES}) |
| |
| #------------------------ |
| # Subdirectories |
| #------------------------ |
| |
| if(CASS_BUILD_INTEGRATION_TESTS) |
| configure_file(embedded-ads.jar ${CMAKE_BINARY_DIR} COPYONLY) |
| if(WIN32) |
| # Copy the embedded ADS to additional locations for use with IDE |
| if(NOT EXISTS ${CMAKE_BINARY_DIR}/tests) |
| file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/tests) |
| endif() |
| configure_file(embedded-ads.jar ${CMAKE_BINARY_DIR}/tests COPYONLY) |
| endif() |
| |
| add_subdirectory(src/integration) |
| endif() |
| |
| if(CASS_BUILD_UNIT_TESTS) |
| add_subdirectory(src/unit) |
| endif() |