summaryrefslogtreecommitdiffstats
path: root/src/arrow/ruby/red-arrow-flight/test/helper
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-21 11:54:28 +0000
commite6918187568dbd01842d8d1d2c808ce16a894239 (patch)
tree64f88b554b444a49f656b6c656111a145cbbaa28 /src/arrow/ruby/red-arrow-flight/test/helper
parentInitial commit. (diff)
downloadceph-e6918187568dbd01842d8d1d2c808ce16a894239.tar.xz
ceph-e6918187568dbd01842d8d1d2c808ce16a894239.zip
Adding upstream version 18.2.2.upstream/18.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'src/arrow/ruby/red-arrow-flight/test/helper')
-rw-r--r--src/arrow/ruby/red-arrow-flight/test/helper/info-generator.rb57
-rw-r--r--src/arrow/ruby/red-arrow-flight/test/helper/server.rb39
2 files changed, 96 insertions, 0 deletions
diff --git a/src/arrow/ruby/red-arrow-flight/test/helper/info-generator.rb b/src/arrow/ruby/red-arrow-flight/test/helper/info-generator.rb
new file mode 100644
index 000000000..e5430fd6b
--- /dev/null
+++ b/src/arrow/ruby/red-arrow-flight/test/helper/info-generator.rb
@@ -0,0 +1,57 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+
+module Helper
+ class InfoGenerator
+ def page_view_table
+ Arrow::Table.new("count" => Arrow::UInt64Array.new([1, 2, 3]),
+ "private" => Arrow::BooleanArray.new([true, false, true]))
+ end
+
+ def page_view_descriptor
+ ArrowFlight::PathDescriptor.new(["page-view"])
+ end
+
+ def page_view_ticket
+ "page-view"
+ end
+
+ def page_view_endpoints
+ locations = [
+ ArrowFlight::Location.new("grpc+tcp://127.0.0.1:10000"),
+ ArrowFlight::Location.new("grpc+tcp://127.0.0.1:10001"),
+ ]
+ [
+ ArrowFlight::Endpoint.new(page_view_ticket, locations),
+ ]
+ end
+
+ def page_view
+ table = page_view_table
+ descriptor = page_view_descriptor
+ endpoints = page_view_endpoints
+ output = Arrow::ResizableBuffer.new(0)
+ table.save(output, format: :stream)
+ ArrowFlight::Info.new(table.schema,
+ descriptor,
+ endpoints,
+ table.n_rows,
+ output.size)
+ end
+ end
+end
diff --git a/src/arrow/ruby/red-arrow-flight/test/helper/server.rb b/src/arrow/ruby/red-arrow-flight/test/helper/server.rb
new file mode 100644
index 000000000..269bb5f3d
--- /dev/null
+++ b/src/arrow/ruby/red-arrow-flight/test/helper/server.rb
@@ -0,0 +1,39 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+require_relative "info-generator"
+
+module Helper
+ class Server < ArrowFlight::Server
+ type_register
+
+ private
+ def virtual_do_list_flights(context, criteria)
+ generator = InfoGenerator.new
+ [generator.page_view]
+ end
+
+ def virtual_do_do_get(context, ticket)
+ generator = InfoGenerator.new
+ if ticket.data.to_s != generator.page_view_ticket
+ raise Arrow::Error::Invalid.new("invalid ticket")
+ end
+ table = generator.page_view_table
+ ArrowFlight::RecordBatchStream.new(table)
+ end
+ end
+end