xref: /aosp_15_r20/external/pigweed/pw_transfer/integration_test/BUILD.bazel (revision 61c4878ac05f98d0ceed94b57d316916de578985)
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