xref: /aosp_15_r20/external/sdk-platform-java/test/integration/BUILD.bazel (revision 882aa7c72c3cd3b66e72a261bdd69b93f7de7670)
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