@@ -44,6 +44,30 @@ TString GetExternalPort(const TString& service, const TString& port) {
44
44
return result ? Strip (result.back ()) : TString{};
45
45
}
46
46
47
+ void WaitBucket (std::shared_ptr<TKikimrRunner> kikimr, const TString& externalDataSourceName) {
48
+ auto db = kikimr->GetQueryClient ();
49
+ for (size_t i = 0 ; i < 100 ; i++) {
50
+ auto scriptExecutionOperation = db.ExecuteScript (fmt::format (R"(
51
+ SELECT * FROM `{external_source}`.`/a/` WITH (
52
+ format="json_each_row",
53
+ schema(
54
+ key Utf8 NOT NULL,
55
+ value Utf8 NOT NULL
56
+ )
57
+ )
58
+ )" , " external_source" _a = externalDataSourceName)).ExtractValueSync ();
59
+ UNIT_ASSERT_VALUES_EQUAL_C (scriptExecutionOperation.Status ().GetStatus (), EStatus::SUCCESS, scriptExecutionOperation.Status ().GetIssues ().ToString ());
60
+ UNIT_ASSERT (scriptExecutionOperation.Metadata ().ExecutionId );
61
+
62
+ NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation (scriptExecutionOperation.Id (), kikimr->GetDriver ());
63
+ if (readyOp.Metadata ().ExecStatus == EExecStatus::Completed) {
64
+ return ;
65
+ }
66
+ Sleep (TDuration::Seconds (1 ));
67
+ }
68
+ UNIT_FAIL (" Bucket isn't ready" );
69
+ }
70
+
47
71
Y_UNIT_TEST_SUITE (S3AwsCredentials) {
48
72
Y_UNIT_TEST (ExecuteScriptWithEqSymbol) {
49
73
const TString externalDataSourceName = " /Root/external_data_source" ;
@@ -69,6 +93,7 @@ Y_UNIT_TEST_SUITE(S3AwsCredentials) {
69
93
);
70
94
auto result = session.ExecuteSchemeQuery (query).GetValueSync ();
71
95
UNIT_ASSERT_C (result.GetStatus () == NYdb::EStatus::SUCCESS, result.GetIssues ().ToString ());
96
+ WaitBucket (kikimr, externalDataSourceName);
72
97
auto db = kikimr->GetQueryClient ();
73
98
{
74
99
auto scriptExecutionOperation = db.ExecuteScript (fmt::format (R"(
@@ -183,6 +208,46 @@ Y_UNIT_TEST_SUITE(S3AwsCredentials) {
183
208
UNIT_ASSERT_VALUES_EQUAL (resultSet.ColumnParser (0 ).GetUtf8 (), " 2" );
184
209
UNIT_ASSERT_VALUES_EQUAL (resultSet.ColumnParser (1 ).GetUtf8 (), " hello world" );
185
210
}
211
+ {
212
+ auto scriptExecutionOperation = db.ExecuteScript (fmt::format (R"(
213
+ SELECT * FROM `{external_source}`.`/` WITH (
214
+ format="json_each_row",
215
+ schema(
216
+ key Utf8 NOT NULL,
217
+ value Utf8 NOT NULL
218
+ )
219
+ )
220
+ )" , " external_source" _a = externalDataSourceName)).ExtractValueSync ();
221
+ UNIT_ASSERT_VALUES_EQUAL_C (scriptExecutionOperation.Status ().GetStatus (), EStatus::SUCCESS, scriptExecutionOperation.Status ().GetIssues ().ToString ());
222
+ UNIT_ASSERT (scriptExecutionOperation.Metadata ().ExecutionId );
223
+
224
+ NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation (scriptExecutionOperation.Id (), kikimr->GetDriver ());
225
+ UNIT_ASSERT_EQUAL_C (readyOp.Metadata ().ExecStatus , EExecStatus::Completed, readyOp.Status ().GetIssues ().ToString ());
226
+ TFetchScriptResultsResult results = db.FetchScriptResults (scriptExecutionOperation.Id (), 0 ).ExtractValueSync ();
227
+ UNIT_ASSERT_C (results.IsSuccess (), results.GetIssues ().ToString ());
228
+
229
+ TResultSetParser resultSet (results.ExtractResultSet ());
230
+ UNIT_ASSERT_VALUES_EQUAL (resultSet.ColumnsCount (), 2 );
231
+ UNIT_ASSERT_VALUES_EQUAL (resultSet.RowsCount (), 4 );
232
+ UNIT_ASSERT (resultSet.TryNextRow ());
233
+ UNIT_ASSERT_VALUES_EQUAL (resultSet.ColumnParser (0 ).GetUtf8 (), " 1" );
234
+ UNIT_ASSERT_VALUES_EQUAL (resultSet.ColumnParser (1 ).GetUtf8 (), " trololo" );
235
+ UNIT_ASSERT (resultSet.TryNextRow ());
236
+ UNIT_ASSERT_VALUES_EQUAL (resultSet.ColumnParser (0 ).GetUtf8 (), " 2" );
237
+ UNIT_ASSERT_VALUES_EQUAL (resultSet.ColumnParser (1 ).GetUtf8 (), " hello world" );
238
+ }
239
+
240
+ {
241
+ auto scriptExecutionOperation = db.ExecuteScript (fmt::format (R"(
242
+ INSERT INTO `{external_source}`.`exp_folder/` WITH (FORMAT = "csv_with_names")
243
+ SELECT "Hello, world!" AS Data
244
+ )" , " external_source" _a = externalDataSourceName)).ExtractValueSync ();
245
+ UNIT_ASSERT_VALUES_EQUAL_C (scriptExecutionOperation.Status ().GetStatus (), EStatus::SUCCESS, scriptExecutionOperation.Status ().GetIssues ().ToString ());
246
+ UNIT_ASSERT (scriptExecutionOperation.Metadata ().ExecutionId );
247
+
248
+ NYdb::NQuery::TScriptExecutionOperation readyOp = WaitScriptExecutionOperation (scriptExecutionOperation.Id (), kikimr->GetDriver ());
249
+ UNIT_ASSERT_EQUAL_C (readyOp.Metadata ().ExecStatus , EExecStatus::Completed, readyOp.Status ().GetIssues ().ToString ());
250
+ }
186
251
}
187
252
188
253
}
0 commit comments