1# Copyright 2017 gRPC authors. 2# 3# Licensed under the Apache License, Version 2.0 (the "License"); 4# you may not use this file except in compliance with the License. 5# You may obtain a copy of the License at 6# 7# http://www.apache.org/licenses/LICENSE-2.0 8# 9# Unless required by applicable law or agreed to in writing, software 10# distributed under the License is distributed on an "AS IS" BASIS, 11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12# See the License for the specific language governing permissions and 13# limitations under the License. 14 15load("@rules_proto//proto:defs.bzl", "proto_library") 16load("//bazel:grpc_build_system.bzl", "grpc_package", "grpc_proto_library") 17load("//bazel:python_rules.bzl", "py_grpc_library", "py_proto_library") 18 19licenses(["notice"]) 20 21grpc_package( 22 name = "testing", 23 visibility = "public", 24) 25 26exports_files([ 27 "echo.proto", 28 "echo_messages.proto", 29 "empty.proto", 30 "messages.proto", 31 "simple_messages.proto", 32 "test.proto", 33]) 34 35grpc_proto_library( 36 name = "compiler_test_proto", 37 srcs = ["compiler_test.proto"], 38 generate_mocks = True, 39) 40 41grpc_proto_library( 42 name = "control_proto", 43 srcs = ["control.proto"], 44 has_services = False, 45 well_known_protos = True, 46 deps = [ 47 "payloads_proto", 48 "stats_proto", 49 ], 50) 51 52grpc_proto_library( 53 name = "echo_messages_proto", 54 srcs = ["echo_messages.proto"], 55 deps = [ 56 "//src/proto/grpc/testing/xds/v3:orca_load_report_proto", 57 ], 58) 59 60grpc_proto_library( 61 name = "echo_proto", 62 srcs = ["echo.proto"], 63 generate_mocks = True, 64 deps = [ 65 "echo_messages_proto", 66 "simple_messages_proto", 67 ], 68) 69 70grpc_proto_library( 71 name = "empty_proto", 72 srcs = ["empty.proto"], 73 has_services = False, 74) 75 76proto_library( 77 name = "empty_proto_descriptor", 78 srcs = ["empty.proto"], 79) 80 81py_proto_library( 82 name = "empty_py_pb2", 83 deps = [":empty_proto_descriptor"], 84) 85 86py_grpc_library( 87 name = "empty_py_pb2_grpc", 88 srcs = [":empty_proto_descriptor"], 89 deps = [":empty_py_pb2"], 90) 91 92grpc_proto_library( 93 name = "messages_proto", 94 srcs = ["messages.proto"], 95 has_services = False, 96) 97 98proto_library( 99 name = "messages_proto_descriptor", 100 srcs = ["messages.proto"], 101) 102 103py_proto_library( 104 name = "py_messages_proto", 105 deps = [":messages_proto_descriptor"], 106) 107 108py_grpc_library( 109 name = "messages_py_pb2_grpc", 110 srcs = [":messages_proto_descriptor"], 111 deps = [":py_messages_proto"], 112) 113 114grpc_proto_library( 115 name = "metrics_proto", 116 srcs = ["metrics.proto"], 117) 118 119grpc_proto_library( 120 name = "payloads_proto", 121 srcs = ["payloads.proto"], 122 has_services = False, 123) 124 125grpc_proto_library( 126 name = "benchmark_service_proto", 127 srcs = ["benchmark_service.proto"], 128 deps = [ 129 "messages_proto", 130 ], 131) 132 133proto_library( 134 name = "benchmark_service_descriptor", 135 srcs = ["benchmark_service.proto"], 136 deps = [":messages_proto_descriptor"], 137) 138 139py_proto_library( 140 name = "benchmark_service_py_pb2", 141 deps = [":benchmark_service_descriptor"], 142) 143 144py_grpc_library( 145 name = "benchmark_service_py_pb2_grpc", 146 srcs = [":benchmark_service_descriptor"], 147 deps = [":benchmark_service_py_pb2"], 148) 149 150grpc_proto_library( 151 name = "report_qps_scenario_service_proto", 152 srcs = ["report_qps_scenario_service.proto"], 153 deps = [ 154 "control_proto", 155 ], 156) 157 158grpc_proto_library( 159 name = "worker_service_proto", 160 srcs = ["worker_service.proto"], 161 deps = [ 162 "control_proto", 163 ], 164) 165 166grpc_proto_library( 167 name = "simple_messages_proto", 168 srcs = ["simple_messages.proto"], 169) 170 171grpc_proto_library( 172 name = "stats_proto", 173 srcs = ["stats.proto"], 174 has_services = False, 175) 176 177grpc_proto_library( 178 name = "test_proto", 179 srcs = ["test.proto"], 180 deps = [ 181 "empty_proto", 182 "messages_proto", 183 ], 184) 185 186# Test that grpc_proto_library/cc_grpc_library can consume generated files 187genrule( 188 name = "messages_gen_proto_file", 189 srcs = ["messages.proto"], 190 outs = ["messages_gen.proto"], 191 cmd = "cp $< $@", 192) 193 194grpc_proto_library( 195 name = "messages_gen_proto", 196 srcs = ["messages_gen_proto_file"], 197 has_services = False, 198) 199 200genrule( 201 name = "test_gen_proto_file", 202 srcs = ["test.proto"], 203 outs = ["test_gen.proto"], 204 cmd = "sed 's/messages.proto/messages_gen.proto/' $< > $@", 205) 206 207# Consume generated files in srcs and in deps 208grpc_proto_library( 209 name = "test_gen_proto", 210 srcs = ["test_gen_proto_file"], 211 deps = [ 212 "empty_proto", 213 "messages_gen_proto", 214 ], 215) 216 217proto_library( 218 name = "test_proto_descriptor", 219 srcs = ["test.proto"], 220 deps = [ 221 ":empty_proto_descriptor", 222 ":messages_proto_descriptor", 223 ], 224) 225 226py_proto_library( 227 name = "py_test_proto", 228 deps = [":test_proto_descriptor"], 229) 230 231py_grpc_library( 232 name = "test_py_pb2_grpc", 233 srcs = [":test_proto_descriptor"], 234 deps = [":py_test_proto"], 235) 236 237proto_library( 238 name = "worker_service_descriptor", 239 srcs = ["worker_service.proto"], 240 deps = [":control_descriptor"], 241) 242 243py_proto_library( 244 name = "worker_service_py_pb2", 245 deps = [":worker_service_descriptor"], 246) 247 248py_grpc_library( 249 name = "worker_service_py_pb2_grpc", 250 srcs = [":worker_service_descriptor"], 251 deps = [":worker_service_py_pb2"], 252) 253 254proto_library( 255 name = "stats_descriptor", 256 srcs = ["stats.proto"], 257) 258 259py_proto_library( 260 name = "stats_py_pb2", 261 deps = [":stats_descriptor"], 262) 263 264proto_library( 265 name = "payloads_descriptor", 266 srcs = ["payloads.proto"], 267) 268 269py_proto_library( 270 name = "payloads_py_pb2", 271 deps = [":payloads_descriptor"], 272) 273 274proto_library( 275 name = "control_descriptor", 276 srcs = ["control.proto"], 277 deps = [ 278 ":payloads_descriptor", 279 ":stats_descriptor", 280 "@com_google_protobuf//:timestamp_proto", 281 ], 282) 283 284py_proto_library( 285 name = "control_py_pb2", 286 deps = [":control_descriptor"], 287) 288 289grpc_proto_library( 290 name = "istio_echo_proto", 291 srcs = ["istio_echo.proto"], 292 well_known_protos = True, 293) 294