Skip to content

Commit d9ed2f7

Browse files
committed
Test rabbitmq_mqtt with bazel
(cherry picked from commit 36321ee)
1 parent 8254a48 commit d9ed2f7

File tree

2 files changed

+380
-0
lines changed

2 files changed

+380
-0
lines changed

deps/rabbitmq_mqtt/BUILD.bazel

Lines changed: 364 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,364 @@
1+
load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlc")
2+
load("@bazel-erlang//:ct.bzl", "ct_suite")
3+
load("//:rabbitmq_home.bzl", "rabbitmq_home")
4+
load("//:rabbitmq_run.bzl", "rabbitmq_run")
5+
load(
6+
"//:rabbitmq.bzl",
7+
"APP_VERSION",
8+
"RABBITMQ_ERLC_OPTS",
9+
"RABBITMQ_TEST_ERLC_OPTS",
10+
"rabbitmq_lib",
11+
)
12+
13+
APP_NAME = "rabbitmq_mqtt"
14+
15+
APP_DESCRIPTION = "RabbitMQ MQTT Adapter"
16+
17+
APP_MODULE = "rabbit_mqtt"
18+
19+
APP_ENV = """[
20+
{default_user, <<"guest">>},
21+
{default_pass, <<"guest">>},
22+
{ssl_cert_login,false},
23+
%% To satisfy an unfortunate expectation from popular MQTT clients.
24+
{allow_anonymous, true},
25+
{vhost, <<"/">>},
26+
{exchange, <<"amq.topic">>},
27+
{subscription_ttl, 86400000}, %% 24 hours
28+
{retained_message_store, rabbit_mqtt_retained_msg_store_dets},
29+
%% only used by DETS store
30+
{retained_message_store_dets_sync_interval, 2000},
31+
{prefetch, 10},
32+
{ssl_listeners, []},
33+
{tcp_listeners, [1883]},
34+
{num_tcp_acceptors, 10},
35+
{num_ssl_acceptors, 10},
36+
{tcp_listen_options, [{backlog, 128},
37+
{nodelay, true}]},
38+
{proxy_protocol, false},
39+
{sparkplug, false}
40+
]"""
41+
42+
FIRST_SRCS = [
43+
"src/rabbit_mqtt_retained_msg_store.erl",
44+
]
45+
46+
BUILD_DEPS = [
47+
"//deps/rabbitmq_cli:rabbitmqctl",
48+
"@lager//:bazel_erlang_lib",
49+
]
50+
51+
DEPS = [
52+
"//deps/amqp_client:bazel_erlang_lib",
53+
"//deps/rabbit_common:bazel_erlang_lib",
54+
"@ra//:bazel_erlang_lib",
55+
"@ranch//:bazel_erlang_lib",
56+
]
57+
58+
RUNTIME_DEPS = [
59+
"//deps/rabbit:bazel_erlang_lib",
60+
]
61+
62+
rabbitmq_lib(
63+
app_description = APP_DESCRIPTION,
64+
app_env = APP_ENV,
65+
app_module = APP_MODULE,
66+
app_name = APP_NAME,
67+
app_version = APP_VERSION,
68+
build_deps = BUILD_DEPS,
69+
first_srcs = FIRST_SRCS,
70+
runtime_deps = RUNTIME_DEPS,
71+
deps = DEPS,
72+
)
73+
74+
rabbitmq_home(
75+
name = "broker-for-tests-home",
76+
plugins = [
77+
"//deps/rabbit:bazel_erlang_lib",
78+
":bazel_erlang_lib",
79+
],
80+
)
81+
82+
rabbitmq_run(
83+
name = "rabbitmq-for-tests-run",
84+
home = ":broker-for-tests-home",
85+
)
86+
87+
erlc(
88+
name = "rabbit_auth_backend_mqtt_mock",
89+
testonly = True,
90+
srcs = [
91+
"test/rabbit_auth_backend_mqtt_mock.erl",
92+
],
93+
dest = "test",
94+
deps = [
95+
"//deps/rabbit_common:bazel_erlang_lib",
96+
],
97+
)
98+
99+
ct_suite(
100+
name = "auth_SUITE",
101+
additional_beam = [
102+
":rabbit_auth_backend_mqtt_mock",
103+
],
104+
data = [
105+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
106+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
107+
],
108+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
109+
test_env = {
110+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
111+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
112+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
113+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
114+
},
115+
tools = [
116+
":rabbitmq-for-tests-run",
117+
],
118+
runtime_deps = [
119+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
120+
"//deps/rabbitmq_cli:rabbitmqctl",
121+
"@emqttc//:bazel_erlang_lib",
122+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
123+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
124+
],
125+
deps = [
126+
"@lager//:bazel_erlang_lib",
127+
],
128+
)
129+
130+
ct_suite(
131+
name = "cluster_SUITE",
132+
data = [
133+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
134+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
135+
],
136+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
137+
test_env = {
138+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
139+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
140+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
141+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
142+
},
143+
tools = [
144+
":rabbitmq-for-tests-run",
145+
],
146+
runtime_deps = [
147+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
148+
"//deps/rabbitmq_cli:rabbitmqctl",
149+
"@emqttc//:bazel_erlang_lib",
150+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
151+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
152+
],
153+
deps = [
154+
"@lager//:bazel_erlang_lib",
155+
],
156+
)
157+
158+
ct_suite(
159+
name = "command_SUITE",
160+
data = [
161+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
162+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
163+
],
164+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
165+
test_env = {
166+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
167+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
168+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
169+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
170+
},
171+
tools = [
172+
":rabbitmq-for-tests-run",
173+
],
174+
runtime_deps = [
175+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
176+
"//deps/rabbitmq_cli:rabbitmqctl",
177+
"@emqttc//:bazel_erlang_lib",
178+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
179+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
180+
],
181+
deps = [
182+
"//deps/amqp_client:bazel_erlang_lib",
183+
"//deps/rabbit_common:bazel_erlang_lib",
184+
"@lager//:bazel_erlang_lib",
185+
],
186+
)
187+
188+
ct_suite(
189+
name = "config_schema_SUITE",
190+
data = [
191+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
192+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
193+
],
194+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
195+
test_env = {
196+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
197+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
198+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
199+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
200+
},
201+
tools = [
202+
":rabbitmq-for-tests-run",
203+
],
204+
runtime_deps = [
205+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
206+
"//deps/rabbitmq_cli:rabbitmqctl",
207+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
208+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
209+
],
210+
deps = [
211+
"@lager//:bazel_erlang_lib",
212+
],
213+
)
214+
215+
ct_suite(
216+
name = "java_SUITE",
217+
data = [
218+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
219+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
220+
],
221+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
222+
test_env = {
223+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
224+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
225+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
226+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
227+
},
228+
tools = [
229+
":rabbitmq-for-tests-run",
230+
],
231+
runtime_deps = [
232+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
233+
"//deps/rabbitmq_cli:rabbitmqctl",
234+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
235+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
236+
],
237+
deps = [
238+
"@lager//:bazel_erlang_lib",
239+
],
240+
)
241+
242+
ct_suite(
243+
name = "mqtt_machine_SUITE",
244+
size = "small",
245+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
246+
test_env = {
247+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
248+
},
249+
deps = [
250+
"@lager//:bazel_erlang_lib",
251+
],
252+
)
253+
254+
ct_suite(
255+
name = "processor_SUITE",
256+
size = "small",
257+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
258+
test_env = {
259+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
260+
},
261+
deps = [
262+
"//deps/amqp_client:bazel_erlang_lib",
263+
"//deps/rabbit_common:bazel_erlang_lib",
264+
"@lager//:bazel_erlang_lib",
265+
],
266+
)
267+
268+
ct_suite(
269+
name = "proxy_protocol_SUITE",
270+
data = [
271+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
272+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
273+
],
274+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
275+
test_env = {
276+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
277+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
278+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
279+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
280+
},
281+
tools = [
282+
":rabbitmq-for-tests-run",
283+
],
284+
runtime_deps = [
285+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
286+
"//deps/rabbitmq_cli:rabbitmqctl",
287+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
288+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
289+
],
290+
deps = [
291+
"@lager//:bazel_erlang_lib",
292+
],
293+
)
294+
295+
ct_suite(
296+
name = "reader_SUITE",
297+
data = [
298+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
299+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
300+
],
301+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
302+
test_env = {
303+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
304+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
305+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
306+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
307+
},
308+
tools = [
309+
":rabbitmq-for-tests-run",
310+
],
311+
runtime_deps = [
312+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
313+
"//deps/rabbitmq_cli:rabbitmqctl",
314+
"@emqttc//:bazel_erlang_lib",
315+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
316+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
317+
],
318+
deps = [
319+
"@lager//:bazel_erlang_lib",
320+
],
321+
)
322+
323+
ct_suite(
324+
name = "retainer_SUITE",
325+
data = [
326+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
327+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
328+
],
329+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
330+
test_env = {
331+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
332+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/rabbitmq-for-tests-run",
333+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
334+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmq-plugins",
335+
},
336+
tools = [
337+
":rabbitmq-for-tests-run",
338+
],
339+
runtime_deps = [
340+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
341+
"//deps/rabbitmq_cli:rabbitmqctl",
342+
"@emqttc//:bazel_erlang_lib",
343+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
344+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
345+
],
346+
deps = [
347+
"@lager//:bazel_erlang_lib",
348+
],
349+
)
350+
351+
ct_suite(
352+
name = "util_SUITE",
353+
size = "small",
354+
data = [
355+
"test/rabbitmq_mqtt.app",
356+
],
357+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
358+
test_env = {
359+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
360+
},
361+
deps = [
362+
"@lager//:bazel_erlang_lib",
363+
],
364+
)

workspace_helpers.bzl

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,22 @@ def rabbitmq_external_deps(rabbitmq_workspace = "@rabbitmq-server"):
4949
org = "Kyorai",
5050
)
5151

52+
http_archive(
53+
name = "emqttc",
54+
urls = ["https://github.com/rabbitmq/emqttc/archive/remove-logging.zip"],
55+
strip_prefix = "emqttc-remove-logging",
56+
build_file_content = """load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib")
57+
58+
erlang_lib(
59+
app_name = "emqttc",
60+
erlc_opts = [
61+
"+warn_export_all",
62+
"+warn_unused_import",
63+
],
64+
)
65+
""",
66+
)
67+
5268
github_bazel_erlang_lib(
5369
repo = "gen-batch-server",
5470
name = "gen_batch_server",

0 commit comments

Comments
 (0)