summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorazevaykin <[email protected]>2023-11-09 12:52:59 +0300
committerazevaykin <[email protected]>2023-11-09 13:34:04 +0300
commit8f2226146f18d3182e96a24155800f14446a19ac (patch)
tree9e9d30f7d94432a049112616922b247c495c0112
parent3cdccc606ba559f2d666fb21d60125f763bd9b81 (diff)
Print issues using Y_DECLARE_OUT_SPEC
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/CMakeLists.darwin-x86_64.txt1
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-aarch64.txt1
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/CMakeLists.linux-x86_64.txt1
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/CMakeLists.windows-x86_64.txt1
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/helpers.cpp20
-rw-r--r--ydb/core/tx/schemeshard/ut_helpers/ya.make1
-rw-r--r--ydb/library/yql/public/issue/yql_issue_message.cpp9
-rw-r--r--ydb/library/yql/public/issue/yql_issue_ut.cpp39
-rw-r--r--ydb/services/keyvalue/grpc_service_ut.cpp13
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