Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: skip generating grpc-* directory if transport is rest #1979

Merged
merged 12 commits into from Sep 14, 2023
21 changes: 12 additions & 9 deletions library_generation/generate_library.sh
Expand Up @@ -95,15 +95,18 @@ download_tools "${gapic_generator_version}" "${protobuf_version}" "${grpc_versio
##################### Section 1 #####################
# generate grpc-*/
#####################################################
"${protoc_path}"/protoc "--plugin=protoc-gen-rpc-plugin=protoc-gen-grpc-java-${grpc_version}-${os_architecture}.exe" \
"--rpc-plugin_out=:${destination_path}/java_grpc.jar" \
${proto_files} # Do not quote because this variable should not be treated as one long string.
# unzip java_grpc.jar to grpc-*/src/main/java
unzip_src_files "grpc"
# remove empty files in grpc-*/src/main/java
remove_empty_files "grpc"
# remove grpc version in *ServiceGrpc.java file so the content is identical with bazel build.
remove_grpc_version
if [[ ! "${transport}" == "rest" ]]; then
# do not need to generate grpc-* if the transport is `rest`.
"${protoc_path}"/protoc "--plugin=protoc-gen-rpc-plugin=protoc-gen-grpc-java-${grpc_version}-${os_architecture}.exe" \
"--rpc-plugin_out=:${destination_path}/java_grpc.jar" \
${proto_files} # Do not quote because this variable should not be treated as one long string.
# unzip java_grpc.jar to grpc-*/src/main/java
unzip_src_files "grpc"
# remove empty files in grpc-*/src/main/java
remove_empty_files "grpc"
# remove grpc version in *ServiceGrpc.java file so the content is identical with bazel build.
remove_grpc_version
fi
###################### Section 2 #####################
## generate gapic-*/, part of proto-*/, samples/
######################################################
Expand Down
21 changes: 3 additions & 18 deletions library_generation/test/generate_library_integration_test.sh
Expand Up @@ -55,24 +55,9 @@ grpc_version=$(get_version_from_WORKSPACE "_grpc_version" WORKSPACE "=")
echo "The version of protoc-gen-grpc-java plugin is ${gapic_generator_version}."
# parse GAPIC options from proto_path/BUILD.bazel
proto_build_file_path="${proto_path}/BUILD.bazel"
transport=$(get_config_from_BUILD \
"${proto_build_file_path}" \
"java_gapic_library(" \
"grpc+rest" \
"grpc"
)
rest_numeric_enums=$(get_config_from_BUILD \
"${proto_build_file_path}" \
"java_gapic_library(" \
"rest_numeric_enums = False" \
"true"
)
include_samples=$(get_config_from_BUILD \
"${proto_build_file_path}" \
"java_gapic_assembly_gradle_pkg(" \
"include_samples = True" \
"false"
)
transport=$(get_transport_from_BUILD "${proto_build_file_path}")
rest_numeric_enums=$(get_rest_numeric_enums_from_BUILD "${proto_build_file_path}")
include_samples=$(get_include_samples_from_BUILD "${proto_build_file_path}")
echo "GAPIC options are transport=${transport}, rest_numeric_enums=${rest_numeric_enums}, include_samples=${include_samples}."
# generate GAPIC client library
echo "Generating library from ${proto_path}, to ${destination_path}..."
Expand Down
106 changes: 70 additions & 36 deletions library_generation/test/generate_library_unit_tests.sh
Expand Up @@ -230,40 +230,67 @@ generate_library_failed_with_invalid_grpc_version() {
cleanup "${destination}"
}

get_config_from_valid_BUILD_matched_test() {
build_file="${script_dir}/resources/misc/TESTBUILD.bazel"
rule="java_gapic_library("
# the pattern we expect to find in the BUILD file
pattern_should_match="name"
# default value if the pattern was not found
if_matched_return="got-a-match"
if_not_matched_return="no-match"
pattern_matched_result=$(get_config_from_BUILD \
"${build_file}" \
"${rule}" \
"${pattern_should_match}" \
"${if_not_matched_return}" \
"${if_matched_return}"
)
assertEquals "${if_matched_return}" "${pattern_matched_result}"
}

get_config_from_valid_BUILD_not_match_test() {
build_file="${script_dir}/resources/misc/TESTBUILD.bazel"
rule="java_gapic_library("
# the pattern that we should not find in the BUILD file
pattern_should_not_match="should-not-match"
# default value if the pattern was not found
if_matched_return="got-a-match"
if_not_matched_return="no-match"
pattern_not_matched_result=$(get_config_from_BUILD \
"${build_file}" \
"${rule}" \
"${pattern_should_not_match}" \
"${if_not_matched_return}" \
"${if_matched_return}"
)
assertEquals "${if_not_matched_return}" "${pattern_not_matched_result}"
get_transport_from_BUILD_grpc_rest_test() {
local build_file="${script_dir}/resources/misc/BUILD_grpc_rest.bazel"
local transport
transport=$(get_transport_from_BUILD "${build_file}")
assertEquals "grpc+rest" "${transport}"
}

get_transport_from_BUILD_grpc_test() {
local build_file="${script_dir}/resources/misc/BUILD_grpc.bazel"
local transport
transport=$(get_transport_from_BUILD "${build_file}")
assertEquals "grpc" "${transport}"
}

get_transport_from_BUILD_rest_test() {
local build_file="${script_dir}/resources/misc/BUILD_rest.bazel"
local transport
transport=$(get_transport_from_BUILD "${build_file}")
assertEquals "rest" "${transport}"
}

get_rest_numeric_enums_from_BUILD_true_test() {
local build_file="${script_dir}/resources/misc/BUILD_rest_numeric_enums_true.bazel"
local rest_numeric_enums
rest_numeric_enums=$(get_rest_numeric_enums_from_BUILD "${build_file}")
assertEquals "true" "${rest_numeric_enums}"
}

get_rest_numeric_enums_from_BUILD_false_test() {
local build_file="${script_dir}/resources/misc/BUILD_rest_numeric_enums_false.bazel"
local rest_numeric_enums
rest_numeric_enums=$(get_rest_numeric_enums_from_BUILD "${build_file}")
assertEquals "false" "${rest_numeric_enums}"
}

get_rest_numeric_enums_from_BUILD_empty_test() {
local build_file="${script_dir}/resources/misc/BUILD_rest_numeric_enums_empty.bazel"
local rest_numeric_enums
rest_numeric_enums=$(get_rest_numeric_enums_from_BUILD "${build_file}")
assertEquals "false" "${rest_numeric_enums}"
}

get_include_samples_from_BUILD_true_test() {
local build_file="${script_dir}/resources/misc/BUILD_include_samples_true.bazel"
local include_samples
include_samples=$(get_include_samples_from_BUILD "${build_file}")
assertEquals "true" "${include_samples}"
}

get_include_samples_from_BUILD_false_test() {
local build_file="${script_dir}/resources/misc/BUILD_include_samples_false.bazel"
local include_samples
include_samples=$(get_include_samples_from_BUILD "${build_file}")
assertEquals "false" "${include_samples}"
}

get_include_samples_from_BUILD_empty_test() {
local build_file="${script_dir}/resources/misc/BUILD_include_samples_empty.bazel"
local include_samples
include_samples=$(get_include_samples_from_BUILD "${build_file}")
assertEquals "false" "${include_samples}"
}

get_version_from_valid_WORKSPACE_test() {
Expand Down Expand Up @@ -312,8 +339,15 @@ test_list=(
generate_library_failed_with_invalid_generator_version
generate_library_failed_with_invalid_protobuf_version
generate_library_failed_with_invalid_grpc_version
get_config_from_valid_BUILD_matched_test
get_config_from_valid_BUILD_not_match_test
get_transport_from_BUILD_grpc_rest_test
get_transport_from_BUILD_grpc_test
get_transport_from_BUILD_rest_test
get_rest_numeric_enums_from_BUILD_true_test
get_rest_numeric_enums_from_BUILD_false_test
get_rest_numeric_enums_from_BUILD_empty_test
get_include_samples_from_BUILD_true_test
get_include_samples_from_BUILD_false_test
get_include_samples_from_BUILD_empty_test
get_version_from_valid_WORKSPACE_test
get_generator_version_from_valid_versions_txt_test
get_gax_version_from_valid_versions_txt_test
Expand Down
5 changes: 5 additions & 0 deletions library_generation/test/resources/misc/BUILD_grpc.bazel
@@ -0,0 +1,5 @@
# this file is only used in testing `get_transport_from_BUILD` in utilities.sh

java_gapic_library(
transport = "grpc",
)
@@ -0,0 +1,5 @@
# this file is only used in testing `get_transport_from_BUILD` in utilities.sh

java_gapic_library(
transport = "grpc+rest",
)
@@ -0,0 +1,5 @@
# this file is only used in testing `get_include_samples_from_BUILD` in utilities.sh

java_gapic_assembly_gradle_pkg(

)
@@ -0,0 +1,5 @@
# this file is only used in testing `get_include_samples_from_BUILD` in utilities.sh

java_gapic_assembly_gradle_pkg(
include_samples = False,
)
@@ -0,0 +1,5 @@
# this file is only used in testing `get_include_samples_from_BUILD` in utilities.sh

java_gapic_assembly_gradle_pkg(
include_samples = True,
)
5 changes: 5 additions & 0 deletions library_generation/test/resources/misc/BUILD_rest.bazel
@@ -0,0 +1,5 @@
# this file is only used in testing `get_transport_from_BUILD` in utilities.sh

java_gapic_library(
transport = "rest",
)
@@ -0,0 +1,5 @@
# this file is only used in testing `get_rest_numeric_enums_from_BUILD` in utilities.sh

java_gapic_library(

)
@@ -0,0 +1,5 @@
# this file is only used in testing `get_rest_numeric_enums_from_BUILD` in utilities.sh

java_gapic_library(
rest_numeric_enums = False
)
@@ -0,0 +1,5 @@
# this file is only used in testing `get_rest_numeric_enums_from_BUILD` in utilities.sh

java_gapic_library(
rest_numeric_enums = True
)
166 changes: 0 additions & 166 deletions library_generation/test/resources/misc/TESTBUILD.bazel

This file was deleted.