1load( 2 "//rules_java_gapic:java_gapic.bzl", 3 "java_gapic_library", 4 "java_gapic_test", 5) 6load("@io_grpc_grpc_java//:java_grpc_library.bzl", "java_grpc_library") 7load("@rules_gapic//:gapic.bzl", "proto_library_with_info") 8load("@rules_proto//proto:defs.bzl", "proto_library") 9 10#################################################### 11# Integration Test Rules 12#################################################### 13 14API_GAPIC_TARGETS = { 15 # basic case 16 "asset": "@com_google_googleapis//google/cloud/asset/v1:asset_java_gapic", 17 # Check that the capital name edge case is handled. 18 "credentials": "@com_google_googleapis//google/iam/credentials/v1:credentials_java_gapic", 19 # Mixin-only special-case API can build on its own. 20 "iam": ":iam_java_gapic", # local target: Googleapis' LRO does not have a Java Gapic. 21 # mixins, with an override in the proto file 22 "kms": ":kms_java_gapic", # local target: mixins are not rolled out yet. 23 # Special=case handling for "_deleted-topic_" resource name patterns. 24 "pubsub": ":pubsub_java_gapic", 25 # Java package remapping in gapic.yaml 26 "logging": "@com_google_googleapis//google/logging/v2:logging_java_gapic", 27 # Has a gapic.yaml. 28 "redis": "@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_gapic", 29 # Exercises storage-specific edge cases. 30 "storage": "@com_google_googleapis//google/storage/v2:storage_java_gapic", 31 # No gRPC service config. 32 "library": "@com_google_googleapis//google/example/library/v1:library_java_gapic", 33 # REGAPIC test. 34 "compute": "@com_google_googleapis//google/cloud/compute/v1small:compute_small_java_gapic", 35 # Routing headers. 36 "bigtable": "@com_google_googleapis//google/bigtable/v2:bigtable_java_gapic", 37 # REGAPIC REST Client Generation 38 "apigeeconnect": "@com_google_googleapis//google/cloud/apigeeconnect/v1:apigeeconnect_java_gapic", 39} 40 41[filegroup( 42 name = "%s_goldens_files" % lib_name, 43 srcs = glob( 44 ["goldens/%s/**" % lib_name], 45 exclude = ["BUILD.bazel"], 46 ), 47) for lib_name in API_GAPIC_TARGETS] 48 49[sh_test( 50 name = lib_name, 51 srcs = ["//scripts:diff_gen_and_golden.sh"], 52 args = [lib_name], 53 data = [ 54 ":%s_goldens_files" % lib_name, 55 "%s_srcjar_raw.srcjar" % gapic_target, 56 ], 57) for lib_name, gapic_target in API_GAPIC_TARGETS.items()] 58 59[sh_binary( 60 name = "update_%s" % lib_name, 61 srcs = ["//scripts:update_golden.sh"], 62 args = [lib_name], 63 data = [ 64 ":%s_goldens_files" % lib_name, 65 "%s_srcjar_raw.srcjar" % gapic_target, 66 ], 67) for lib_name, gapic_target in API_GAPIC_TARGETS.items()] 68 69#################################################### 70# API Library Rules 71#################################################### 72# Asset API. 73java_gapic_test( 74 name = "asset_java_gapic_test_suite", 75 test_classes = [ 76 "com.google.cloud.asset.v1.AssetServiceClientTest", 77 ], 78 runtime_deps = ["@com_google_googleapis//google/cloud/asset/v1:asset_java_gapic_test"], 79) 80 81# Redis API. 82java_gapic_test( 83 name = "redis_java_gapic_test_suite", 84 test_classes = [ 85 "com.google.cloud.redis.v1beta1.CloudRedisClientTest", 86 ], 87 runtime_deps = ["@com_google_googleapis//google/cloud/redis/v1beta1:redis_java_gapic_test"], 88) 89 90# Storage API. 91java_gapic_test( 92 name = "storage_java_gapic_test_suite", 93 test_classes = [ 94 "com.google.storage.v2.StorageClientTest", 95 ], 96 runtime_deps = ["@com_google_googleapis//google/storage/v2:storage_java_gapic_test"], 97) 98 99# Logging API 100java_gapic_test( 101 name = "logging_java_gapic_test_suite", 102 test_classes = [ 103 "com.google.cloud.logging.v2.ConfigClientTest", 104 "com.google.cloud.logging.v2.LoggingClientTest", 105 "com.google.cloud.logging.v2.MetricsClientTest", 106 ], 107 runtime_deps = ["@com_google_googleapis//google/logging/v2:logging_java_gapic_test"], 108) 109 110# example/library API. 111# Tests the edge case of a legitimately missing gRPC service config file. 112java_gapic_test( 113 name = "library_java_gapic_test_suite", 114 test_classes = [ 115 "com.google.cloud.example.library.v1.LibraryServiceClientTest", 116 ], 117 runtime_deps = ["@com_google_googleapis//google/example/library/v1:library_java_gapic_test"], 118) 119 120# IAMCredentials. 121# Check that the capital name edge case is handled. 122java_gapic_test( 123 name = "credentials_java_gapic_test_suite", 124 test_classes = [ 125 # Match google3. 126 "com.google.cloud.iam.credentials.v1.IAMCredentialsClientTest", 127 ], 128 runtime_deps = ["@com_google_googleapis//google/iam/credentials/v1:credentials_java_gapic_test"], 129) 130 131# Bigtable API 132java_gapic_test( 133 name = "bigtable_java_gapic_test_suite", 134 test_classes = [ 135 "com.google.cloud.bigtable.data.v2.BaseBigtableDataClientTest", 136 ], 137 runtime_deps = ["@com_google_googleapis//google/bigtable/v2:bigtable_java_gapic_test"], 138) 139 140# Apigee Connect V1 API 141java_gapic_test( 142 name = "apigeeconnect_java_gapic_test_suite", 143 test_classes = [], 144 runtime_deps = ["@com_google_googleapis//google/cloud/apigeeconnect/v1:apigeeconnect_java_gapic_test"], 145) 146 147# IAM (for a standalone mixed-in API). 148java_gapic_library( 149 name = "iam_java_gapic", 150 srcs = ["@com_google_googleapis//google/iam/v1:iam_proto_with_info"], 151 grpc_service_config = "iam_grpc_service_config.json", 152 test_deps = [ 153 "@com_google_googleapis//google/iam/v1:iam_java_grpc", 154 ], 155 deps = [ 156 "@com_google_googleapis//google/iam/v1:iam_java_proto", 157 ], 158) 159 160java_gapic_test( 161 name = "iam_java_gapic_test_suite", 162 test_classes = [ 163 "com.google.iam.v1.IAMPolicyClientTest", 164 ], 165 runtime_deps = ["iam_java_gapic_test"], 166) 167 168# KMS (for mixins). 169proto_library( 170 name = "kms_proto", 171 srcs = [ 172 "apis/kms/v1/resources.proto", 173 "apis/kms/v1/service.proto", 174 ], 175 deps = [ 176 "@com_google_googleapis//google/api:annotations_proto", 177 "@com_google_googleapis//google/api:client_proto", 178 "@com_google_googleapis//google/api:field_behavior_proto", 179 "@com_google_googleapis//google/api:resource_proto", 180 "@com_google_googleapis//google/cloud/location:location_proto", 181 "@com_google_googleapis//google/iam/v1:iam_policy_proto", 182 "@com_google_googleapis//google/iam/v1:policy_proto", 183 "@com_google_protobuf//:duration_proto", 184 "@com_google_protobuf//:field_mask_proto", 185 "@com_google_protobuf//:struct_proto", 186 "@com_google_protobuf//:timestamp_proto", 187 "@com_google_protobuf//:wrappers_proto", 188 ], 189) 190 191proto_library_with_info( 192 name = "kms_proto_with_info", 193 deps = [ 194 ":kms_proto", 195 "@com_google_googleapis//google/cloud:common_resources_proto", 196 "@com_google_googleapis//google/cloud/location:location_proto", 197 "@com_google_googleapis//google/iam/v1:iam_policy_proto", 198 "@com_google_googleapis//google/iam/v1:policy_proto", 199 ], 200) 201 202java_proto_library( 203 name = "kms_java_proto", 204 deps = [":kms_proto"], 205) 206 207java_grpc_library( 208 name = "kms_java_grpc", 209 srcs = [":kms_proto"], 210 deps = [":kms_java_proto"], 211) 212 213java_gapic_library( 214 name = "kms_java_gapic", 215 srcs = [":kms_proto_with_info"], 216 grpc_service_config = "@com_google_googleapis//google/cloud/kms/v1:cloudkms_grpc_service_config.json", 217 # For the IAM mixin. 218 service_yaml = "apis/kms/v1/cloudkms_test_mixins_v1.yaml", 219 test_deps = [ 220 ":kms_java_grpc", 221 "@com_google_googleapis//google/cloud/location:location_java_grpc", 222 "@com_google_googleapis//google/iam/v1:iam_java_grpc", 223 ], 224 deps = [ 225 ":kms_java_proto", 226 "@com_google_googleapis//google/cloud/location:location_java_proto", 227 "@com_google_googleapis//google/iam/v1:iam_java_proto", 228 ], 229) 230 231java_gapic_test( 232 name = "kms_java_gapic_test_suite", 233 test_classes = [ 234 "com.google.cloud.kms.v1.KeyManagementServiceClientTest", 235 ], 236 runtime_deps = [":kms_java_gapic_test"], 237) 238 239# PubSub 240java_gapic_library( 241 name = "pubsub_java_gapic", 242 srcs = ["@com_google_googleapis//google/pubsub/v1:pubsub_proto_with_info"], 243 gapic_yaml = "@com_google_googleapis//google/pubsub/v1:pubsub_gapic.yaml", 244 grpc_service_config = "@com_google_googleapis//google/pubsub/v1:pubsub_grpc_service_config.json", 245 # For the IAM mixin. 246 service_yaml = "pubsub_v1.yaml", 247 test_deps = [ 248 "@com_google_googleapis//google/pubsub/v1:pubsub_java_grpc", 249 "@com_google_googleapis//google/iam/v1:iam_java_grpc", 250 ], 251 deps = [ 252 "@com_google_googleapis//google/iam/v1:iam_java_proto", 253 "@com_google_googleapis//google/pubsub/v1:pubsub_java_proto", 254 ], 255) 256 257java_gapic_test( 258 name = "pubsub_java_gapic_test_suite", 259 test_classes = [ 260 "com.google.cloud.pubsub.v1.SubscriptionAdminClientTest", 261 "com.google.cloud.pubsub.v1.TopicAdminClientTest", 262 ], 263 runtime_deps = [":pubsub_java_gapic_test"], 264) 265