| load( |
| "//rules_java_gapic:java_gapic.bzl", |
| "java_gapic_library", |
| "java_gapic_test", |
| ) |
| load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library") |
| load("@rules_gapic//:gapic.bzl", "proto_library_with_info") |
| load("@rules_proto//proto:defs.bzl", "proto_library") |
| |
| #################################################### |
| # Integration Test Rules |
| #################################################### |
| |
| API_GAPIC_TARGETS = { |
| # basic case |
| "asset": "@com_google_googleapis//google/cloud/asset/v1:asset_java_gapic", |
| # Check that the capital name edge case is handled. |
| "credentials": "@com_google_googleapis//google/iam/credentials/v1:credentials_java_gapic", |
| # Mixin-only special-case API can build on its own. |
| "iam": ":iam_java_gapic", # local target: Googleapis' LRO does not have a Java Gapic. |
| # mixins, with an override in the proto file |
| "kms": ":kms_java_gapic", # local target: mixins are not rolled out yet. |
| # Special=case handling for "_deleted-topic_" resource name patterns. |
| "pubsub": ":pubsub_java_gapic", |
| # Java package remapping in gapic.yaml |
| "logging": "@com_google_googleapis//google/logging/v2:logging_java_gapic", |
| # Has a gapic.yaml. |
| "redis": "@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_gapic", |
| # Exercises storage-specific edge cases. |
| "storage": "@com_google_googleapis//google/storage/v2:storage_java_gapic", |
| # No gRPC service config. |
| "library": "@com_google_googleapis//google/example/library/v1:library_java_gapic", |
| # REGAPIC test. |
| "compute": "@com_google_googleapis//google/cloud/compute/v1small:compute_small_java_gapic", |
| # Routing headers. |
| "bigtable": "@com_google_googleapis//google/bigtable/v2:bigtable_java_gapic", |
| # REGAPIC REST Client Generation |
| "apigeeconnect": "@com_google_googleapis//google/cloud/apigeeconnect/v1:apigeeconnect_java_gapic", |
| } |
| |
| [filegroup( |
| name = "%s_goldens_files" % lib_name, |
| srcs = glob( |
| ["goldens/%s/**" % lib_name], |
| exclude = ["BUILD.bazel"], |
| ), |
| ) for lib_name in API_GAPIC_TARGETS] |
| |
| [sh_test( |
| name = lib_name, |
| srcs = ["//scripts:diff_gen_and_golden.sh"], |
| args = [lib_name], |
| data = [ |
| ":%s_goldens_files" % lib_name, |
| "%s_srcjar_raw.srcjar" % gapic_target, |
| ], |
| ) for lib_name, gapic_target in API_GAPIC_TARGETS.items()] |
| |
| [sh_binary( |
| name = "update_%s" % lib_name, |
| srcs = ["//scripts:update_golden.sh"], |
| args = [lib_name], |
| data = [ |
| ":%s_goldens_files" % lib_name, |
| "%s_srcjar_raw.srcjar" % gapic_target, |
| ], |
| ) for lib_name, gapic_target in API_GAPIC_TARGETS.items()] |
| |
| #################################################### |
| # API Library Rules |
| #################################################### |
| # Asset API. |
| java_gapic_test( |
| name = "asset_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.cloud.asset.v1.AssetServiceClientTest", |
| ], |
| runtime_deps = ["@com_google_googleapis//google/cloud/asset/v1:asset_java_gapic_test"], |
| ) |
| |
| # Redis API. |
| java_gapic_test( |
| name = "redis_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.cloud.redis.v1beta1.CloudRedisClientTest", |
| ], |
| runtime_deps = ["@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_gapic_test"], |
| ) |
| |
| # Storage API. |
| java_gapic_test( |
| name = "storage_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.storage.v2.StorageClientTest", |
| ], |
| runtime_deps = ["@com_google_googleapis//google/storage/v2:storage_java_gapic_test"], |
| ) |
| |
| # Logging API |
| java_gapic_test( |
| name = "logging_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.cloud.logging.v2.ConfigClientTest", |
| "com.google.cloud.logging.v2.LoggingClientTest", |
| "com.google.cloud.logging.v2.MetricsClientTest", |
| ], |
| runtime_deps = ["@com_google_googleapis//google/logging/v2:logging_java_gapic_test"], |
| ) |
| |
| # example/library API. |
| # Tests the edge case of a legitimately missing gRPC service config file. |
| java_gapic_test( |
| name = "library_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.cloud.example.library.v1.LibraryServiceClientTest", |
| ], |
| runtime_deps = ["@com_google_googleapis//google/example/library/v1:library_java_gapic_test"], |
| ) |
| |
| # IAMCredentials. |
| # Check that the capital name edge case is handled. |
| java_gapic_test( |
| name = "credentials_java_gapic_test_suite", |
| test_classes = [ |
| # Match google3. |
| "com.google.cloud.iam.credentials.v1.IAMCredentialsClientTest", |
| ], |
| runtime_deps = ["@com_google_googleapis//google/iam/credentials/v1:credentials_java_gapic_test"], |
| ) |
| |
| # Bigtable API |
| java_gapic_test( |
| name = "bigtable_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.cloud.bigtable.data.v2.BaseBigtableDataClientTest", |
| ], |
| runtime_deps = ["@com_google_googleapis//google/bigtable/v2:bigtable_java_gapic_test"], |
| ) |
| |
| # Apigee Connect V1 API |
| java_gapic_test( |
| name = "apigeeconnect_java_gapic_test_suite", |
| test_classes = [], |
| runtime_deps = ["@com_google_googleapis//google/cloud/apigeeconnect/v1:apigeeconnect_java_gapic_test"], |
| ) |
| |
| # IAM (for a standalone mixed-in API). |
| java_gapic_library( |
| name = "iam_java_gapic", |
| srcs = ["@com_google_googleapis//google/iam/v1:iam_proto_with_info"], |
| grpc_service_config = "iam_grpc_service_config.json", |
| test_deps = [ |
| "@com_google_googleapis//google/iam/v1:iam_java_grpc", |
| ], |
| deps = [ |
| "@com_google_googleapis//google/iam/v1:iam_java_proto", |
| ], |
| ) |
| |
| java_gapic_test( |
| name = "iam_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.iam.v1.IAMPolicyClientTest", |
| ], |
| runtime_deps = ["iam_java_gapic_test"], |
| ) |
| |
| # KMS (for mixins). |
| proto_library( |
| name = "kms_proto", |
| srcs = [ |
| "apis/kms/v1/resources.proto", |
| "apis/kms/v1/service.proto", |
| ], |
| deps = [ |
| "@com_google_googleapis//google/api:annotations_proto", |
| "@com_google_googleapis//google/api:client_proto", |
| "@com_google_googleapis//google/api:field_behavior_proto", |
| "@com_google_googleapis//google/api:resource_proto", |
| "@com_google_googleapis//google/cloud/location:location_proto", |
| "@com_google_googleapis//google/iam/v1:iam_policy_proto", |
| "@com_google_googleapis//google/iam/v1:policy_proto", |
| "@com_google_protobuf//:duration_proto", |
| "@com_google_protobuf//:field_mask_proto", |
| "@com_google_protobuf//:struct_proto", |
| "@com_google_protobuf//:timestamp_proto", |
| "@com_google_protobuf//:wrappers_proto", |
| ], |
| ) |
| |
| proto_library_with_info( |
| name = "kms_proto_with_info", |
| deps = [ |
| ":kms_proto", |
| "@com_google_googleapis//google/cloud:common_resources_proto", |
| "@com_google_googleapis//google/cloud/location:location_proto", |
| "@com_google_googleapis//google/iam/v1:iam_policy_proto", |
| "@com_google_googleapis//google/iam/v1:policy_proto", |
| ], |
| ) |
| |
| java_proto_library( |
| name = "kms_java_proto", |
| deps = [":kms_proto"], |
| ) |
| |
| java_grpc_library( |
| name = "kms_java_grpc", |
| srcs = [":kms_proto"], |
| deps = [":kms_java_proto"], |
| ) |
| |
| java_gapic_library( |
| name = "kms_java_gapic", |
| srcs = [":kms_proto_with_info"], |
| grpc_service_config = "@com_google_googleapis//google/cloud/kms/v1:cloudkms_grpc_service_config.json", |
| # For the IAM mixin. |
| service_yaml = "apis/kms/v1/cloudkms_test_mixins_v1.yaml", |
| test_deps = [ |
| ":kms_java_grpc", |
| "@com_google_googleapis//google/cloud/location:location_java_grpc", |
| "@com_google_googleapis//google/iam/v1:iam_java_grpc", |
| ], |
| deps = [ |
| ":kms_java_proto", |
| "@com_google_googleapis//google/cloud/location:location_java_proto", |
| "@com_google_googleapis//google/iam/v1:iam_java_proto", |
| ], |
| ) |
| |
| java_gapic_test( |
| name = "kms_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.cloud.kms.v1.KeyManagementServiceClientTest", |
| ], |
| runtime_deps = [":kms_java_gapic_test"], |
| ) |
| |
| # PubSub |
| java_gapic_library( |
| name = "pubsub_java_gapic", |
| srcs = ["@com_google_googleapis//google/pubsub/v1:pubsub_proto_with_info"], |
| gapic_yaml = "@com_google_googleapis//google/pubsub/v1:pubsub_gapic.yaml", |
| grpc_service_config = "@com_google_googleapis//google/pubsub/v1:pubsub_grpc_service_config.json", |
| # For the IAM mixin. |
| service_yaml = "pubsub_v1.yaml", |
| test_deps = [ |
| "@com_google_googleapis//google/pubsub/v1:pubsub_java_grpc", |
| "@com_google_googleapis//google/iam/v1:iam_java_grpc", |
| ], |
| deps = [ |
| "@com_google_googleapis//google/iam/v1:iam_java_proto", |
| "@com_google_googleapis//google/pubsub/v1:pubsub_java_proto", |
| ], |
| ) |
| |
| java_gapic_test( |
| name = "pubsub_java_gapic_test_suite", |
| test_classes = [ |
| "com.google.cloud.pubsub.v1.SubscriptionAdminClientTest", |
| "com.google.cloud.pubsub.v1.TopicAdminClientTest", |
| ], |
| runtime_deps = [":pubsub_java_gapic_test"], |
| ) |