diff options
author | Carlos O'Ryan <coryan@users.noreply.github.com> | 2020-01-16T16·04-0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-16T16·04-0500 |
commit | 52758bec0324a6b120f0bb938f527b1759a0da3d (patch) | |
tree | 036e2b7d89f5645b5be7faa25591e2bcaf488453 /ci/test-install | |
parent | 20009f59de903d5a70038adee308020a82e3ecad (diff) |
feat: add Cloud Pub/Sub protos (#31)
Diffstat (limited to 'ci/test-install')
-rwxr-xr-x | ci/test-install/compile-test-projects.sh | 53 | ||||
-rw-r--r-- | ci/test-install/pubsub/CMakeLists.txt | 28 | ||||
-rw-r--r-- | ci/test-install/pubsub/Makefile | 36 | ||||
-rw-r--r-- | ci/test-install/pubsub/main.cc | 22 |
4 files changed, 110 insertions, 29 deletions
diff --git a/ci/test-install/compile-test-projects.sh b/ci/test-install/compile-test-projects.sh index d5398f1e4490..25eea82ffc7f 100755 --- a/ci/test-install/compile-test-projects.sh +++ b/ci/test-install/compile-test-projects.sh @@ -21,32 +21,27 @@ set -eu # Verify the installed CMake config and pkgconfig files are actually usable. -# For Bigtable protos -cp -R /home/build/cpp-cmakefiles/ci/test-install/bigtable \ - /home/build/test-install-bigtable -cd /home/build/test-install-bigtable -cmake -H. -Bcmake-out -cmake --build cmake-out -- -j "$(nproc)" -cmake-out/utilize-googleapis -env PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig \ - make - -# For BigQuery protos -cp -R /home/build/cpp-cmakefiles/ci/test-install/bigquery \ - /home/build/test-install-bigquery -cd /home/build/test-install-bigquery -cmake -H. -Bcmake-out -cmake --build cmake-out -- -j "$(nproc)" -cmake-out/utilize-googleapis -env PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig \ - make - -# For spanner protos -cp -R /home/build/cpp-cmakefiles/ci/test-install/spanner \ - /home/build/test-install-spanner -cd /home/build/test-install-spanner -cmake -H. -Bcmake-out -cmake --build cmake-out -- -j "$(nproc)" -cmake-out/utilize-googleapis -env PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig \ - make +for subdir in bigquery bigtable pubsub spanner; do + # Compile a test program using CMake. + echo "================================================================" + echo "Testing ${subdir} $(date) with CMake" + echo "================================================================" + src_dir="/home/build/cpp-cmakefiles/ci/test-install/${subdir}" + cmake_dir="/home/build/test-cmake-${subdir}" + make_dir="/home/build/test-make-${subdir}" + cmake -H"${src_dir}" -B"${cmake_dir}" + cmake --build "${cmake_dir}" -- -j "$(nproc)" + # Verify the generated program is runnable + "${cmake_dir}/utilize-googleapis" + echo "================================================================" + echo "Testing ${subdir} $(date) with Make" + echo "================================================================" + cp -R "${src_dir}" "${make_dir}" + cd "${make_dir}" + # With Make we may need to set PKG_CONFIG_PATH because the code is installed + # in /usr/local and that is not a default search location in some distros. + env PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:/usr/local/lib/pkgconfig \ + make + # Verify the generated program is runnable + "${make_dir}/main" +done diff --git a/ci/test-install/pubsub/CMakeLists.txt b/ci/test-install/pubsub/CMakeLists.txt new file mode 100644 index 000000000000..cc8d59e187af --- /dev/null +++ b/ci/test-install/pubsub/CMakeLists.txt @@ -0,0 +1,28 @@ +# ~~~ +# Copyright 2019 Google LLC +# +# Licensed 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. +# ~~~ + +cmake_minimum_required(VERSION 3.5) + +project(utilize-googleapis CXX C) + +# Configure the compiler options, we will be using C++11 features. +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(googleapis REQUIRED) + +add_executable(utilize-googleapis main.cc) +target_link_libraries(utilize-googleapis googleapis-c++::pubsub_protos) diff --git a/ci/test-install/pubsub/Makefile b/ci/test-install/pubsub/Makefile new file mode 100644 index 000000000000..a5cbdcf78911 --- /dev/null +++ b/ci/test-install/pubsub/Makefile @@ -0,0 +1,36 @@ +# Copyright 2019 Google LLC +# +# Licensed 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. + +# A simple Makefile to test the `install` target. +# +# This is not intended to be a demonstration of how to write good Makefiles, +# nor is it a general solution on how to build Makefiles for google-cloud-cpp. +# It is simply a minimal file to test the installed pkg-config support files. + +# The CXX, CXXFLAGS and CXXLD variables are hard-coded. These values work for +# our tests, but applications would typically make them configurable parameters. +CXX=g++ -std=c++11 +CXXLD=$(CXX) + +all: main + +# Configuration variables to compile and link against the library. +PROTOS := googleapis_cpp_pubsub_protos +CXXFLAGS := $(shell pkg-config $(PROTOS) --cflags) +CXXLDFLAGS := $(shell pkg-config $(PROTOS) --libs-only-L) +LIBS := $(shell pkg-config $(PROTOS) --libs-only-l) + +# A target using the Google Cloud Storage C++ client library. +main: main.cc + $(CXXLD) $(CXXFLAGS) $(CXXFLAGS) $(CXXLDFLAGS) -o $@ $^ $(LIBS) diff --git a/ci/test-install/pubsub/main.cc b/ci/test-install/pubsub/main.cc new file mode 100644 index 000000000000..05549169dafc --- /dev/null +++ b/ci/test-install/pubsub/main.cc @@ -0,0 +1,22 @@ +// Copyright 2019 Google LLC +// +// Licensed 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. + +#include <google/pubsub/v1/pubsub.grpc.pb.h> +#include <grpcpp/grpcpp.h> + +int main() { + auto creds = grpc::InsecureChannelCredentials(); + auto channel = grpc::CreateChannel("localhost:12345", creds); + auto stub = google::pubsub::v1::Publisher::NewStub(channel); +} |