diff --git a/common/cpp/include/asapo/database/database.h b/common/cpp/include/asapo/database/database.h index e21af48757b4774baf42d7435bb4b01a020c00ae..61c32e0dcec5a7867d0f6d9c87aff8fb3846657c 100644 --- a/common/cpp/include/asapo/database/database.h +++ b/common/cpp/include/asapo/database/database.h @@ -14,7 +14,8 @@ constexpr char kDBMetaCollectionName[] = "meta"; class Database { public: virtual Error Connect(const std::string& address, const std::string& database) = 0; - virtual Error Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates) const = 0; + virtual Error Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates, + uint64_t* id_inserted) const = 0; virtual Error InsertMeta(const std::string& collection, const std::string& id, const uint8_t* data, uint64_t size, MetaIngestMode mode) const = 0; virtual Error InsertAsDatasetMessage(const std::string& collection, const MessageMeta& file, diff --git a/common/cpp/include/asapo/unittests/MockDatabase.h b/common/cpp/include/asapo/unittests/MockDatabase.h index f8c2464364c7eaf7ebec9c3d26fd622a3de3542b..b8f94b260fb13f4554ea86e71f59166a9b32b4bd 100644 --- a/common/cpp/include/asapo/unittests/MockDatabase.h +++ b/common/cpp/include/asapo/unittests/MockDatabase.h @@ -15,8 +15,9 @@ class MockDatabase : public Database { return Error{Connect_t(address, database)}; } - Error Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates) const override { - return Error{Insert_t(collection, file, ignore_duplicates)}; + Error Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates, + uint64_t* id_inserted) const override { + return Error{Insert_t(collection, file, ignore_duplicates, id_inserted)}; } Error InsertAsDatasetMessage(const std::string& collection, const MessageMeta& file, @@ -25,7 +26,7 @@ class MockDatabase : public Database { } MOCK_METHOD2(Connect_t, ErrorInterface * (const std::string&, const std::string&)); - MOCK_CONST_METHOD3(Insert_t, ErrorInterface * (const std::string&, const MessageMeta&, bool)); + MOCK_CONST_METHOD4(Insert_t, ErrorInterface * (const std::string&, const MessageMeta&, bool, uint64_t*)); MOCK_CONST_METHOD4(InsertAsDatasetMessage_t, ErrorInterface * (const std::string&, const MessageMeta&, uint64_t, bool)); diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp index ab37394c0a6c7b2e3d43b07300df267fb368d9ad..423122f9aca51901b7792d61a30f5fd89f50001f 100644 --- a/common/cpp/src/database/mongodb_client.cpp +++ b/common/cpp/src/database/mongodb_client.cpp @@ -338,7 +338,7 @@ Error MongoDBClient::GetNextId(const std::string& stream, uint64_t* id) const { Error MongoDBClient::InsertWithAutoId(const MessageMeta& file, const std::string& collection, - bool ignore_duplicates) const { + uint64_t* id_inserted) const { bson_error_t error; uint64_t id; @@ -349,10 +349,11 @@ Error MongoDBClient::InsertWithAutoId(const MessageMeta& file, auto meta_new = file; meta_new.id = id; - return Insert(current_collection_name_, meta_new, ignore_duplicates); + return Insert(current_collection_name_, meta_new, false, id_inserted); } -Error MongoDBClient::Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates) const { +Error MongoDBClient::Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates, + uint64_t* id_inserted) const { if (!connected_) { return DBErrorTemplates::kNotConnected.Generate(); } @@ -363,7 +364,7 @@ Error MongoDBClient::Insert(const std::string& collection, const MessageMeta& fi } if (file.id == 0) { - return InsertWithAutoId(file, collection, ignore_duplicates); + return InsertWithAutoId(file, collection, id_inserted); } auto document = PrepareBsonDocument(file, &err); @@ -371,7 +372,11 @@ Error MongoDBClient::Insert(const std::string& collection, const MessageMeta& fi return err; } - return InsertBsonDocument(document, ignore_duplicates); + err = InsertBsonDocument(document, ignore_duplicates); + if (!err && id_inserted) { + *id_inserted = file.id; + } + return err; } MongoDBClient::~MongoDBClient() { diff --git a/common/cpp/src/database/mongodb_client.h b/common/cpp/src/database/mongodb_client.h index d3801cdb3ba1b0f3f7c092ce450b34ce008fa841..d97bd21f2c38fa579a64032eccb1cedddd7feeb8 100644 --- a/common/cpp/src/database/mongodb_client.h +++ b/common/cpp/src/database/mongodb_client.h @@ -47,7 +47,8 @@ class MongoDBClient final : public Database { public: MongoDBClient(); Error Connect(const std::string& address, const std::string& database) override; - Error Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates) const override; + Error Insert(const std::string& collection, const MessageMeta& file, bool ignore_duplicates, + uint64_t* id_inserted) const override; Error InsertAsDatasetMessage(const std::string& collection, const MessageMeta& file, uint64_t dataset_size, bool ignore_duplicates) const override; Error InsertMeta(const std::string& collection, const std::string& id, const uint8_t* data, uint64_t size, @@ -84,7 +85,7 @@ class MongoDBClient final : public Database { Error DeleteCollection(const std::string& name) const; Error DeleteCollections(const std::string& prefix) const; Error DeleteDocumentsInCollection(const std::string& collection_name, const std::string& querystr) const; - Error InsertWithAutoId(const MessageMeta& file, const std::string& collection, bool ignore_duplicates) const; + Error InsertWithAutoId(const MessageMeta& file, const std::string& collection, uint64_t* id_inserted) const; }; struct TransactionContext { diff --git a/consumer/tools/folder_to_db/src/folder_db_importer.cpp b/consumer/tools/folder_to_db/src/folder_db_importer.cpp index 833ade112f4e6aa09a6b19f4a732a7b6ac889230..ed0bdf12a3d7a8946f65c523ea3184745e6cfd6d 100644 --- a/consumer/tools/folder_to_db/src/folder_db_importer.cpp +++ b/consumer/tools/folder_to_db/src/folder_db_importer.cpp @@ -21,7 +21,7 @@ Error FolderToDbImporter::ConnectToDb(const std::unique_ptr<asapo::Database>& db Error FolderToDbImporter::ImportSingleFile(const std::unique_ptr<asapo::Database>& db, const MessageMeta& file) const { - return db->Insert(std::string(kDBDataCollectionNamePrefix) + "_default", file, ignore_duplicates_); + return db->Insert(std::string(kDBDataCollectionNamePrefix) + "_default", file, ignore_duplicates_, nullptr); } Error FolderToDbImporter::ImportFilelistChunk(const std::unique_ptr<asapo::Database>& db, diff --git a/consumer/tools/folder_to_db/unittests/test_folder_to_db.cpp b/consumer/tools/folder_to_db/unittests/test_folder_to_db.cpp index f14a72dd418cfac576bf864ed3b6434ce72a4442..59a46d881e99784a9dfc2c98a48ca998c059b46d 100644 --- a/consumer/tools/folder_to_db/unittests/test_folder_to_db.cpp +++ b/consumer/tools/folder_to_db/unittests/test_folder_to_db.cpp @@ -177,7 +177,7 @@ TEST_F(FolderDBConverterTests, ErrorWhenCannotGetFileList) { TEST_F(FolderDBConverterTests, PassesIgnoreDuplicates) { - EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, _, true)).Times(3); + EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, _, true, _)).Times(3); converter.IgnoreDuplicates(true); converter.Convert(uri, folder, db_name); @@ -186,7 +186,7 @@ TEST_F(FolderDBConverterTests, PassesIgnoreDuplicates) { TEST_F(FolderDBConverterTests, ErrorWhenCannotImportFileListToDb) { - EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(_, _, _)). + EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(_, _, _, _)). WillOnce(testing::Return(asapo::DBErrorTemplates::kInsertError.Generate().release())); auto error = converter.Convert(uri, folder, db_name); @@ -205,7 +205,7 @@ MATCHER_P(CompareMessageMeta, file, "") { TEST_F(FolderDBConverterTests, PassesFileListToInsert) { for (auto& file : message_metas) { - EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(file), _)). + EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(file), _, _)). WillOnce(testing::Return(nullptr)); } @@ -216,11 +216,11 @@ TEST_F(FolderDBConverterTests, PassesFileListToInsert) { TEST_F(FolderDBConverterTests, PassesFileListToInsertInParallel3by3) { - EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[0]), _)). + EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[0]), _, _)). WillOnce(testing::Return(nullptr)); - EXPECT_CALL(*(mock_dbf->db[1]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[1]), _)). + EXPECT_CALL(*(mock_dbf->db[1]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[1]), _, _)). WillOnce(testing::Return(nullptr)); - EXPECT_CALL(*(mock_dbf->db[2]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[2]), _)). + EXPECT_CALL(*(mock_dbf->db[2]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[2]), _, _)). WillOnce(testing::Return(nullptr)); converter.SetNParallelTasks(3, false); @@ -230,11 +230,11 @@ TEST_F(FolderDBConverterTests, PassesFileListToInsertInParallel3by3) { TEST_F(FolderDBConverterTests, PassesFileListToInsertInParallel3by2) { - EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[0]), _)). + EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[0]), _, _)). WillOnce(testing::Return(nullptr)); - EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[1]), _)). + EXPECT_CALL(*(mock_dbf->db[0]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[1]), _, _)). WillOnce(testing::Return(nullptr)); - EXPECT_CALL(*(mock_dbf->db[1]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[2]), _)). + EXPECT_CALL(*(mock_dbf->db[1]), Insert_t(expected_collection_name, CompareMessageMeta(message_metas[2]), _, _)). WillOnce(testing::Return(nullptr)); converter.SetNParallelTasks(2, false); @@ -244,7 +244,7 @@ TEST_F(FolderDBConverterTests, PassesFileListToInsertInParallel3by2) { TEST_F(FolderDBConverterTests, ComputesStatistics) { - EXPECT_CALL(*mock_dbf->db[0], Insert_t(_, _, false)). + EXPECT_CALL(*mock_dbf->db[0], Insert_t(_, _, false, _)). Times(message_metas.size()). WillRepeatedly(testing::Return(nullptr)); diff --git a/producer/api/cpp/include/asapo/producer/common.h b/producer/api/cpp/include/asapo/producer/common.h index 5b2da89b06ec02a429928c484e516f1be3c1025b..7ea9293816fb3db9bdcbf36a6e4922706a916697 100644 --- a/producer/api/cpp/include/asapo/producer/common.h +++ b/producer/api/cpp/include/asapo/producer/common.h @@ -25,26 +25,29 @@ enum class RequestHandlerType { kFilesystem }; - struct MessageHeader { MessageHeader() {}; MessageHeader(uint64_t message_id_i, uint64_t data_size_i, std::string file_name_i, std::string user_metadata_i = "", uint64_t dataset_substream_i = 0, - uint64_t dataset_size_i = 0 ): + uint64_t dataset_size_i = 0, + bool auto_id_i = false): message_id{message_id_i}, data_size{data_size_i}, file_name{std::move(file_name_i)}, user_metadata{std::move(user_metadata_i)}, dataset_substream{dataset_substream_i}, - dataset_size{dataset_size_i} {}; + dataset_size{dataset_size_i}, + auto_id{auto_id_i} {}; uint64_t message_id = 0; uint64_t data_size = 0; std::string file_name; std::string user_metadata; uint64_t dataset_substream = 0; uint64_t dataset_size = 0; + bool auto_id = false; }; + } #endif //ASAPO_PRODUCER_COMMON_H diff --git a/producer/api/cpp/src/producer_impl.cpp b/producer/api/cpp/src/producer_impl.cpp index a0f2c7477e40b883bf057697c7527e83cc5f8620..26ed89d549a99c83b6da4f8e254603982da299f0 100644 --- a/producer/api/cpp/src/producer_impl.cpp +++ b/producer/api/cpp/src/producer_impl.cpp @@ -69,12 +69,7 @@ Error CheckIngestMode(uint64_t ingest_mode) { return nullptr; } -Error CheckProducerRequest(const MessageHeader& message_header, uint64_t ingest_mode, const std::string& stream) { - - if (stream.empty()) { - return ProducerErrorTemplates::kWrongInput.Generate("stream empty"); - } - +Error CheckFileNameInRequest(const MessageHeader& message_header) { if (message_header.file_name.size() > kMaxMessageSize) { return ProducerErrorTemplates::kWrongInput.Generate("too long filename"); } @@ -82,13 +77,53 @@ Error CheckProducerRequest(const MessageHeader& message_header, uint64_t ingest_ if (message_header.file_name.empty()) { return ProducerErrorTemplates::kWrongInput.Generate("empty filename"); } + return nullptr; +} + +Error CheckDatasetInRequest(const MessageHeader& message_header) { + if (!message_header.dataset_substream) { + return nullptr; + } - if (message_header.dataset_substream > 0 && message_header.dataset_size == 0) { + if (message_header.dataset_size == 0) { return ProducerErrorTemplates::kWrongInput.Generate("dataset dimensions"); } - if (message_header.message_id == 0) { - return ProducerErrorTemplates::kWrongInput.Generate("message id should be positive"); + if (message_header.auto_id) { + return ProducerErrorTemplates::kWrongInput.Generate("auto id mode not implemented for datasets"); + } + + return nullptr; +} + +Error CheckMessageIdInRequest(const MessageHeader& message_header) { + if (message_header.auto_id) { + if (message_header.message_id) { + return ProducerErrorTemplates::kWrongInput.Generate("message id should be 0 for auto id mode"); + } + } else { + if (message_header.message_id == 0) { + return ProducerErrorTemplates::kWrongInput.Generate("message id should be positive"); + } + } + return nullptr; +} + +Error CheckProducerRequest(const MessageHeader& message_header, uint64_t ingest_mode, const std::string& stream) { + if (stream.empty()) { + return ProducerErrorTemplates::kWrongInput.Generate("stream empty"); + } + + if (auto err = CheckFileNameInRequest(message_header)) { + return err; + } + + if (auto err = CheckDatasetInRequest(message_header)) { + return err; + } + + if (auto err = CheckMessageIdInRequest(message_header)) { + return err; } return CheckIngestMode(ingest_mode); @@ -161,12 +196,12 @@ Error ProducerImpl::Send(const MessageHeader& message_header, return HandleErrorFromPool(std::move(err), manage_data_memory); } -bool WandTransferData(uint64_t ingest_mode) { +bool WantTransferData(uint64_t ingest_mode) { return ingest_mode & IngestModeFlags::kTransferData; } Error CheckData(uint64_t ingest_mode, const MessageHeader& message_header, const MessageData* data) { - if (WandTransferData(ingest_mode)) { + if (WantTransferData(ingest_mode)) { if (*data == nullptr) { return ProducerErrorTemplates::kWrongInput.Generate("need data for this ingest mode"); } diff --git a/producer/api/cpp/unittests/test_producer_impl.cpp b/producer/api/cpp/unittests/test_producer_impl.cpp index 216ac1a73ff0046adee313392c71dcc5b22391d4..667f3723a93914d6de35647ada6caf180c7df49d 100644 --- a/producer/api/cpp/unittests/test_producer_impl.cpp +++ b/producer/api/cpp/unittests/test_producer_impl.cpp @@ -164,6 +164,27 @@ TEST_F(ProducerImplTests, ErrorIfZeroDataSize) { ASSERT_THAT(err_data, Ne(nullptr)); } +TEST_F(ProducerImplTests, ErrorIfBothIdAndAutoIdSet) { + asapo::MessageData data = asapo::MessageData{new uint8_t[100]}; + asapo::MessageHeader message_header{1, 100, expected_fullpath, "", 0, 0, true}; + auto err = producer.Send(message_header, std::move(data), asapo::kDefaultIngestMode, "default", nullptr); + ASSERT_THAT(err, Eq(asapo::ProducerErrorTemplates::kWrongInput)); + auto err_data = static_cast<asapo::OriginalData*>(err->GetCustomData()); + ASSERT_THAT(err_data, Ne(nullptr)); +} + +TEST_F(ProducerImplTests, OkAutoId) { + asapo::MessageHeader message_header{0, 100, expected_fullpath, "", 0, 0, true}; + auto err = producer.Send(message_header, nullptr, asapo::kTransferMetaDataOnly, "default", nullptr); + ASSERT_THAT(err, Eq(nullptr)); +} + +TEST_F(ProducerImplTests, ErrorIfAutoIdForSet) { + asapo::MessageHeader message_header{0, 0, expected_fullpath, "", 1, 1, true}; + auto err = producer.Send(message_header, nullptr, asapo::kTransferMetaDataOnly, "default", nullptr); + ASSERT_THAT(err, Eq(asapo::ProducerErrorTemplates::kWrongInput)); +} + TEST_F(ProducerImplTests, ErrorIfNoData) { asapo::MessageHeader message_header{1, 100, expected_fullpath}; auto err = producer.Send(message_header, nullptr, asapo::kDefaultIngestMode, "default", nullptr); diff --git a/receiver/src/request_handler/request_handler_db_write.cpp b/receiver/src/request_handler/request_handler_db_write.cpp index db28504e4f66991a18f257362d8e6e76ade59795..d65e2237c40779cc366c8b3c20b340adb324daba 100644 --- a/receiver/src/request_handler/request_handler_db_write.cpp +++ b/receiver/src/request_handler/request_handler_db_write.cpp @@ -58,9 +58,10 @@ Error RequestHandlerDbWrite::InsertRecordToDb(const Request* request) const { auto col_name = collection_name_prefix_ + "_" + request->GetStream(); Error err; if (op_code == Opcode::kOpcodeTransferData) { - err = db_client__->Insert(col_name, message_meta, false); + uint64_t id_inserted; + err = db_client__->Insert(col_name, message_meta, false, &id_inserted); if (!err) { - log__->Debug(std::string{"insert record id "} + std::to_string(message_meta.id) + " to " + col_name + " in " + + log__->Debug(std::string{"insert record id "} + std::to_string(id_inserted) + " to " + col_name + " in " + db_name_ + " at " + GetReceiverConfig()->database_uri); } diff --git a/receiver/unittests/request_handler/test_request_handler_db_writer.cpp b/receiver/unittests/request_handler/test_request_handler_db_writer.cpp index d12f6ef1f4863728cb4a557698ca3eb60a3e2f0d..14e8a1ca978bd2f63297fb539cc4e5001bd04df5 100644 --- a/receiver/unittests/request_handler/test_request_handler_db_writer.cpp +++ b/receiver/unittests/request_handler/test_request_handler_db_writer.cpp @@ -220,7 +220,7 @@ TEST_F(DbWriterHandlerTests, CallsInsert) { ExpectRequestParams(asapo::Opcode::kOpcodeTransferData, expected_data_source); auto message_meta = PrepareMessageMeta(); - EXPECT_CALL(mock_db, Insert_t(expected_collection_name, CompareMessageMeta(message_meta), false)). + EXPECT_CALL(mock_db, Insert_t(expected_collection_name, CompareMessageMeta(message_meta), false, _)). WillOnce(testing::Return(nullptr)); ExpectLogger(); @@ -246,7 +246,7 @@ void DbWriterHandlerTests::ExpectDuplicatedID() { ExpectRequestParams(asapo::Opcode::kOpcodeTransferData, expected_data_source); auto message_meta = PrepareMessageMeta(); - EXPECT_CALL(mock_db, Insert_t(expected_collection_name, CompareMessageMeta(message_meta), false)). + EXPECT_CALL(mock_db, Insert_t(expected_collection_name, CompareMessageMeta(message_meta), false, _)). WillOnce(testing::Return(asapo::DBErrorTemplates::kDuplicateID.Generate().release())); } diff --git a/tests/automatic/mongo_db/auto_id/auto_id.cpp b/tests/automatic/mongo_db/auto_id/auto_id.cpp index d440b9b11ddc195a69734d4c64484d3962c66f8e..b138e88f6c38c96b518b1d88f34b401895fd6f51 100644 --- a/tests/automatic/mongo_db/auto_id/auto_id.cpp +++ b/tests/automatic/mongo_db/auto_id/auto_id.cpp @@ -64,11 +64,15 @@ void insert(const asapo::MongoDBClient& db, const std::string& name, asapo::Mess default: abort(); } - Error err = db.Insert(std::string("data_") + name, fi, false); + uint64_t inserted_id{0}; + Error err = db.Insert(std::string("data_") + name, fi, false, &inserted_id); if (err != nullptr) { printf("%s\n", err->Explain().c_str()); // break; } else { + if (inserted_id == 0) { + M_AssertTrue(false); + } global_count++; } } diff --git a/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp b/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp index d21e7051fc7a4d70efb5aec0a0661e088a2187f1..68f790722ca2abc1d7d2219b68d560de3e02f557 100644 --- a/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp +++ b/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp @@ -68,11 +68,11 @@ int main(int argc, char* argv[]) { db.Connect("127.0.0.1", db_name); } - auto err = db.Insert(std::string("data_") + stream_name, fi, false); + auto err = db.Insert(std::string("data_") + stream_name, fi, false, nullptr); if (args.keyword == "DuplicateID") { Assert(err, "OK"); - err = db.Insert(std::string("data_") + stream_name, fi, false); + err = db.Insert(std::string("data_") + stream_name, fi, false, nullptr); } std::this_thread::sleep_for(std::chrono::milliseconds(10)); @@ -83,8 +83,8 @@ int main(int argc, char* argv[]) { fi2.timestamp = std::chrono::system_clock::now() + std::chrono::minutes(1); fi2.name = asapo::kFinishStreamKeyword; fi2.metadata = R"({"next_stream":"ns"})"; - db.Insert("data_test1", fi1, false); - db.Insert("data_test1", fi2, false); + db.Insert("data_test1", fi1, false, nullptr); + db.Insert("data_test1", fi2, false, nullptr); Assert(err, args.keyword); @@ -112,10 +112,10 @@ int main(int argc, char* argv[]) { M_AssertEq("ns", info.next_stream); // delete stream - db.Insert(std::string("inprocess_") + stream_name + "_blabla", fi, false); - db.Insert(std::string("inprocess_") + stream_name + "_blabla1", fi, false); - db.Insert(std::string("acks_") + stream_name + "_blabla", fi, false); - db.Insert(std::string("acks_") + stream_name + "_blabla1", fi, false); + db.Insert(std::string("inprocess_") + stream_name + "_blabla", fi, false, nullptr); + db.Insert(std::string("inprocess_") + stream_name + "_blabla1", fi, false, nullptr); + db.Insert(std::string("acks_") + stream_name + "_blabla", fi, false, nullptr); + db.Insert(std::string("acks_") + stream_name + "_blabla1", fi, false, nullptr); db.DeleteStream(stream_name); err = db.GetStreamInfo(std::string("data_") + stream_name, &info); M_AssertTrue(info.last_id == 0); @@ -140,7 +140,7 @@ int main(int argc, char* argv[]) { db1.Connect("127.0.0.1", db_name); auto long_stream_name = GenRandomString(120); - err = db1.Insert(long_stream_name, fi, true); + err = db1.Insert(long_stream_name, fi, true, nullptr); M_AssertTrue(err == asapo::DBErrorTemplates::kWrongInput); diff --git a/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp b/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp index 7e2f8e58042ffe1b34348f9296c9802934bb2bfe..b6ffe373fb29c8f97f9ad5cadd368383c218ea8a 100644 --- a/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp +++ b/tests/automatic/mongo_db/insert_retrieve_dataset/insert_retrieve_dataset_mongodb.cpp @@ -87,7 +87,7 @@ int main(int argc, char* argv[]) { fi2.timestamp = std::chrono::system_clock::now() + std::chrono::minutes(1); fi2.name = asapo::kFinishStreamKeyword; fi2.metadata = R"({"next_stream":"ns"})"; - db.Insert("data_test", fi2, false); + db.Insert("data_test", fi2, false, nullptr); err = db.GetLastStream(&info_last); M_AssertEq(nullptr, err); M_AssertEq("test", info_last.name);