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 15licenses(["notice"]) # Apache v2 16 17load("@grpc_python_dependencies//:requirements.bzl", "requirement") 18load("@rules_proto//proto:defs.bzl", "proto_library") 19load("//bazel:grpc_build_system.bzl", "grpc_package", "grpc_proto_library") 20load("//bazel:python_rules.bzl", "py_grpc_library", "py_proto_library") 21 22grpc_package( 23 name = "testing", 24 visibility = "public", 25) 26 27exports_files([ 28 "echo.proto", 29 "echo_messages.proto", 30 "empty.proto", 31 "messages.proto", 32 "simple_messages.proto", 33 "test.proto", 34]) 35 36grpc_proto_library( 37 name = "compiler_test_proto", 38 srcs = ["compiler_test.proto"], 39 generate_mocks = True, 40) 41 42grpc_proto_library( 43 name = "control_proto", 44 srcs = ["control.proto"], 45 has_services = False, 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) 56 57grpc_proto_library( 58 name = "echo_proto", 59 srcs = ["echo.proto"], 60 generate_mocks = True, 61 deps = [ 62 "echo_messages_proto", 63 "simple_messages_proto", 64 ], 65) 66 67grpc_proto_library( 68 name = "empty_proto", 69 srcs = ["empty.proto"], 70 has_services = False, 71) 72 73proto_library( 74 name = "empty_proto_descriptor", 75 srcs = ["empty.proto"], 76) 77 78py_proto_library( 79 name = "empty_py_pb2", 80 deps = [":empty_proto_descriptor"], 81) 82 83py_grpc_library( 84 name = "empty_py_pb2_grpc", 85 srcs = [":empty_proto_descriptor"], 86 deps = [":empty_py_pb2"], 87) 88 89grpc_proto_library( 90 name = "messages_proto", 91 srcs = ["messages.proto"], 92 has_services = False, 93) 94 95proto_library( 96 name = "messages_proto_descriptor", 97 srcs = ["messages.proto"], 98) 99 100py_proto_library( 101 name = "py_messages_proto", 102 deps = [":messages_proto_descriptor"], 103) 104 105py_grpc_library( 106 name = "messages_py_pb2_grpc", 107 srcs = [":messages_proto_descriptor"], 108 deps = [":py_messages_proto"], 109) 110 111grpc_proto_library( 112 name = "metrics_proto", 113 srcs = ["metrics.proto"], 114) 115 116grpc_proto_library( 117 name = "payloads_proto", 118 srcs = ["payloads.proto"], 119 has_services = False, 120) 121 122grpc_proto_library( 123 name = "benchmark_service_proto", 124 srcs = ["benchmark_service.proto"], 125 deps = [ 126 "messages_proto", 127 ], 128) 129 130proto_library( 131 name = "benchmark_service_descriptor", 132 srcs = ["benchmark_service.proto"], 133 deps = [":messages_proto_descriptor"], 134) 135 136py_proto_library( 137 name = "benchmark_service_py_pb2", 138 deps = [":benchmark_service_descriptor"], 139) 140 141py_grpc_library( 142 name = "benchmark_service_py_pb2_grpc", 143 srcs = [":benchmark_service_descriptor"], 144 deps = [":benchmark_service_py_pb2"], 145) 146 147grpc_proto_library( 148 name = "report_qps_scenario_service_proto", 149 srcs = ["report_qps_scenario_service.proto"], 150 deps = [ 151 "control_proto", 152 ], 153) 154 155grpc_proto_library( 156 name = "worker_service_proto", 157 srcs = ["worker_service.proto"], 158 deps = [ 159 "control_proto", 160 ], 161) 162 163grpc_proto_library( 164 name = "simple_messages_proto", 165 srcs = ["simple_messages.proto"], 166) 167 168grpc_proto_library( 169 name = "stats_proto", 170 srcs = ["stats.proto"], 171 has_services = False, 172 deps = [ 173 "//src/proto/grpc/core:stats_proto", 174 ], 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 deps = ["//src/proto/grpc/core:stats_descriptor"], 258) 259 260py_proto_library( 261 name = "stats_py_pb2", 262 deps = [":stats_descriptor"], 263) 264 265proto_library( 266 name = "payloads_descriptor", 267 srcs = ["payloads.proto"], 268) 269 270py_proto_library( 271 name = "payloads_py_pb2", 272 deps = [":payloads_descriptor"], 273) 274 275proto_library( 276 name = "control_descriptor", 277 srcs = ["control.proto"], 278 deps = [ 279 ":payloads_descriptor", 280 ":stats_descriptor", 281 ], 282) 283 284py_proto_library( 285 name = "control_py_pb2", 286 deps = [":control_descriptor"], 287) 288