Skip to content
Snippets Groups Projects

F multi retrieve

Merged Timm Fitschen requested to merge f-multi-retrieve into dev
All threads resolved!
1 file
+ 3
3
Compare changes
  • Side-by-side
  • Inline
+ 57
3
/*
*
* This file is a part of the CaosDB Project.
*
* Copyright (C) 2021 Timm Fitschen <t.fitschen@indiscale.com>
@@ -17,7 +16,6 @@
*
* 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/configuration.h" // for InsecureConnectionConfig...
#include "caosdb/connection.h" // for Connection
@@ -31,7 +29,10 @@
#include "gtest/gtest-message.h" // for Message
#include "gtest/gtest-test-part.h" // for SuiteApiResolver, TestPa...
#include "gtest/gtest_pred_impl.h" // for Test, TestInfo, TEST
#include <memory> // for allocator, unique_ptr
#include <iostream>
#include <memory> // for allocator, unique_ptr
#include <string> // for string, basic_string
#include <vector> // for vector
namespace caosdb::transaction {
using caosdb::configuration::InsecureConnectionConfiguration;
@@ -73,9 +74,62 @@ TEST(test_transaction, test_unavailable) {
transaction->RetrieveById("100");
transaction->ExecuteAsynchronously();
EXPECT_EQ(transaction->GetRequestCount(), 1);
auto status = transaction->WaitForIt();
EXPECT_EQ(status.GetCode(), StatusCode::CONNECTION_ERROR);
}
TEST(test_transaction, test_retrieve_by_ids) {
const auto *host = "localhost";
auto configuration = InsecureConnectionConfiguration(host, 8000);
Connection connection(configuration);
auto transaction = connection.CreateTransaction();
std::vector<std::string> ids = {"100", "101", "102"};
transaction->RetrieveById(ids.begin(), ids.end());
EXPECT_EQ(transaction->GetRequestCount(), 3);
}
TEST(test_transaction, test_multi_result_set_empty) {
MultiTransactionResponse response;
MultiResultSet rs(&response);
EXPECT_EQ(rs.Size(), 0);
}
TEST(test_transaction, test_multi_result_set_one) {
MultiTransactionResponse response;
response.add_responses()
->mutable_retrieve_response()
->mutable_entity()
->set_id("100");
MultiResultSet rs(&response);
EXPECT_EQ(rs.Size(), 1);
EXPECT_EQ(rs.At(0).GetId(), "100");
}
TEST(test_transaction, test_multi_result_set_three) {
MultiTransactionResponse response;
response.add_responses()
->mutable_retrieve_response()
->mutable_entity()
->set_id("100");
auto *entity_with_error =
response.add_responses()->mutable_retrieve_response()->mutable_entity();
entity_with_error->set_id("101");
entity_with_error->add_errors()->set_code(1);
response.add_responses()
->mutable_retrieve_response()
->mutable_entity()
->set_id("102");
MultiResultSet rs(&response);
EXPECT_EQ(rs.Size(), 3);
EXPECT_TRUE(rs.At(1).HasErrors());
std::cout << rs.At(1).ToString();
}
} // namespace caosdb::transaction
Loading