blob: 1c0c44f47eb8d90911974144975ee3ce4580c813 [file] [log] [blame]
##
# 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()