diff --git a/common/cpp/include/asapo/common/networking.h b/common/cpp/include/asapo/common/networking.h index bc8cae313624397fe059db3f01b8adb172a534a0..a52c437c2657251a14c0cae36e6a9c6c14fec469 100644 --- a/common/cpp/include/asapo/common/networking.h +++ b/common/cpp/include/asapo/common/networking.h @@ -18,16 +18,18 @@ enum class NetworkConnectionType : uint32_t { kFabric, // Fabric connection (Primarily used for InfiniBand verbs) }; + +// do not forget to add new codes to the end! enum Opcode : uint8_t { kOpcodeUnknownOp = 1, kOpcodeTransferData, kOpcodeTransferDatasetData, kOpcodeStreamInfo, - kOpcodeDeleteStream, kOpcodeLastStream, kOpcodeGetBufferData, kOpcodeAuthorize, kOpcodeTransferMetaData, + kOpcodeDeleteStream, kOpcodeCount, }; diff --git a/common/cpp/src/database/mongodb_client.cpp b/common/cpp/src/database/mongodb_client.cpp index 43a97531831d3dc097c7256fe7a45fca003297b0..ba8969ed7a3d3cd187f46ea5039b65b29c0f3187 100644 --- a/common/cpp/src/database/mongodb_client.cpp +++ b/common/cpp/src/database/mongodb_client.cpp @@ -361,7 +361,7 @@ Error MongoDBClient::GetDataSetById(const std::string &collection, } -Error UpdateStreamInfoFromEarliestRecord(const std::string &earliest_record_str, +Error UpdateStreamInfoFromEarliestRecord(const std::string &earliest_record_str, StreamInfo* info) { std::chrono::system_clock::time_point timestamp_created; auto parser = JsonStringParser(earliest_record_str); @@ -428,6 +428,10 @@ Error MongoDBClient::GetStreamInfo(const std::string &collection, StreamInfo* in std::string last_record_str, earliest_record_str; auto err = GetRecordFromDb(collection, 0, GetRecordMode::kLast, &last_record_str); if (err) { + if (err == DBErrorTemplates::kNoRecord) { // with noRecord error it will return last_id = 0 which can be used to understand that the stream is not started yet + *info = StreamInfo{}; + return nullptr; + } return err; } err = GetRecordFromDb(collection, 0, GetRecordMode::kEarliest, &earliest_record_str); 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 e7724e3c871f8a9cc2672c35b57d1aab9da134da..ac95431b257f15d3cfc9d3279937a7ec042c1fdf 100644 --- a/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp +++ b/tests/automatic/mongo_db/insert_retrieve/insert_retrieve_mongodb.cpp @@ -101,15 +101,15 @@ int main(int argc, char* argv[]) { db.Insert("acks_test_blabla1", fi, false); db.DeleteStream("test"); err = db.GetStreamInfo("data_test", &info); - M_AssertTrue(err!=nullptr); + M_AssertTrue(info.last_id == 0); err = db.GetStreamInfo("inprocess_test_blabla", &info); - M_AssertTrue(err!=nullptr); + M_AssertTrue(info.last_id == 0); err = db.GetStreamInfo("inprocess_test_blabla1", &info); - M_AssertTrue(err!=nullptr); + M_AssertTrue(info.last_id == 0); err = db.GetStreamInfo("acks_test_blabla", &info); - M_AssertTrue(err!=nullptr); + M_AssertTrue(info.last_id == 0); err = db.GetStreamInfo("acks_test_blabla1", &info); - M_AssertTrue(err!=nullptr); + M_AssertTrue(info.last_id == 0); err = db.DeleteStream("test1"); M_AssertTrue(err==nullptr); } diff --git a/tests/automatic/producer/python_api/producer_api.py b/tests/automatic/producer/python_api/producer_api.py index 10c981da4702ac11d2f9a154d3346482f816d753..2d6de1c5321425cf5f37bcd76ae72c6aa1a1bb7a 100644 --- a/tests/automatic/producer/python_api/producer_api.py +++ b/tests/automatic/producer/python_api/producer_api.py @@ -187,19 +187,20 @@ info = producer.stream_info('stream') assert_eq(info['lastId'], 3, "last id from different stream") assert_eq(info['finished'], True, "stream finished") +info = producer.stream_info('not_exist') +assert_eq(info['lastId'], 0, "last id from non existing stream") + + info_last = producer.last_stream() assert_eq(info_last['name'], "stream", "last stream") assert_eq(info_last['timestampCreated'] <= info_last['timestampLast'], True, "last is later than first") #delete_streams producer.delete_stream('stream') -try: - producer.stream_info('stream') -except asapo_producer.AsapoWrongInputError as e: - print(e) -else: - print("should be error on stream info after stream was deleted") - sys.exit(1) +producer.stream_info('stream') +assert_eq(info['lastId'], 0, "last id from non deleted stream") + + producer.delete_stream('unknown_stream',error_on_not_exist = False) try: producer.delete_stream('unknown_stream',error_on_not_exist = True)