From 613b70653a4fa620bfbca055e6d17c8d5479d03f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <henrik@trineo.org> Date: Mon, 23 Aug 2021 18:51:19 +0200 Subject: [PATCH] TST: add int test for file up and download --- test/test_ccaosdb.cpp | 88 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 81 insertions(+), 7 deletions(-) diff --git a/test/test_ccaosdb.cpp b/test/test_ccaosdb.cpp index 4a3c55e..58ddad8 100644 --- a/test/test_ccaosdb.cpp +++ b/test/test_ccaosdb.cpp @@ -18,24 +18,46 @@ * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <https://www.gnu.org/licenses/>. */ -#include "caosdb/message_code.h" // for MessageCode -#include "caosdb/status_code.h" // for StatusCode -#include "ccaosdb.h" // for caosdb_info_version_info, caosdb_... -#include <cstring> // for strcmp -#include <gtest/gtest-message.h> // for Message -#include <gtest/gtest-test-part.h> // for TestPartResult +#include "caosdb/file_transmission/file_reader.h" // for FileReader +#include "caosdb/file_transmission/file_writer.h" // for FileWriter +#include "caosdb/message_code.h" // for MessageCode +#include "caosdb/status_code.h" // for StatusCode +#include "ccaosdb.h" // for caosdb_info_version_info, caosdb_... +#include <boost/filesystem/path.hpp> // for path +#include <boost/filesystem/path_traits.hpp> // for filesystem +#include <cstring> // for strcmp +#include <gtest/gtest-message.h> // for Message +#include <gtest/gtest-test-part.h> // for TestPartResult #include <gtest/gtest_pred_impl.h> // for Test, EXPECT_EQ, SuiteApiResolver #include <iostream> #include <memory> // for allocator, unique_ptr +namespace fs = boost::filesystem; class test_ccaosdb : public ::testing::Test { protected: - void SetUp() override {} + fs::path test_upload_file_1; + fs::path test_download_file_1; + + void SetUp() override { + test_upload_file_1 = fs::path("test_upload_file_1_delete_me.dat"); + test_download_file_1 = fs::path("test_download_file_1_delete_me.dat"); + + // fill the file that shall be uploaded + caosdb::transaction::FileWriter writer(test_upload_file_1); + std::string buffer(1024, 'c'); + for (int i = 0; i < 8; i++) { + writer.write(buffer); + } + } /** * Delete everything with id>99, C style */ void TearDown() override { + // delete files + fs::remove(test_upload_file_1); + fs::remove(test_download_file_1); + caosdb_connection_connection connection; caosdb_connection_connection_manager_get_default_connection(&connection); @@ -581,3 +603,55 @@ TEST_F(test_ccaosdb, test_insert_with_prop_and_parent) { caosdb_transaction_delete_transaction(&prop_insertion); caosdb_entity_delete_entity(&original_prop); } + +TEST_F(test_ccaosdb, test_up_n_download_file) { + + caosdb_connection_connection connection; + caosdb_connection_connection_manager_get_default_connection(&connection); + + caosdb_entity_entity original_entity; + caosdb_entity_create_entity(&original_entity); + caosdb_entity_entity_set_role(&original_entity, "FILE"); + caosdb_entity_entity_set_local_path(&original_entity, + test_upload_file_1.c_str()); + caosdb_entity_entity_set_file_path(&original_entity, "/some/file"); + + caosdb_transaction_transaction insert_transaction; + caosdb_connection_connection_create_transaction(&connection, + &insert_transaction); + caosdb_transaction_transaction_insert_entity(&insert_transaction, + &original_entity); + int return_code(caosdb_transaction_transaction_execute(&insert_transaction)); + EXPECT_EQ(return_code, 0); + + caosdb_transaction_result_set rec_results; + caosdb_transaction_transaction_get_result_set(&insert_transaction, + &rec_results); + caosdb_entity_entity inserted_rec; + caosdb_transaction_result_set_at(&rec_results, &inserted_rec, 0); + char *rec_id = nullptr; // NOLINT + caosdb_entity_entity_get_id(&inserted_rec, &rec_id); + + caosdb_entity_entity download_entity; + caosdb_entity_create_entity(&download_entity); + caosdb_entity_entity_set_role(&download_entity, "FILE"); + caosdb_entity_entity_set_local_path(&download_entity, "lol"); + caosdb_entity_entity_set_file_path(&download_entity, "/some/file"); + + caosdb_transaction_transaction retrieve_transaction_1; + caosdb_connection_connection_create_transaction(&connection, + &retrieve_transaction_1); + EXPECT_EQ(return_code, 0); + // return_code = caosdb_transaction_transaction_retrieve_by_id( + // &retrieve_transaction_1, rec_id); + return_code = caosdb_transaction_transaction_retrieve_and_download_file_by_id( + &retrieve_transaction_1, rec_id, test_download_file_1.c_str()); + EXPECT_EQ(return_code, caosdb::StatusCode::GO_ON); + return_code = caosdb_transaction_transaction_execute(&retrieve_transaction_1); + EXPECT_EQ(return_code, 0); + + caosdb_transaction_result_set result_set; + return_code = caosdb_transaction_transaction_get_result_set( + &retrieve_transaction_1, &result_set); + EXPECT_EQ(return_code, 0); +} -- GitLab