diff --git a/CMakeLists.txt b/CMakeLists.txt index 31b42d272652fc3405008585d32cea18e5a1403a..e0caaeb6cc52d914648f1c6f2acc48a196d447c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -26,6 +26,7 @@ project(libcaosdb_inttests set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # dependency management with conan diff --git a/README.md b/README.md index 551117a3b4eb123829e43fb3cefc15d04d8fc19c..9d2b880004b551f8e32eb0254e47377744584e69 100644 --- a/README.md +++ b/README.md @@ -12,11 +12,17 @@ Integration tests for caosdb-cpplib and the caosdb-server # Run tests +## Prerequisite +Create a local conan package from the caosdb-cpplib repository + +## Build & Execution 1. `mkdir build && cd build/` 2. `conan install .. -s "compiler.libcxx=libstdc++11"` 3. `cmake -B . ..` 4. `cmake --build .` 5. Setup env vars + - CAOSDB_SERVER_GRPC_PORT_HTTP + - CAOSDB_SERVER_HOST + - CAOSDB_SERVER_GRPC_PORT_HTTPS + - CAOSDB_SERVER_CERT 6. Run with `ctest` in the build directory. - - diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8183e24afdd89c68853404c7da3d2d0a0c911a97..0cac504a69a833ca2033c9086629e2a7324097f4 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -24,6 +24,7 @@ set(test_cases test_connection test_transaction + #test_file_transmission TODO add once fixed test_ccaosdb ) @@ -82,7 +83,7 @@ if(LINTING) "--warnings-as-errors=*" "--fix") set(_CMAKE_CXX_CLANG_TIDY_CHECKS - "--checks=*,-fuchsia-*,-llvmlibc-*,-cert-err58-cpp,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-modernize-use-trailing-return-type,-google-readability-avoid-underscore-in-googletest-name,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto,-readability-function-cognitive-complexity,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-no-array-decay,-cppcoreguidelines-non-private-member-variables-in-classes,-misc-non-private-member-variables-in-classes") + "--checks=*,-fuchsia-*,-llvmlibc-*,-cert-err58-cpp,-cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory,-modernize-use-trailing-return-type,-google-readability-avoid-underscore-in-googletest-name,-cppcoreguidelines-avoid-magic-numbers,-readability-magic-numbers,-cppcoreguidelines-avoid-goto,-hicpp-avoid-goto,-readability-function-cognitive-complexity,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-non-private-member-variables-in-classes,-misc-non-private-member-variables-in-classes,-cppcoreguidelines-pro-type-vararg,-cppcoreguidelines-pro-bounds-array-to-pointer-decay,-hicpp-no-array-decay") endif() else() message(STATUS "LINTING is OFF") diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index 6f8eb10d78561f0eb493ff01f592f6a1fcfed3c6..47b26bed8601eb7f8c6dbda034ec2233641f669f 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -48,12 +48,12 @@ TEST(test_ccaosdb, test_count_query) { caosdb_connection_connection connection; int return_code( - caosdb_connection_connection_manager_get_default_connection(&connection)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); // COUNT query with an empty result @@ -67,7 +67,7 @@ TEST(test_ccaosdb, test_count_query) { long dummy(-1); // NOLINT long *count = &dummy; // NOLINT return_code = - caosdb_transaction_transaction_get_count_result(&transaction, count); + caosdb_transaction_transaction_get_count_result(&transaction, count); EXPECT_EQ(return_code, 0); EXPECT_EQ(*count, 0); @@ -78,12 +78,12 @@ TEST(test_ccaosdb, test_count_query) { TEST(test_ccaosdb, test_query) { caosdb_connection_connection connection; int return_code( - caosdb_connection_connection_manager_get_default_connection(&connection)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); return_code = caosdb_transaction_transaction_query(&transaction, @@ -95,7 +95,7 @@ TEST(test_ccaosdb, test_query) { caosdb_transaction_result_set result_set; return_code = - caosdb_transaction_transaction_get_result_set(&transaction, &result_set); + caosdb_transaction_transaction_get_result_set(&transaction, &result_set); EXPECT_EQ(return_code, 0); int dummy(-1); @@ -111,16 +111,16 @@ TEST(test_ccaosdb, test_query) { TEST(test_ccaosdb, test_single_id_retrieve) { caosdb_connection_connection connection; int return_code( - caosdb_connection_connection_manager_get_default_connection(&connection)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); return_code = - caosdb_transaction_transaction_retrieve_by_id(&transaction, "21"); + caosdb_transaction_transaction_retrieve_by_id(&transaction, "21"); EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); return_code = caosdb_transaction_transaction_execute(&transaction); @@ -157,17 +157,17 @@ TEST(test_ccaosdb, test_single_id_retrieve) { TEST(test_ccaosdb, test_multi_id_retrieve) { caosdb_connection_connection connection; int return_code( - caosdb_connection_connection_manager_get_default_connection(&connection)); + caosdb_connection_connection_manager_get_default_connection(&connection)); EXPECT_EQ(return_code, 0); caosdb_transaction_transaction transaction; - return_code = caosdb_connection_connection_create_transaction(&connection, - &transaction); + return_code = + caosdb_connection_connection_create_transaction(&connection, &transaction); EXPECT_EQ(return_code, 0); const char *ids[] = {"20", "21", "22"}; // NOLINT return_code = - caosdb_transaction_transaction_retrieve_by_ids(&transaction, ids, 3); + caosdb_transaction_transaction_retrieve_by_ids(&transaction, ids, 3); EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); return_code = caosdb_transaction_transaction_execute(&transaction); @@ -176,7 +176,7 @@ TEST(test_ccaosdb, test_multi_id_retrieve) { caosdb_transaction_result_set result_set; return_code = - caosdb_transaction_transaction_get_result_set(&transaction, &result_set); + caosdb_transaction_transaction_get_result_set(&transaction, &result_set); EXPECT_EQ(return_code, 0); int dummy(-1); diff --git a/test/test_file_transmission.cpp b/test/test_file_transmission.cpp index 42911bc520191a0880b6d80d8d122134413a5201..eab5b785fcd15510b7aebce0d8a72bc78fb05fff 100644 --- a/test/test_file_transmission.cpp +++ b/test/test_file_transmission.cpp @@ -36,6 +36,12 @@ using caosdb::entity::v1alpha1::RegisterFileUploadResponse; using caosdb::entity::v1alpha1::RegistrationStatus; using caosdb::entity::v1alpha1::TransmissionStatus; + +// TODO(tf) this file is currently not used (see CMakeLists.txt) +// Is it still necessary or is it obsolete due to test_transaction.cpp? +// RegisterFileDownloadResponse is currently not defined by proto or the h +// file. + class test_file_transmission : public ::testing::Test { protected: void SetUp() override {} diff --git a/test/test_transaction.cpp b/test/test_transaction.cpp index b6d2876e4792bc6fce738a25bc494861a9453680..195430800c8ce5016e1c606b8b60a5f4543f4ee7 100644 --- a/test/test_transaction.cpp +++ b/test/test_transaction.cpp @@ -21,6 +21,7 @@ #include "caosdb/connection.h" // for Connection, ConnectionManager #include "caosdb/data_type.h" // for AtomicDataType #include "caosdb/entity.h" // for Entity, Messages, Message +#include "caosdb/file_transmission/file_reader.h" // for FileReader #include "caosdb/file_transmission/file_writer.h" // for FileWriter #include "caosdb/message_code.h" // for ENTITY_DOES_NOT_EXIST, Messag... #include "caosdb/status_code.h" // for SUCCESS, StatusCode @@ -670,9 +671,18 @@ TEST_F(test_transaction, test_file_upload) { const auto &inserted_file = insert_results.at(0); EXPECT_FALSE(inserted_file.GetId().empty()); EXPECT_FALSE(inserted_file.HasErrors()); + + // Check file once more + auto count_query(connection->CreateTransaction()); + count_query->Query("COUNT FILE WHICH IS STORED AT 'test.txt'"); + count_query->ExecuteAsynchronously(); + auto count_and_retrieve_status = count_query->WaitForIt(); + ASSERT_TRUE(count_and_retrieve_status.IsTerminated()); + ASSERT_FALSE(count_and_retrieve_status.IsError()); + EXPECT_EQ(count_query->GetCountResult(), 1); } -TEST_F(test_transaction, test_file_download) { +TEST_F(test_transaction, test_file_up_n_download) { const auto &connection = caosdb::connection::ConnectionManager::GetDefaultConnection(); @@ -705,6 +715,14 @@ TEST_F(test_transaction, test_file_download) { ASSERT_FALSE(downloaded_file.HasErrors()); EXPECT_EQ(downloaded_file.GetLocalPath().string(), test_download_file_1.string()); + + FileReader reader_remote(test_upload_file_1); + std::string buffer_local(1024, 'c'); + std::string buffer_remote(1024, 'c'); + for (int i = 0; i < 8; i++) { + reader_remote.read(buffer_remote); + EXPECT_EQ(buffer_remote, buffer_local); + } } } // namespace caosdb::transaction