| # 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. |
| |
| # Assumes: |
| # * We've already done arrow::install_pyarrow() |
| # * R -e 'arrow::load_flight_server("demo_flight_server")$DemoFlightServer(port = 8089)$serve()' |
| |
| if (process_is_running("demo_flight_server")) { |
| client <- flight_connect(port = 8089) |
| flight_obj <- tempfile() |
| |
| test_that("flight_path_exists", { |
| expect_false(flight_path_exists(client, flight_obj)) |
| expect_false(flight_obj %in% list_flights(client)) |
| }) |
| |
| test_that("flight_put", { |
| flight_put(client, example_data, path = flight_obj) |
| expect_true(flight_path_exists(client, flight_obj)) |
| expect_true(flight_obj %in% list_flights(client)) |
| expect_error( |
| flight_put(client, Array$create(c(1:3)), path = flight_obj), |
| regexp = 'data must be a "data.frame", "Table", or "RecordBatch"' |
| ) |
| }) |
| |
| test_that("flight_put with max_chunksize", { |
| flight_put(client, example_data, path = flight_obj, max_chunksize = 1) |
| expect_true(flight_path_exists(client, flight_obj)) |
| expect_true(flight_obj %in% list_flights(client)) |
| expect_warning( |
| flight_put(client, record_batch(example_data), path = flight_obj, max_chunksize = 123), |
| regexp = "`max_chunksize` is not supported for flight_put with RecordBatch" |
| ) |
| expect_error( |
| flight_put(client, Array$create(c(1:3)), path = flight_obj), |
| regexp = 'data must be a "data.frame", "Table", or "RecordBatch"' |
| ) |
| }) |
| |
| test_that("flight_get", { |
| expect_equal_data_frame(flight_get(client, flight_obj), example_data) |
| }) |
| |
| test_that("flight_put with RecordBatch", { |
| flight_obj2 <- tempfile() |
| flight_put(client, RecordBatch$create(example_data), path = flight_obj2) |
| expect_equal_data_frame(flight_get(client, flight_obj2), example_data) |
| }) |
| |
| test_that("flight_put with overwrite = FALSE", { |
| expect_error( |
| flight_put(client, example_with_times, path = flight_obj, overwrite = FALSE), |
| "exists" |
| ) |
| # Default is TRUE so this will overwrite |
| flight_put(client, example_with_times, path = flight_obj) |
| expect_equal_data_frame(flight_get(client, flight_obj), example_with_times) |
| }) |
| |
| test_that("flight_disconnect", { |
| flight_disconnect(client) |
| # Idempotent |
| flight_disconnect(client) |
| }) |
| } else { |
| # Kinda hacky, let's put a skipped test here, just so we note that the tests |
| # didn't run |
| test_that("Flight tests", { |
| skip("Flight server is not running") |
| }) |
| } |