From 2f43247610c04be64e2c5b8888750282a0f08279 Mon Sep 17 00:00:00 2001 From: Ward Fisher Date: Mon, 28 Aug 2023 16:43:37 -0600 Subject: [PATCH] Adding a test which can be used to ensure that the AWSSDK which was discovered at configure time is functional. Still need to wire it into autotools. --- CMakeLists.txt | 29 +++++++++++++++++++++++++++++ nczarr_test/CMakeLists.txt | 16 +++++++++++++--- nczarr_test/tst_pure_awssdk.cpp | 14 ++++++++++++++ 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 nczarr_test/tst_pure_awssdk.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 53edd6238a..1c0a21d8e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2135,6 +2135,35 @@ MACRO(build_bin_test_no_prefix F) ENDIF() ENDMACRO() +# Build a test and add it to the test list. +MACRO(add_bin_test_cpp prefix F) + ADD_EXECUTABLE(${prefix}_${F} ${F}.cpp ${ARGN}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES LINKER_LANGUAGE CXX) + TARGET_LINK_LIBRARIES(${prefix}_${F} + ${ALL_TLL_LIBS} + netcdf + ) + IF(MSVC) + SET_TARGET_PROPERTIES(${prefix}_${F} + PROPERTIES LINK_FLAGS_DEBUG " /NODEFAULTLIB:MSVCRT" + ) + ENDIF() + ADD_TEST(${prefix}_${F} + ${EXECUTABLE_OUTPUT_PATH}/${prefix}_${F} + ) + IF(MSVC) + SET_PROPERTY(TEST ${prefix}_${F} PROPERTY FOLDER "tests/") + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_DEBUG + ${CMAKE_CURRENT_BINARY_DIR}) + SET_TARGET_PROPERTIES(${prefix}_${F} PROPERTIES RUNTIME_OUTPUT_DIRECTORY_RELEASE + ${CMAKE_CURRENT_BINARY_DIR}) + ENDIF() +ENDMACRO() + + +# Build a test and add it to the test list. MACRO(add_bin_test prefix F) ADD_EXECUTABLE(${prefix}_${F} ${F}.c ${ARGN}) TARGET_LINK_LIBRARIES(${prefix}_${F} diff --git a/nczarr_test/CMakeLists.txt b/nczarr_test/CMakeLists.txt index 9a877e942a..a8b464c43d 100644 --- a/nczarr_test/CMakeLists.txt +++ b/nczarr_test/CMakeLists.txt @@ -96,8 +96,18 @@ IF(ENABLE_TESTS) IF(ENABLE_S3 AND NOT WITH_S3_TESTING STREQUAL "NO") # Helper programs for testing - BUILD_BIN_TEST(s3util ${COMMONSRC}) - TARGET_INCLUDE_DIRECTORIES(s3util PUBLIC ../libnczarr) + BUILD_BIN_TEST(s3util ${COMMONSRC}) + # Pure AWS Test + IF(ENABLE_S3_AWS) + SET(TMP_CMAKE_CXX_STANDARD ${MAKE_CXX_STANDARD}) + SET(CMAKE_CXX_STANDARD 11) + ADD_EXECUTABLE(tst_pure_aws tst_pure_aws.cpp) + TARGET_LINK_LIBRARIES(tst_pure_aws ${AWSSDK_CORE_LIB_FILE}) + ADD_TEST(tst_pure_aws ${EXECUTABLE_PUTPUT_PATH}/tst_pure_aws) + + SET(CMAKE_CXX_STANDARD ${TMP_CMAKE_CXX_STANDARD}) + ENDIF(ENABLE_S3_AWS) + TARGET_INCLUDE_DIRECTORIES(s3util PUBLIC ../libnczarr) endif() SET(ncdumpchunks_SOURCE ncdumpchunks.c) @@ -143,7 +153,7 @@ IF(ENABLE_TESTS) add_sh_test(nczarr_test run_notzarr) if(ENABLE_S3) - add_sh_test(nczarr_test run_s3_cleanup) + add_sh_test(nczarr_test run_s3_cleanup) ENDIF() IF(ENABLE_FILTER_TESTING) diff --git a/nczarr_test/tst_pure_awssdk.cpp b/nczarr_test/tst_pure_awssdk.cpp new file mode 100644 index 0000000000..09adb21d1d --- /dev/null +++ b/nczarr_test/tst_pure_awssdk.cpp @@ -0,0 +1,14 @@ +#include +#include +int main(int argc, char** argv) +{ + Aws::SDKOptions options; + std::cout << "Running a pure-aws test instantiation to test the aws-cpp-sdk install.\nA failure may manifest as a hang.\n\n"; + std::cout << "\t* Testing InitAPI()\n"; + Aws::InitAPI(options); + std::cout << "\t\t* Passed.\n"; + std::cout << "\t* Testing ShutdownAPI()\n"; + Aws::ShutdownAPI(options); + std::cout << "\t\t* Passed.\n"; + return 0; +} \ No newline at end of file