1*61c4878aSAndroid Build Coastguard Worker# Copyright 2022 The Pigweed Authors 2*61c4878aSAndroid Build Coastguard Worker# 3*61c4878aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); you may not 4*61c4878aSAndroid Build Coastguard Worker# use this file except in compliance with the License. You may obtain a copy of 5*61c4878aSAndroid Build Coastguard Worker# the License at 6*61c4878aSAndroid Build Coastguard Worker# 7*61c4878aSAndroid Build Coastguard Worker# https://www.apache.org/licenses/LICENSE-2.0 8*61c4878aSAndroid Build Coastguard Worker# 9*61c4878aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*61c4878aSAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 11*61c4878aSAndroid Build Coastguard Worker# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 12*61c4878aSAndroid Build Coastguard Worker# License for the specific language governing permissions and limitations under 13*61c4878aSAndroid Build Coastguard Worker# the License. 14*61c4878aSAndroid Build Coastguard Worker 15*61c4878aSAndroid Build Coastguard Workerload("@rules_java//java:defs.bzl", "java_binary") 16*61c4878aSAndroid Build Coastguard Workerload("@rules_jvm_external//:defs.bzl", "artifact") 17*61c4878aSAndroid Build Coastguard Workerload("@rules_proto//proto:defs.bzl", "proto_library") 18*61c4878aSAndroid Build Coastguard Workerload("@rules_python//python:defs.bzl", "py_library") 19*61c4878aSAndroid Build Coastguard Workerload("@rules_python//python:proto.bzl", "py_proto_library") 20*61c4878aSAndroid Build Coastguard Workerload("//pw_build:compatibility.bzl", "incompatible_with_mcu") 21*61c4878aSAndroid Build Coastguard Workerload("//pw_build:pw_cc_binary.bzl", "pw_cc_binary") 22*61c4878aSAndroid Build Coastguard Workerload("//pw_build:python.bzl", "pw_py_binary", "pw_py_test") 23*61c4878aSAndroid Build Coastguard Worker 24*61c4878aSAndroid Build Coastguard Workerpw_cc_binary( 25*61c4878aSAndroid Build Coastguard Worker name = "server", 26*61c4878aSAndroid Build Coastguard Worker srcs = ["server.cc"], 27*61c4878aSAndroid Build Coastguard Worker deps = [ 28*61c4878aSAndroid Build Coastguard Worker ":config_cc_proto", 29*61c4878aSAndroid Build Coastguard Worker "//pw_assert", 30*61c4878aSAndroid Build Coastguard Worker "//pw_chrono:system_clock", 31*61c4878aSAndroid Build Coastguard Worker "//pw_log", 32*61c4878aSAndroid Build Coastguard Worker "//pw_rpc/system_server", 33*61c4878aSAndroid Build Coastguard Worker "//pw_stream", 34*61c4878aSAndroid Build Coastguard Worker "//pw_stream:std_file_stream", 35*61c4878aSAndroid Build Coastguard Worker "//pw_thread:thread", 36*61c4878aSAndroid Build Coastguard Worker "//pw_transfer", 37*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf", 38*61c4878aSAndroid Build Coastguard Worker ], 39*61c4878aSAndroid Build Coastguard Worker) 40*61c4878aSAndroid Build Coastguard Worker 41*61c4878aSAndroid Build Coastguard Workerpw_py_binary( 42*61c4878aSAndroid Build Coastguard Worker name = "proxy", 43*61c4878aSAndroid Build Coastguard Worker srcs = ["proxy.py"], 44*61c4878aSAndroid Build Coastguard Worker deps = [ 45*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 46*61c4878aSAndroid Build Coastguard Worker "//pw_hdlc/py:pw_hdlc", 47*61c4878aSAndroid Build Coastguard Worker "//pw_transfer:transfer_proto_pb2", 48*61c4878aSAndroid Build Coastguard Worker "//pw_transfer/py:pw_transfer", 49*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf_python", 50*61c4878aSAndroid Build Coastguard Worker ], 51*61c4878aSAndroid Build Coastguard Worker) 52*61c4878aSAndroid Build Coastguard Worker 53*61c4878aSAndroid Build Coastguard Workerpw_py_test( 54*61c4878aSAndroid Build Coastguard Worker name = "proxy_test", 55*61c4878aSAndroid Build Coastguard Worker srcs = [ 56*61c4878aSAndroid Build Coastguard Worker "proxy.py", 57*61c4878aSAndroid Build Coastguard Worker "proxy_test.py", 58*61c4878aSAndroid Build Coastguard Worker ], 59*61c4878aSAndroid Build Coastguard Worker imports = ["."], 60*61c4878aSAndroid Build Coastguard Worker main = "proxy_test.py", 61*61c4878aSAndroid Build Coastguard Worker deps = [ 62*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 63*61c4878aSAndroid Build Coastguard Worker "//pw_hdlc/py:pw_hdlc", 64*61c4878aSAndroid Build Coastguard Worker "//pw_rpc:internal_packet_proto_pb2", 65*61c4878aSAndroid Build Coastguard Worker "//pw_transfer:transfer_proto_pb2", 66*61c4878aSAndroid Build Coastguard Worker "//pw_transfer/py:pw_transfer", 67*61c4878aSAndroid Build Coastguard Worker ], 68*61c4878aSAndroid Build Coastguard Worker) 69*61c4878aSAndroid Build Coastguard Worker 70*61c4878aSAndroid Build Coastguard Workerproto_library( 71*61c4878aSAndroid Build Coastguard Worker name = "config_proto", 72*61c4878aSAndroid Build Coastguard Worker srcs = ["config.proto"], 73*61c4878aSAndroid Build Coastguard Worker deps = ["//pw_protobuf:status_proto"], 74*61c4878aSAndroid Build Coastguard Worker) 75*61c4878aSAndroid Build Coastguard Worker 76*61c4878aSAndroid Build Coastguard Workercc_proto_library( 77*61c4878aSAndroid Build Coastguard Worker name = "config_cc_proto", 78*61c4878aSAndroid Build Coastguard Worker # cc_proto_library pulls in the regular proto library, which is only 79*61c4878aSAndroid Build Coastguard Worker # needed for host tests. 80*61c4878aSAndroid Build Coastguard Worker target_compatible_with = incompatible_with_mcu(), 81*61c4878aSAndroid Build Coastguard Worker deps = [":config_proto"], 82*61c4878aSAndroid Build Coastguard Worker) 83*61c4878aSAndroid Build Coastguard Worker 84*61c4878aSAndroid Build Coastguard Workerpy_proto_library( 85*61c4878aSAndroid Build Coastguard Worker name = "config_pb2", 86*61c4878aSAndroid Build Coastguard Worker deps = [":config_proto"], 87*61c4878aSAndroid Build Coastguard Worker) 88*61c4878aSAndroid Build Coastguard Worker 89*61c4878aSAndroid Build Coastguard Workerjava_proto_library( 90*61c4878aSAndroid Build Coastguard Worker name = "config_java_proto", 91*61c4878aSAndroid Build Coastguard Worker deps = [":config_proto"], 92*61c4878aSAndroid Build Coastguard Worker) 93*61c4878aSAndroid Build Coastguard Worker 94*61c4878aSAndroid Build Coastguard Workerpw_cc_binary( 95*61c4878aSAndroid Build Coastguard Worker name = "cpp_client", 96*61c4878aSAndroid Build Coastguard Worker testonly = True, 97*61c4878aSAndroid Build Coastguard Worker srcs = ["client.cc"], 98*61c4878aSAndroid Build Coastguard Worker deps = [ 99*61c4878aSAndroid Build Coastguard Worker ":config_cc_proto", 100*61c4878aSAndroid Build Coastguard Worker "//pw_log", 101*61c4878aSAndroid Build Coastguard Worker "//pw_rpc:integration_testing", 102*61c4878aSAndroid Build Coastguard Worker "//pw_status", 103*61c4878aSAndroid Build Coastguard Worker "//pw_stream:std_file_stream", 104*61c4878aSAndroid Build Coastguard Worker "//pw_sync:binary_semaphore", 105*61c4878aSAndroid Build Coastguard Worker "//pw_thread:thread", 106*61c4878aSAndroid Build Coastguard Worker "//pw_transfer", 107*61c4878aSAndroid Build Coastguard Worker "//pw_transfer:client", 108*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf", 109*61c4878aSAndroid Build Coastguard Worker ], 110*61c4878aSAndroid Build Coastguard Worker) 111*61c4878aSAndroid Build Coastguard Worker 112*61c4878aSAndroid Build Coastguard Workerpy_library( 113*61c4878aSAndroid Build Coastguard Worker name = "integration_test_fixture", 114*61c4878aSAndroid Build Coastguard Worker testonly = True, 115*61c4878aSAndroid Build Coastguard Worker srcs = [ 116*61c4878aSAndroid Build Coastguard Worker "test_fixture.py", 117*61c4878aSAndroid Build Coastguard Worker ], 118*61c4878aSAndroid Build Coastguard Worker data = [ 119*61c4878aSAndroid Build Coastguard Worker ":cpp_client", 120*61c4878aSAndroid Build Coastguard Worker ":java_client", 121*61c4878aSAndroid Build Coastguard Worker ":proxy", 122*61c4878aSAndroid Build Coastguard Worker ":python_client", 123*61c4878aSAndroid Build Coastguard Worker ":server", 124*61c4878aSAndroid Build Coastguard Worker ], 125*61c4878aSAndroid Build Coastguard Worker imports = ["."], 126*61c4878aSAndroid Build Coastguard Worker deps = [ 127*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 128*61c4878aSAndroid Build Coastguard Worker "//pw_protobuf:status_proto_pb2", 129*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf_python", 130*61c4878aSAndroid Build Coastguard Worker "@rules_python//python/runfiles", 131*61c4878aSAndroid Build Coastguard Worker ], 132*61c4878aSAndroid Build Coastguard Worker) 133*61c4878aSAndroid Build Coastguard Worker 134*61c4878aSAndroid Build Coastguard Worker# Uses ports 3310 and 3311. 135*61c4878aSAndroid Build Coastguard Workerpw_py_test( 136*61c4878aSAndroid Build Coastguard Worker name = "cross_language_large_write_test", 137*61c4878aSAndroid Build Coastguard Worker # Actually 1 hour, see 138*61c4878aSAndroid Build Coastguard Worker # https://docs.bazel.build/versions/main/test-encyclopedia.html#role-of-the-test-runner 139*61c4878aSAndroid Build Coastguard Worker timeout = "eternal", 140*61c4878aSAndroid Build Coastguard Worker srcs = [ 141*61c4878aSAndroid Build Coastguard Worker "cross_language_large_write_test.py", 142*61c4878aSAndroid Build Coastguard Worker ], 143*61c4878aSAndroid Build Coastguard Worker tags = [ 144*61c4878aSAndroid Build Coastguard Worker # This test is not run in CQ because it's too slow. 145*61c4878aSAndroid Build Coastguard Worker "manual", 146*61c4878aSAndroid Build Coastguard Worker "integration", 147*61c4878aSAndroid Build Coastguard Worker ], 148*61c4878aSAndroid Build Coastguard Worker deps = [ 149*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 150*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 151*61c4878aSAndroid Build Coastguard Worker ], 152*61c4878aSAndroid Build Coastguard Worker) 153*61c4878aSAndroid Build Coastguard Worker 154*61c4878aSAndroid Build Coastguard Worker# Uses ports 3306 and 3307. 155*61c4878aSAndroid Build Coastguard Workerpw_py_test( 156*61c4878aSAndroid Build Coastguard Worker name = "cross_language_large_read_test", 157*61c4878aSAndroid Build Coastguard Worker # Actually 1 hour, see 158*61c4878aSAndroid Build Coastguard Worker # https://docs.bazel.build/versions/main/test-encyclopedia.html#role-of-the-test-runner 159*61c4878aSAndroid Build Coastguard Worker timeout = "eternal", 160*61c4878aSAndroid Build Coastguard Worker srcs = [ 161*61c4878aSAndroid Build Coastguard Worker "cross_language_large_read_test.py", 162*61c4878aSAndroid Build Coastguard Worker ], 163*61c4878aSAndroid Build Coastguard Worker tags = [ 164*61c4878aSAndroid Build Coastguard Worker # This test is not run in CQ because it's too slow. 165*61c4878aSAndroid Build Coastguard Worker "manual", 166*61c4878aSAndroid Build Coastguard Worker "integration", 167*61c4878aSAndroid Build Coastguard Worker ], 168*61c4878aSAndroid Build Coastguard Worker deps = [ 169*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 170*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 171*61c4878aSAndroid Build Coastguard Worker ], 172*61c4878aSAndroid Build Coastguard Worker) 173*61c4878aSAndroid Build Coastguard Worker 174*61c4878aSAndroid Build Coastguard Worker# Uses ports 3304 and 3305. 175*61c4878aSAndroid Build Coastguard Workerpw_py_test( 176*61c4878aSAndroid Build Coastguard Worker name = "cross_language_medium_read_test", 177*61c4878aSAndroid Build Coastguard Worker timeout = "moderate", 178*61c4878aSAndroid Build Coastguard Worker srcs = [ 179*61c4878aSAndroid Build Coastguard Worker "cross_language_medium_read_test.py", 180*61c4878aSAndroid Build Coastguard Worker ], 181*61c4878aSAndroid Build Coastguard Worker tags = [ 182*61c4878aSAndroid Build Coastguard Worker "integration", 183*61c4878aSAndroid Build Coastguard Worker ], 184*61c4878aSAndroid Build Coastguard Worker deps = [ 185*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 186*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 187*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf_python", 188*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 189*61c4878aSAndroid Build Coastguard Worker ], 190*61c4878aSAndroid Build Coastguard Worker) 191*61c4878aSAndroid Build Coastguard Worker 192*61c4878aSAndroid Build Coastguard Worker# Uses ports 3316 and 3317. 193*61c4878aSAndroid Build Coastguard Workerpw_py_test( 194*61c4878aSAndroid Build Coastguard Worker name = "cross_language_medium_write_test", 195*61c4878aSAndroid Build Coastguard Worker timeout = "long", 196*61c4878aSAndroid Build Coastguard Worker srcs = [ 197*61c4878aSAndroid Build Coastguard Worker "cross_language_medium_write_test.py", 198*61c4878aSAndroid Build Coastguard Worker ], 199*61c4878aSAndroid Build Coastguard Worker tags = [ 200*61c4878aSAndroid Build Coastguard Worker "integration", 201*61c4878aSAndroid Build Coastguard Worker ], 202*61c4878aSAndroid Build Coastguard Worker deps = [ 203*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 204*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 205*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf_python", 206*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 207*61c4878aSAndroid Build Coastguard Worker ], 208*61c4878aSAndroid Build Coastguard Worker) 209*61c4878aSAndroid Build Coastguard Worker 210*61c4878aSAndroid Build Coastguard Worker# Uses ports 3302 and 3303. 211*61c4878aSAndroid Build Coastguard Workerpw_py_test( 212*61c4878aSAndroid Build Coastguard Worker name = "cross_language_small_test", 213*61c4878aSAndroid Build Coastguard Worker timeout = "moderate", 214*61c4878aSAndroid Build Coastguard Worker srcs = [ 215*61c4878aSAndroid Build Coastguard Worker "cross_language_small_test.py", 216*61c4878aSAndroid Build Coastguard Worker ], 217*61c4878aSAndroid Build Coastguard Worker tags = [ 218*61c4878aSAndroid Build Coastguard Worker "integration", 219*61c4878aSAndroid Build Coastguard Worker ], 220*61c4878aSAndroid Build Coastguard Worker deps = [ 221*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 222*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 223*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 224*61c4878aSAndroid Build Coastguard Worker ], 225*61c4878aSAndroid Build Coastguard Worker) 226*61c4878aSAndroid Build Coastguard Worker 227*61c4878aSAndroid Build Coastguard Worker# Uses ports 3308 and 3309. 228*61c4878aSAndroid Build Coastguard Workerpw_py_test( 229*61c4878aSAndroid Build Coastguard Worker name = "multi_transfer_test", 230*61c4878aSAndroid Build Coastguard Worker timeout = "moderate", 231*61c4878aSAndroid Build Coastguard Worker srcs = [ 232*61c4878aSAndroid Build Coastguard Worker "multi_transfer_test.py", 233*61c4878aSAndroid Build Coastguard Worker ], 234*61c4878aSAndroid Build Coastguard Worker tags = [ 235*61c4878aSAndroid Build Coastguard Worker "integration", 236*61c4878aSAndroid Build Coastguard Worker ], 237*61c4878aSAndroid Build Coastguard Worker deps = [ 238*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 239*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 240*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 241*61c4878aSAndroid Build Coastguard Worker ], 242*61c4878aSAndroid Build Coastguard Worker) 243*61c4878aSAndroid Build Coastguard Worker 244*61c4878aSAndroid Build Coastguard Worker# Uses ports 3312 and 3313. 245*61c4878aSAndroid Build Coastguard Workerpw_py_test( 246*61c4878aSAndroid Build Coastguard Worker name = "expected_errors_test", 247*61c4878aSAndroid Build Coastguard Worker timeout = "long", 248*61c4878aSAndroid Build Coastguard Worker srcs = ["expected_errors_test.py"], 249*61c4878aSAndroid Build Coastguard Worker tags = [ 250*61c4878aSAndroid Build Coastguard Worker "integration", 251*61c4878aSAndroid Build Coastguard Worker ], 252*61c4878aSAndroid Build Coastguard Worker deps = [ 253*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 254*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 255*61c4878aSAndroid Build Coastguard Worker "//pw_protobuf:status_proto_pb2", 256*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf_python", 257*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 258*61c4878aSAndroid Build Coastguard Worker ], 259*61c4878aSAndroid Build Coastguard Worker) 260*61c4878aSAndroid Build Coastguard Worker 261*61c4878aSAndroid Build Coastguard Worker# Uses ports 3314 and 3315. 262*61c4878aSAndroid Build Coastguard Workerpw_py_test( 263*61c4878aSAndroid Build Coastguard Worker name = "legacy_binaries_test", 264*61c4878aSAndroid Build Coastguard Worker timeout = "moderate", 265*61c4878aSAndroid Build Coastguard Worker srcs = ["legacy_binaries_test.py"], 266*61c4878aSAndroid Build Coastguard Worker data = [ 267*61c4878aSAndroid Build Coastguard Worker "@pw_transfer_test_binaries//:all", 268*61c4878aSAndroid Build Coastguard Worker ], 269*61c4878aSAndroid Build Coastguard Worker tags = [ 270*61c4878aSAndroid Build Coastguard Worker "integration", 271*61c4878aSAndroid Build Coastguard Worker ], 272*61c4878aSAndroid Build Coastguard Worker # Legacy binaries were only built for linux-x86_64. 273*61c4878aSAndroid Build Coastguard Worker target_compatible_with = ["@platforms//os:linux"], 274*61c4878aSAndroid Build Coastguard Worker deps = [ 275*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 276*61c4878aSAndroid Build Coastguard Worker ":integration_test_fixture", 277*61c4878aSAndroid Build Coastguard Worker "//pw_protobuf:status_proto_pb2", 278*61c4878aSAndroid Build Coastguard Worker "@python_packages//parameterized", 279*61c4878aSAndroid Build Coastguard Worker "@rules_python//python/runfiles", 280*61c4878aSAndroid Build Coastguard Worker ], 281*61c4878aSAndroid Build Coastguard Worker) 282*61c4878aSAndroid Build Coastguard Worker 283*61c4878aSAndroid Build Coastguard Workerjava_binary( 284*61c4878aSAndroid Build Coastguard Worker name = "java_client", 285*61c4878aSAndroid Build Coastguard Worker srcs = ["JavaClient.java"], 286*61c4878aSAndroid Build Coastguard Worker main_class = "JavaClient", 287*61c4878aSAndroid Build Coastguard Worker target_compatible_with = incompatible_with_mcu(), 288*61c4878aSAndroid Build Coastguard Worker deps = [ 289*61c4878aSAndroid Build Coastguard Worker ":config_java_proto", 290*61c4878aSAndroid Build Coastguard Worker "//pw_hdlc/java/main/dev/pigweed/pw_hdlc", 291*61c4878aSAndroid Build Coastguard Worker "//pw_log/java/main/dev/pigweed/pw_log", 292*61c4878aSAndroid Build Coastguard Worker "//pw_rpc/java/main/dev/pigweed/pw_rpc:client", 293*61c4878aSAndroid Build Coastguard Worker "//pw_transfer/java/main/dev/pigweed/pw_transfer:client", 294*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf_java", 295*61c4878aSAndroid Build Coastguard Worker artifact("com.google.flogger:flogger-system-backend"), 296*61c4878aSAndroid Build Coastguard Worker artifact("com.google.guava:guava"), 297*61c4878aSAndroid Build Coastguard Worker ], 298*61c4878aSAndroid Build Coastguard Worker) 299*61c4878aSAndroid Build Coastguard Worker 300*61c4878aSAndroid Build Coastguard Workerpw_py_binary( 301*61c4878aSAndroid Build Coastguard Worker name = "python_client", 302*61c4878aSAndroid Build Coastguard Worker srcs = ["python_client.py"], 303*61c4878aSAndroid Build Coastguard Worker deps = [ 304*61c4878aSAndroid Build Coastguard Worker ":config_pb2", 305*61c4878aSAndroid Build Coastguard Worker "//pw_hdlc/py:pw_hdlc", 306*61c4878aSAndroid Build Coastguard Worker "//pw_rpc/py:pw_rpc", 307*61c4878aSAndroid Build Coastguard Worker "//pw_transfer:transfer_proto_pb2", 308*61c4878aSAndroid Build Coastguard Worker "//pw_transfer/py:pw_transfer", 309*61c4878aSAndroid Build Coastguard Worker "@com_google_protobuf//:protobuf_python", 310*61c4878aSAndroid Build Coastguard Worker "@python_packages//pyserial", 311*61c4878aSAndroid Build Coastguard Worker ], 312*61c4878aSAndroid Build Coastguard Worker) 313