Skip to content

Commit

Permalink
ARROW-17254: [C++][Go][Java][FlightRPC] Implement and test Flight SQL…
Browse files Browse the repository at this point in the history
… GetSchema (apache#13898)

Consistently implements and tests the GetSchema method in Flight SQL.

Builds on apache#13897.

Authored-by: David Li <[email protected]>
Signed-off-by: David Li <[email protected]>
  • Loading branch information
lidavidm authored and zagto committed Oct 7, 2022
1 parent 1653d55 commit 4937adc
Show file tree
Hide file tree
Showing 19 changed files with 1,173 additions and 225 deletions.
11 changes: 11 additions & 0 deletions cpp/src/arrow/flight/integration_tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,14 @@ target_link_libraries(flight-test-integration-client

add_dependencies(arrow-integration flight-test-integration-client
flight-test-integration-server)

if(ARROW_BUILD_TESTS)
add_arrow_test(flight_integration_test
SOURCES
flight_integration_test.cc
test_integration.cc
STATIC_LINK_LIBS
${ARROW_FLIGHT_INTEGRATION_TEST_LINK_LIBS}
LABELS
"arrow_flight")
endif()
60 changes: 60 additions & 0 deletions cpp/src/arrow/flight/integration_tests/flight_integration_test.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
// 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.

// Run the integration test scenarios in-process.

#include <gmock/gmock.h>
#include <gtest/gtest.h>

#include "arrow/flight/integration_tests/test_integration.h"
#include "arrow/status.h"
#include "arrow/testing/gtest_util.h"

namespace arrow {
namespace flight {
namespace integration_tests {

Status RunScenario(const std::string& scenario_name) {
std::shared_ptr<Scenario> scenario;
ARROW_RETURN_NOT_OK(GetScenario(scenario_name, &scenario));

std::unique_ptr<FlightServerBase> server;
ARROW_ASSIGN_OR_RAISE(Location bind_location,
arrow::flight::Location::ForGrpcTcp("0.0.0.0", 0));
FlightServerOptions server_options(bind_location);
ARROW_RETURN_NOT_OK(scenario->MakeServer(&server, &server_options));
ARROW_RETURN_NOT_OK(server->Init(server_options));

ARROW_ASSIGN_OR_RAISE(Location location,
arrow::flight::Location::ForGrpcTcp("0.0.0.0", server->port()));
auto client_options = arrow::flight::FlightClientOptions::Defaults();
ARROW_RETURN_NOT_OK(scenario->MakeClient(&client_options));
ARROW_ASSIGN_OR_RAISE(std::unique_ptr<FlightClient> client,
FlightClient::Connect(location, client_options));
ARROW_RETURN_NOT_OK(scenario->RunClient(std::move(client)));
return Status::OK();
}

TEST(FlightIntegration, AuthBasicProto) { ASSERT_OK(RunScenario("auth:basic_proto")); }

TEST(FlightIntegration, Middleware) { ASSERT_OK(RunScenario("middleware")); }

TEST(FlightIntegration, FlightSql) { ASSERT_OK(RunScenario("flight_sql")); }

} // namespace integration_tests
} // namespace flight
} // namespace arrow
351 changes: 223 additions & 128 deletions cpp/src/arrow/flight/integration_tests/test_integration.cc

Large diffs are not rendered by default.

Loading

0 comments on commit 4937adc

Please sign in to comment.