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