diff options
author | serg-belyakov <[email protected]> | 2023-02-03 14:59:59 +0300 |
---|---|---|
committer | serg-belyakov <[email protected]> | 2023-02-03 14:59:59 +0300 |
commit | 5d2f4b4034904b4f15593fb18c250210ca60a6a2 (patch) | |
tree | ec7d2b2d96a3b14c63ae0b7ebebdcd79a578bbf6 | |
parent | e83e0247eb4e3c03003a6c21625932c25d8497b2 (diff) |
Add more convenient way to construct protobufs, get rid of dynamic memory allocations,
More convenient way to construct protobufs,
-rw-r--r-- | ydb/core/driver_lib/version/version.cpp | 39 | ||||
-rw-r--r-- | ydb/core/driver_lib/version/version.h | 110 | ||||
-rw-r--r-- | ydb/core/driver_lib/version/version_ut.cpp | 145 |
3 files changed, 181 insertions, 113 deletions
diff --git a/ydb/core/driver_lib/version/version.cpp b/ydb/core/driver_lib/version/version.cpp index 9dfe532272b..627ae031ec6 100644 --- a/ydb/core/driver_lib/version/version.cpp +++ b/ydb/core/driver_lib/version/version.cpp @@ -10,19 +10,25 @@ using TStored = NKikimrConfig::TStoredCompatibilityInfo; ///////////////////////////////////////////////////////////// // new version control -TCurrent* TCompatibilityInfo::CompatibilityInfo = nullptr; +std::optional<TCurrent> TCompatibilityInfo::CompatibilityInfo = std::nullopt; TSpinLock TCompatibilityInfo::LockCurrent = TSpinLock(); const TCurrent* TCompatibilityInfo::GetCurrent() { TGuard<TSpinLock> g(TCompatibilityInfo::LockCurrent); if (!CompatibilityInfo) { - CompatibilityInfo = new TCurrent(); + // using TYdbVersion = TCompatibilityInfo::TProtoConstructor::TYdbVersion; + // using TCompatibilityRule = TCompatibilityInfo::TProtoConstructor::TCompatibilityRule; + using TCurrentCompatibilityInfo = TCompatibilityInfo::TProtoConstructor::TCurrentCompatibilityInfo; + // Look for protobuf message format in ydb/core/protos/config.proto // To be changed in new release: - CompatibilityInfo->SetBuild("trunk"); + CompatibilityInfo = TCurrent(); + CompatibilityInfo->CopyFrom(TCurrentCompatibilityInfo{ + .Build = "trunk" + }.ToPB()); } - return CompatibilityInfo; + return &*CompatibilityInfo; } // obsolete version control @@ -44,23 +50,25 @@ TMaybe<NActors::TInterconnectProxyCommon::TVersionInfo> VERSION = NActors::TInte // Last stable YDB release, which doesn't include version control change // When the compatibility information is not present in component's data, // we assume component's version to be this version -TStored* TCompatibilityInfo::UnknownYdbRelease = nullptr; +std::optional<TStored> TCompatibilityInfo::UnknownYdbRelease = std::nullopt; const TStored* TCompatibilityInfo::GetUnknown() { static TSpinLock lock; TGuard<TSpinLock> g(lock); if (!UnknownYdbRelease) { - UnknownYdbRelease = new TStored(); - UnknownYdbRelease->SetBuild("ydb"); + using TYdbVersion = TCompatibilityInfo::TProtoConstructor::TYdbVersion; + // using TCompatibilityRule = TCompatibilityInfo::TProtoConstructor::TCompatibilityRule; + using TStoredCompatibilityInfo = TCompatibilityInfo::TProtoConstructor::TStoredCompatibilityInfo; + + UnknownYdbRelease = TStored(); + UnknownYdbRelease->CopyFrom(TStoredCompatibilityInfo{ + .Build = "ydb", + .YdbVersion = TYdbVersion{ .Year = 22, .Major = 5, .Minor = 7, .Hotfix = 0 } - auto* version = UnknownYdbRelease->MutableYdbVersion(); - version->SetYear(22); - version->SetMajor(5); - version->SetMinor(7); - version->SetHotfix(0); + }.ToPB()); } - return UnknownYdbRelease; + return &*UnknownYdbRelease; } TStored TCompatibilityInfo::MakeStored(ui32 componentId, const TCurrent* current) { @@ -288,7 +296,10 @@ bool TCompatibilityInfo::CheckCompatibility(const TStored* stored, ui32 componen void TCompatibilityInfo::Reset(TCurrent* newCurrent) { TGuard<TSpinLock> g(TCompatibilityInfo::LockCurrent); - CompatibilityInfo = newCurrent; + if (!CompatibilityInfo) { + CompatibilityInfo = TCurrent(); + } + CompatibilityInfo->CopyFrom(*newCurrent); } TString GetBranchName(TString url) { diff --git a/ydb/core/driver_lib/version/version.h b/ydb/core/driver_lib/version/version.h index ae7dfb266fd..9f6746cb3ce 100644 --- a/ydb/core/driver_lib/version/version.h +++ b/ydb/core/driver_lib/version/version.h @@ -8,6 +8,112 @@ class TCompatibilityInfo { using TOldFormat = NActors::TInterconnectProxyCommon::TVersionInfo; public: + struct TProtoConstructor { + TProtoConstructor() = delete; + + struct TYdbVersion { + std::optional<ui32> Year; + std::optional<ui32> Major; + std::optional<ui32> Minor; + std::optional<ui32> Hotfix; + + NKikimrConfig::TYdbVersion ToPB() { + NKikimrConfig::TYdbVersion res; + if (Year) { + res.SetYear(*Year); + } + if (Major) { + res.SetMajor(*Major); + } + if (Minor) { + res.SetMinor(*Minor); + } + if (Hotfix) { + res.SetHotfix(*Hotfix); + } + + return res; + } + }; + + struct TCompatibilityRule { + std::optional<std::string> Build; + std::optional<TYdbVersion> BottomLimit; + std::optional<TYdbVersion> UpperLimit; + std::optional<ui32> ComponentId; + std::optional<bool> Forbidden; + + NKikimrConfig::TCompatibilityRule ToPB() { + NKikimrConfig::TCompatibilityRule res; + if (Build) { + res.SetBuild(Build->data()); + } + if (BottomLimit) { + res.MutableBottomLimit()->CopyFrom(BottomLimit->ToPB()); + } + if (UpperLimit) { + res.MutableUpperLimit()->CopyFrom(UpperLimit->ToPB()); + } + if (ComponentId) { + res.SetComponentId(*ComponentId); + } + if (Forbidden) { + res.SetForbidden(*Forbidden); + } + + return res; + } + }; + + struct TCurrentCompatibilityInfo { + std::optional<std::string> Build; + std::optional<TYdbVersion> YdbVersion; + std::vector<TCompatibilityRule> CanLoadFrom; + std::vector<TCompatibilityRule> StoresReadableBy; + + NKikimrConfig::TCurrentCompatibilityInfo ToPB() { + NKikimrConfig::TCurrentCompatibilityInfo res; + Y_VERIFY(Build); + res.SetBuild(Build->data()); + if (YdbVersion) { + res.MutableYdbVersion()->CopyFrom(YdbVersion->ToPB()); + } + + for (auto canLoadFrom : CanLoadFrom) { + res.AddCanLoadFrom()->CopyFrom(canLoadFrom.ToPB()); + } + for (auto storesReadableBy : StoresReadableBy) { + res.AddStoresReadableBy()->CopyFrom(storesReadableBy.ToPB()); + } + + return res; + } + }; + + struct TStoredCompatibilityInfo { + std::optional<std::string> Build; + std::optional<TYdbVersion> YdbVersion; + std::vector<TCompatibilityRule> ReadableBy; + + NKikimrConfig::TStoredCompatibilityInfo ToPB() { + NKikimrConfig::TStoredCompatibilityInfo res; + Y_VERIFY(Build); + + res.SetBuild(Build->data()); + if (YdbVersion) { + res.MutableYdbVersion()->CopyFrom(YdbVersion->ToPB()); + } + + for (auto readableBy : ReadableBy) { + res.AddReadableBy()->CopyFrom(readableBy.ToPB()); + } + + return res; + } + }; + }; + +public: TCompatibilityInfo() = delete; static const NKikimrConfig::TCurrentCompatibilityInfo* GetCurrent(); static const NKikimrConfig::TStoredCompatibilityInfo* GetUnknown(); @@ -28,8 +134,8 @@ public: private: static TSpinLock LockCurrent; - static NKikimrConfig::TCurrentCompatibilityInfo* CompatibilityInfo; - static NKikimrConfig::TStoredCompatibilityInfo* UnknownYdbRelease; + static std::optional<NKikimrConfig::TCurrentCompatibilityInfo> CompatibilityInfo; + static std::optional<NKikimrConfig::TStoredCompatibilityInfo> UnknownYdbRelease; // functions that modify compatibility information are only accessible from friend classes static void Reset(NKikimrConfig::TCurrentCompatibilityInfo* newCurrent); diff --git a/ydb/core/driver_lib/version/version_ut.cpp b/ydb/core/driver_lib/version/version_ut.cpp index 97e3b8e2e4c..fe8b9eae491 100644 --- a/ydb/core/driver_lib/version/version_ut.cpp +++ b/ydb/core/driver_lib/version/version_ut.cpp @@ -21,103 +21,10 @@ Y_UNIT_TEST_SUITE(VersionParser) { using EComponentId = NKikimrConfig::TCompatibilityRule; using TOldFormat = NActors::TInterconnectProxyCommon::TVersionInfo; -struct TYdbVersion { - std::optional<ui32> Year; - std::optional<ui32> Major; - std::optional<ui32> Minor; - std::optional<ui32> Hotfix; - - NKikimrConfig::TYdbVersion ToPB() { - NKikimrConfig::TYdbVersion res; - if (Year) { - res.SetYear(*Year); - } - if (Major) { - res.SetMajor(*Major); - } - if (Minor) { - res.SetMinor(*Minor); - } - if (Hotfix) { - res.SetHotfix(*Hotfix); - } - - return res; - } -}; - -struct TCompatibilityRule { - std::optional<std::string> Build; - std::optional<TYdbVersion> BottomLimit; - std::optional<TYdbVersion> UpperLimit; - std::optional<ui32> ComponentId; - std::optional<bool> Forbidden; - - NKikimrConfig::TCompatibilityRule ToPB() { - NKikimrConfig::TCompatibilityRule res; - if (Build) { - res.SetBuild(Build->data()); - } - if (BottomLimit) { - res.MutableBottomLimit()->CopyFrom(BottomLimit->ToPB()); - } - if (UpperLimit) { - res.MutableUpperLimit()->CopyFrom(UpperLimit->ToPB()); - } - if (ComponentId) { - res.SetComponentId(*ComponentId); - } - if (Forbidden) { - res.SetForbidden(*Forbidden); - } - - return res; - } -}; - -struct TCurrentCompatibilityInfo { - std::string Build = "ydb"; - std::optional<TYdbVersion> YdbVersion; - std::vector<TCompatibilityRule> CanLoadFrom; - std::vector<TCompatibilityRule> StoresReadableBy; - - NKikimrConfig::TCurrentCompatibilityInfo ToPB() { - NKikimrConfig::TCurrentCompatibilityInfo res; - res.SetBuild(Build.data()); - if (YdbVersion) { - res.MutableYdbVersion()->CopyFrom(YdbVersion->ToPB()); - } - - for (auto canLoadFrom : CanLoadFrom) { - res.AddCanLoadFrom()->CopyFrom(canLoadFrom.ToPB()); - } - for (auto storesReadableBy : StoresReadableBy) { - res.AddStoresReadableBy()->CopyFrom(storesReadableBy.ToPB()); - } - - return res; - } -}; - -struct TStoredCompatibilityInfo { - std::string Build = "ydb"; - std::optional<TYdbVersion> YdbVersion; - std::vector<TCompatibilityRule> ReadableBy; - - NKikimrConfig::TStoredCompatibilityInfo ToPB() { - NKikimrConfig::TStoredCompatibilityInfo res; - res.SetBuild(Build.data()); - if (YdbVersion) { - res.MutableYdbVersion()->CopyFrom(YdbVersion->ToPB()); - } - - for (auto readableBy : ReadableBy) { - res.AddReadableBy()->CopyFrom(readableBy.ToPB()); - } - - return res; - } -}; +using TYdbVersion = TCompatibilityInfo::TProtoConstructor::TYdbVersion; +using TCompatibilityRule = TCompatibilityInfo::TProtoConstructor::TCompatibilityRule; +using TCurrentCompatibilityInfo = TCompatibilityInfo::TProtoConstructor::TCurrentCompatibilityInfo; +using TStoredCompatibilityInfo = TCompatibilityInfo::TProtoConstructor::TStoredCompatibilityInfo; Y_UNIT_TEST_SUITE(YdbVersion) { @@ -133,9 +40,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultSameVersion) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 0 } }, true @@ -144,9 +53,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultPrevMajor) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 10 } }, true @@ -155,9 +66,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultNextMajor) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 8, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 1, .Hotfix = 0 } }, true @@ -166,9 +79,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultHotfix) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 10 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 0 } }, true @@ -177,9 +92,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultCompatible) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 1, .Hotfix = 10 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 10, .Hotfix = 0 } }, true @@ -188,9 +105,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultNextYear) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 2, .Major = 1, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 0 } }, false @@ -199,9 +118,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultPrevYear) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 2, .Major = 1, .Minor = 1, .Hotfix = 0 } }, false @@ -210,9 +131,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultNewMajor) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 3, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 3, .Hotfix = 0 } }, false @@ -221,9 +144,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(DefaultOldMajor) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 3, .Minor = 1, .Hotfix = 0 } }, false @@ -258,6 +183,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(LimitOld) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 1, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -268,6 +194,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 2, .Hotfix = 1 } }, false @@ -276,9 +203,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(LimitNew) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 1, .Hotfix = 3 }, }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 2, .Hotfix = 0 }, .StoresReadableBy = { TCompatibilityRule{ @@ -407,9 +336,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(StoredWithRules) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 4, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 3, .Minor = 3, .Hotfix = 1 }, .StoresReadableBy = { TCompatibilityRule{ @@ -424,9 +355,11 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(StoredWithRulesIncompatible) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 5, .Minor = 1, .Hotfix = 0 } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 3, .Minor = 3, .Hotfix = 1 }, .StoresReadableBy = { TCompatibilityRule{ @@ -521,6 +454,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(OneAcceptedVersion) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 3, .Minor = 2, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -530,6 +464,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 3, .Hotfix = 2 }, }, true @@ -538,6 +473,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(ForbiddenMinor) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 2, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -548,6 +484,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 1, .Minor = 3, .Hotfix = 1 }, }, false @@ -556,6 +493,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(ExtraAndForbidden) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 4, .Minor = 2, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -570,6 +508,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 3, .Hotfix = 0 }, }, false @@ -578,6 +517,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(SomeRulesAndOtherForbidden) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 4, .Minor = 2, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -592,6 +532,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 3, .Hotfix = 0 }, }, true @@ -600,6 +541,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(Component) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 4, .Minor = 2, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -610,6 +552,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 3, .Hotfix = 0 }, }, true @@ -618,6 +561,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { Y_UNIT_TEST(OtherComponent) { Test( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 4, .Minor = 2, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -628,6 +572,7 @@ Y_UNIT_TEST_SUITE(YdbVersion) { } }, TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 1, .Major = 2, .Minor = 3, .Hotfix = 0 }, }, false @@ -652,6 +597,7 @@ Y_UNIT_TEST_SUITE(OldFormat) { Y_UNIT_TEST(SameVersion) { TestOldFormat( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 22, .Major = 4, .Minor = 1, .Hotfix = 0 } }, TOldFormat{ @@ -665,6 +611,7 @@ Y_UNIT_TEST_SUITE(OldFormat) { Y_UNIT_TEST(DefaultRules) { TestOldFormat( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 22, .Major = 5, .Minor = 1, .Hotfix = 0 } }, TOldFormat{ @@ -678,6 +625,7 @@ Y_UNIT_TEST_SUITE(OldFormat) { Y_UNIT_TEST(PrevYear) { TestOldFormat( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 23, .Major = 1, .Minor = 1, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ @@ -710,6 +658,7 @@ Y_UNIT_TEST_SUITE(OldFormat) { Y_UNIT_TEST(UnexpectedTrunk) { TestOldFormat( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 22, .Major = 4, .Minor = 1, .Hotfix = 0 }, }, TOldFormat{ @@ -723,6 +672,7 @@ Y_UNIT_TEST_SUITE(OldFormat) { Y_UNIT_TEST(TooOld) { TestOldFormat( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 22, .Major = 4, .Minor = 1, .Hotfix = 0 }, }, TOldFormat{ @@ -736,6 +686,7 @@ Y_UNIT_TEST_SUITE(OldFormat) { Y_UNIT_TEST(OldNbs) { TestOldFormat( TCurrentCompatibilityInfo{ + .Build = "ydb", .YdbVersion = TYdbVersion{ .Year = 23, .Major = 1, .Minor = 1, .Hotfix = 0 }, .CanLoadFrom = { TCompatibilityRule{ |