diff options
| author | azevaykin <[email protected]> | 2023-11-09 12:52:59 +0300 |
|---|---|---|
| committer | azevaykin <[email protected]> | 2023-11-09 13:34:04 +0300 |
| commit | 8f2226146f18d3182e96a24155800f14446a19ac (patch) | |
| tree | 9e9d30f7d94432a049112616922b247c495c0112 | |
| parent | 3cdccc606ba559f2d666fb21d60125f763bd9b81 (diff) | |
Print issues using Y_DECLARE_OUT_SPEC
9 files changed, 60 insertions, 26 deletions
diff --git a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.darwin-x86_64.txt b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.darwin-x86_64.txt index ff67c37abd3..b8090d7f794 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.darwin-x86_64.txt +++ b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.darwin-x86_64.txt @@ -33,6 +33,7 @@ target_link_libraries(tx-schemeshard-ut_helpers PUBLIC core-tx-tx_allocator core-tx-tx_proxy public-lib-scheme_types + yql-public-issue cpp-client-ydb_driver ) target_sources(tx-schemeshard-ut_helpers PRIVATE diff --git a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-aarch64.txt b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-aarch64.txt index 2c4e9247b6e..c64a4356dd6 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-aarch64.txt +++ b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-aarch64.txt @@ -34,6 +34,7 @@ target_link_libraries(tx-schemeshard-ut_helpers PUBLIC core-tx-tx_allocator core-tx-tx_proxy public-lib-scheme_types + yql-public-issue cpp-client-ydb_driver ) target_sources(tx-schemeshard-ut_helpers PRIVATE diff --git a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-x86_64.txt b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-x86_64.txt index 2c4e9247b6e..c64a4356dd6 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-x86_64.txt +++ b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-x86_64.txt @@ -34,6 +34,7 @@ target_link_libraries(tx-schemeshard-ut_helpers PUBLIC core-tx-tx_allocator core-tx-tx_proxy public-lib-scheme_types + yql-public-issue cpp-client-ydb_driver ) target_sources(tx-schemeshard-ut_helpers PRIVATE diff --git a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.windows-x86_64.txt b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.windows-x86_64.txt index ff67c37abd3..b8090d7f794 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.windows-x86_64.txt +++ b/ydb/core/tx/schemeshard/ut_helpers/CMakeLists.windows-x86_64.txt @@ -33,6 +33,7 @@ target_link_libraries(tx-schemeshard-ut_helpers PUBLIC core-tx-tx_allocator core-tx-tx_proxy public-lib-scheme_types + yql-public-issue cpp-client-ydb_driver ) target_sources(tx-schemeshard-ut_helpers PRIVATE diff --git a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp index b7cf5f74338..ed58a9dd40c 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp +++ b/ydb/core/tx/schemeshard/ut_helpers/helpers.cpp @@ -1676,14 +1676,6 @@ namespace NSchemeShardUT_Private { return std::make_unique<TEvIndexBuilder::TEvCreateRequest>(id, dbName, std::move(settings)); } - TStringBuilder PrintIssues(const ::google::protobuf::RepeatedPtrField< ::Ydb::Issue::IssueMessage >& issues) { - TStringBuilder result; - for (const auto& x: issues) { - result << "ISSUE( severity: " << x.severity() << "; message: " << x.message() << ") "; - } - return result; - } - void AsyncBuildIndex(TTestActorRuntime& runtime, ui64 id, ui64 schemeShard, const TString &dbName, const TString &src, const TBuildIndexConfig &cfg) { auto sender = runtime.AllocateEdgeActor(); auto request = CreateBuildIndexRequest(id, dbName, src, cfg); @@ -1720,7 +1712,7 @@ namespace NSchemeShardUT_Private { "status mismatch" << " got " << Ydb::StatusIds::StatusCode_Name(event->Record.GetStatus()) << " expected " << Ydb::StatusIds::StatusCode_Name(expectedStatus) - << " issues was " << PrintIssues(event->Record.GetIssues())); + << " issues was " << event->Record.GetIssues()); } void TestBuildIndex(TTestActorRuntime& runtime, ui64 id, ui64 schemeShard, const TString &dbName, @@ -1737,7 +1729,7 @@ namespace NSchemeShardUT_Private { "status mismatch" << " got " << Ydb::StatusIds::StatusCode_Name(event->Record.GetStatus()) << " expected " << Ydb::StatusIds::StatusCode_Name(expectedStatus) - << " issues was " << PrintIssues(event->Record.GetIssues())); + << " issues was " << event->Record.GetIssues()); } void TestBuildIndex(TTestActorRuntime& runtime, ui64 id, ui64 schemeShard, const TString &dbName, @@ -1783,7 +1775,7 @@ namespace NSchemeShardUT_Private { UNIT_ASSERT(event); Cerr << "BUILDINDEX RESPONSE CANCEL: " << event->ToString() << Endl; - CheckExpectedStatusCode(expectedStatuses, event->Record.GetStatus(), PrintIssues(event->Record.GetIssues())); + CheckExpectedStatusCode(expectedStatuses, event->Record.GetStatus(), TStringBuilder{} << event->Record.GetIssues()); return event->Record; } @@ -1804,7 +1796,7 @@ namespace NSchemeShardUT_Private { UNIT_ASSERT(event); Cerr << "BUILDINDEX RESPONSE LIST: " << event->ToString() << Endl; - UNIT_ASSERT_EQUAL_C(event->Record.GetStatus(), 400000, PrintIssues(event->Record.GetIssues())); + UNIT_ASSERT_EQUAL_C(event->Record.GetStatus(), 400000, event->Record.GetIssues()); return event->Record; } @@ -1823,7 +1815,7 @@ namespace NSchemeShardUT_Private { UNIT_ASSERT(event); Cerr << "BUILDINDEX RESPONSE Get: " << event->ToString() << Endl; - UNIT_ASSERT_EQUAL_C(event->Record.GetStatus(), 400000, PrintIssues(event->Record.GetIssues())); + UNIT_ASSERT_EQUAL_C(event->Record.GetStatus(), 400000, event->Record.GetIssues()); return event->Record; } @@ -1849,7 +1841,7 @@ namespace NSchemeShardUT_Private { UNIT_ASSERT(event); Cerr << "BUILDINDEX RESPONSE Forget: " << event->ToString() << Endl; - UNIT_ASSERT_EQUAL_C(event->Record.GetStatus(), expectedStatus, PrintIssues(event->Record.GetIssues())); + UNIT_ASSERT_EQUAL_C(event->Record.GetStatus(), expectedStatus, event->Record.GetIssues()); return event->Record; } diff --git a/ydb/core/tx/schemeshard/ut_helpers/ya.make b/ydb/core/tx/schemeshard/ut_helpers/ya.make index ca18f396d45..f218f954617 100644 --- a/ydb/core/tx/schemeshard/ut_helpers/ya.make +++ b/ydb/core/tx/schemeshard/ut_helpers/ya.make @@ -20,6 +20,7 @@ PEERDIR( ydb/core/tx/tx_allocator ydb/core/tx/tx_proxy ydb/public/lib/scheme_types + ydb/library/yql/public/issue ydb/public/sdk/cpp/client/ydb_driver ) diff --git a/ydb/library/yql/public/issue/yql_issue_message.cpp b/ydb/library/yql/public/issue/yql_issue_message.cpp index 15a3202b528..51ee9908dd3 100644 --- a/ydb/library/yql/public/issue/yql_issue_message.cpp +++ b/ydb/library/yql/public/issue/yql_issue_message.cpp @@ -5,6 +5,8 @@ #include <util/generic/deque.h> #include <util/generic/yexception.h> +#include <util/stream/output.h> +#include <util/string/join.h> #include <tuple> @@ -138,3 +140,10 @@ TIssue IssueFromBinaryMessage(const TString& binaryMessage) { } } + +Y_DECLARE_OUT_SPEC(, google::protobuf::RepeatedPtrField<Ydb::Issue::IssueMessage>, stream, issues) { + stream << JoinSeq("", issues); +} +Y_DECLARE_OUT_SPEC(, google::protobuf::RepeatedPtrField<NYql::NIssue::NProto::IssueMessage>, stream, issues) { + stream << JoinSeq("", issues); +}
\ No newline at end of file diff --git a/ydb/library/yql/public/issue/yql_issue_ut.cpp b/ydb/library/yql/public/issue/yql_issue_ut.cpp index 5b14faf3151..5d4ef7c8525 100644 --- a/ydb/library/yql/public/issue/yql_issue_ut.cpp +++ b/ydb/library/yql/public/issue/yql_issue_ut.cpp @@ -145,6 +145,45 @@ Y_UNIT_TEST_SUITE(ToOneLineStringTest) { } } +Y_UNIT_TEST_SUITE(ToStreamTest) { + template <typename TIssueMessage> + void CheckSerializationToStream(const TIssues& issues, const TString& expected) { + google::protobuf::RepeatedPtrField<TIssueMessage> protoIssues; + IssuesToMessage(issues, &protoIssues); + TStringBuilder stream; + stream << protoIssues; + UNIT_ASSERT_STRINGS_EQUAL(stream, expected); + }; + + Y_UNIT_TEST(OneMessageTest) { + TIssues issues; + issues.AddIssue("error"); + CheckSerializationToStream<Ydb::Issue::IssueMessage>(issues, "{ message: \"error\" severity: 1 }"); + CheckSerializationToStream<NYql::NIssue::NProto::IssueMessage>(issues, "{ message: \"error\" issue_code: 0 severity: 1 }"); + } + + Y_UNIT_TEST(SubIssuesTest) { + TIssue issue(TPosition(12, 34, "file.abc"), "error"); + TIssue subissue("suberror"); + subissue.AddSubIssue(MakeIntrusive<TIssue>("subsuberror")); + issue.AddSubIssue(MakeIntrusive<TIssue>(subissue)); + TIssues issues; + issues.AddIssue(issue); + CheckSerializationToStream<Ydb::Issue::IssueMessage>(issues, "{ position { row: 34 column: 12 file: \"file.abc\" } message: \"error\" end_position { row: 34 column: 12 } severity: 1 issues { message: \"suberror\" severity: 1 issues { message: \"subsuberror\" severity: 1 } } }"); + CheckSerializationToStream<NYql::NIssue::NProto::IssueMessage>(issues, "{ position { row: 34 column: 12 file: \"file.abc\" } message: \"error\" end_position { row: 34 column: 12 } issue_code: 0 severity: 1 issues { message: \"suberror\" issue_code: 0 severity: 1 issues { message: \"subsuberror\" issue_code: 0 severity: 1 } } }"); + } + + Y_UNIT_TEST(ManyIssuesTest) { + TIssue issue(TPosition(12, 34, "file.abc"), "error"); + issue.AddSubIssue(MakeIntrusive<TIssue>("suberror")); + TIssues issues; + issues.AddIssue(issue); + issues.AddIssue(TPosition(100, 2, "abc.file"), "my message"); + CheckSerializationToStream<Ydb::Issue::IssueMessage>(issues, "{ position { row: 34 column: 12 file: \"file.abc\" } message: \"error\" end_position { row: 34 column: 12 } severity: 1 issues { message: \"suberror\" severity: 1 } }{ position { row: 2 column: 100 file: \"abc.file\" } message: \"my message\" end_position { row: 2 column: 100 } severity: 1 }"); + CheckSerializationToStream<NYql::NIssue::NProto::IssueMessage>(issues, "{ position { row: 34 column: 12 file: \"file.abc\" } message: \"error\" end_position { row: 34 column: 12 } issue_code: 0 severity: 1 issues { message: \"suberror\" issue_code: 0 severity: 1 } }{ position { row: 2 column: 100 file: \"abc.file\" } message: \"my message\" end_position { row: 2 column: 100 } issue_code: 0 severity: 1 }"); + } +} + Y_UNIT_TEST_SUITE(ToMessage) { Y_UNIT_TEST(NonUtf8) { const TString nonUtf8String = "\x7f\xf8\xf7\xff\xf8\x1f\xff\xf2\xaf\xbf\xfe\xfa\xf5\x7f\xfe\xfa\x27\x20\x7d\x20\x5d\x2e"; diff --git a/ydb/services/keyvalue/grpc_service_ut.cpp b/ydb/services/keyvalue/grpc_service_ut.cpp index 479a0d8b84e..dcb7f0dbd23 100644 --- a/ydb/services/keyvalue/grpc_service_ut.cpp +++ b/ydb/services/keyvalue/grpc_service_ut.cpp @@ -22,20 +22,9 @@ #include <util/string/builder.h> -TString PrintIssue(const ::google::protobuf::RepeatedPtrField< ::Ydb::Issue::IssueMessage> &issues) { - TStringBuilder msg; - msg << '{'; - for (auto &issue : issues) { - msg << " issue# " << issue.message(); - } - msg << " }"; - return msg; -} - - #define UNIT_ASSERT_CHECK_STATUS(got, exp) \ UNIT_ASSERT_C(got.status() == exp, "exp# " << Ydb::StatusIds::StatusCode_Name(exp) \ - << " got# " << Ydb::StatusIds::StatusCode_Name(got.status()) << " issues# " << PrintIssue(got.issues())) \ + << " got# " << Ydb::StatusIds::StatusCode_Name(got.status()) << " issues# " << got.issues()) \ // UNIT_ASSERT_CHECK_STATUS |
