Skip to content

Commit 078c897

Browse files
committed
Add rabbitmq_federation to bazel
1 parent ad7c0ef commit 078c897

File tree

4 files changed

+258
-10
lines changed

4 files changed

+258
-10
lines changed

deps/rabbit/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ exports_files([
1313
"scripts/rabbitmq-defaults",
1414
"scripts/rabbitmq-env",
1515
"scripts/rabbitmq-plugins",
16+
"scripts/rabbitmq-queues",
1617
"scripts/rabbitmq-server",
1718
"scripts/rabbitmqctl",
1819
])
Lines changed: 246 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,262 @@
1-
load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_ERLC_OPTS", "rabbitmq_lib")
1+
load(
2+
"@bazel-erlang//:bazel_erlang_lib.bzl",
3+
"DEFAULT_TEST_ERLC_OPTS",
4+
"erlang_lib",
5+
"erlc",
6+
"test_erlang_lib",
7+
)
8+
load("@bazel-erlang//:ct.bzl", "ct_suite")
9+
load("//:rabbitmq_home.bzl", "rabbitmq_home")
10+
load("//:rabbitmq_run.bzl", "rabbitmq_run")
11+
load(
12+
"//:rabbitmq.bzl",
13+
"APP_VERSION",
14+
"RABBITMQ_ERLC_OPTS",
15+
"RABBITMQ_TEST_ERLC_OPTS",
16+
)
17+
18+
APP_NAME = "rabbitmq_federation"
19+
20+
APP_DESCRIPTION = "RabbitMQ Federation"
21+
22+
APP_MODULE = "rabbit_federation_app"
223

324
APP_ENV = """[
425
{pgroup_name_cluster_id, false},
526
{internal_exchange_check_interval, 90000}
627
]"""
728

29+
BUILD_DEPS = [
30+
"//deps/rabbitmq_cli:rabbitmqctl",
31+
]
32+
833
DEPS = [
34+
"//deps/amqp_client:bazel_erlang_lib",
935
"//deps/rabbit_common:bazel_erlang_lib",
1036
"//deps/rabbit:bazel_erlang_lib",
11-
"//deps/amqp_client:bazel_erlang_lib",
1237
]
1338

14-
rabbitmq_lib(
15-
app_description = "RabbitMQ Federation",
39+
erlang_lib(
40+
app_description = APP_DESCRIPTION,
1641
app_env = APP_ENV,
17-
app_module = "rabbit_federation_app",
18-
app_name = "rabbitmq_federation",
42+
app_module = APP_MODULE,
43+
app_name = APP_NAME,
1944
app_version = APP_VERSION,
20-
build_deps = [
45+
build_deps = BUILD_DEPS,
46+
erlc_opts = RABBITMQ_ERLC_OPTS,
47+
deps = DEPS,
48+
)
49+
50+
test_erlang_lib(
51+
app_description = APP_DESCRIPTION,
52+
app_env = APP_ENV,
53+
app_module = APP_MODULE,
54+
app_name = APP_NAME,
55+
app_version = APP_VERSION,
56+
build_deps = BUILD_DEPS,
57+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
58+
deps = DEPS,
59+
)
60+
61+
rabbitmq_home(
62+
name = "broker-for-tests-home",
63+
plugins = [
64+
"//deps/rabbit:bazel_erlang_lib",
65+
":bazel_erlang_lib",
66+
],
67+
)
68+
69+
rabbitmq_run(
70+
name = "rabbitmq-for-tests-run",
71+
home = ":broker-for-tests-home",
72+
)
73+
74+
erlc(
75+
name = "rabbit_federation_test_util",
76+
testonly = True,
77+
srcs = [
78+
"test/rabbit_federation_test_util.erl",
79+
],
80+
hdrs = glob([
81+
"include/**/*.hrl",
82+
"src/**/*.hrl",
83+
]),
84+
dest = "test",
85+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
86+
deps = [
87+
":test_bazel_erlang_lib",
88+
"//deps/amqp_client:bazel_erlang_lib",
89+
"//deps/rabbit_common:bazel_erlang_lib",
90+
],
91+
)
92+
93+
ct_suite(
94+
name = "exchange_SUITE",
95+
additional_beam = [
96+
":rabbit_federation_test_util",
97+
],
98+
data = [
99+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
100+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
101+
],
102+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
103+
groups = [
104+
"without_automatic_setup",
105+
"channel_use_mode_single",
106+
"without_disambiguate",
107+
"with_disambiguate",
108+
],
109+
test_env = {
110+
"SKIP_MAKE_TEST_DIST": "true",
111+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
112+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
113+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
114+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
115+
"RABBITMQ_QUEUES": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-queues",
116+
},
117+
tools = [
118+
":rabbitmq-for-tests-run",
119+
],
120+
runtime_deps = [
121+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
21122
"//deps/rabbitmq_cli:rabbitmqctl",
123+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
124+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
125+
],
126+
deps = [
127+
"//deps/amqp_client:bazel_erlang_lib",
128+
"//deps/rabbit_common:bazel_erlang_lib",
129+
],
130+
)
131+
132+
ct_suite(
133+
name = "federation_status_command_SUITE",
134+
additional_beam = [
135+
":rabbit_federation_test_util",
136+
],
137+
data = [
138+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
139+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
140+
],
141+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
142+
test_env = {
143+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
144+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
145+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
146+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
147+
},
148+
tools = [
149+
":rabbitmq-for-tests-run",
150+
],
151+
runtime_deps = [
152+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
153+
"//deps/rabbitmq_cli:rabbitmqctl",
154+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
155+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
156+
],
157+
deps = [
158+
"//deps/amqp_client:bazel_erlang_lib",
159+
"//deps/rabbit_common:bazel_erlang_lib",
160+
],
161+
)
162+
163+
ct_suite(
164+
name = "queue_SUITE",
165+
additional_beam = [
166+
":rabbit_federation_test_util",
167+
],
168+
data = [
169+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
170+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
171+
],
172+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
173+
test_env = {
174+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
175+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
176+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
177+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
178+
},
179+
tools = [
180+
":rabbitmq-for-tests-run",
181+
],
182+
runtime_deps = [
183+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
184+
"//deps/rabbitmq_cli:rabbitmqctl",
185+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
186+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
187+
],
188+
deps = [
189+
"//deps/amqp_client:bazel_erlang_lib",
190+
"//deps/rabbit_common:bazel_erlang_lib",
191+
],
192+
)
193+
194+
ct_suite(
195+
name = "restart_federation_link_command_SUITE",
196+
additional_beam = [
197+
":rabbit_federation_test_util",
198+
],
199+
data = [
200+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
201+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
202+
],
203+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
204+
test_env = {
205+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
206+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
207+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
208+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
209+
},
210+
tools = [
211+
":rabbitmq-for-tests-run",
212+
],
213+
runtime_deps = [
214+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
215+
"//deps/rabbitmq_cli:rabbitmqctl",
216+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
217+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
218+
],
219+
deps = [
220+
"//deps/amqp_client:bazel_erlang_lib",
221+
"//deps/rabbit_common:bazel_erlang_lib",
222+
],
223+
)
224+
225+
ct_suite(
226+
name = "unit_inbroker_SUITE",
227+
data = [
228+
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
229+
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
230+
],
231+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
232+
test_env = {
233+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
234+
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
235+
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
236+
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
237+
},
238+
tools = [
239+
":rabbitmq-for-tests-run",
240+
],
241+
runtime_deps = [
242+
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
243+
"//deps/rabbitmq_cli:rabbitmqctl",
244+
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
245+
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
246+
],
247+
deps = [
248+
"//deps/rabbit_common:bazel_erlang_lib",
249+
],
250+
)
251+
252+
ct_suite(
253+
name = "unit_SUITE",
254+
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
255+
test_env = {
256+
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
257+
},
258+
deps = [
259+
"//deps/amqp_client:bazel_erlang_lib",
260+
"//deps/rabbit_common:bazel_erlang_lib",
22261
],
23-
deps = DEPS,
24262
)

deps/rabbitmq_federation/test/exchange_SUITE.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1308,7 +1308,7 @@ await_binding(Config, Node, Vhost, X, Key, ExpectedBindingCount) when is_integer
13081308
await_binding(Config, Node, Vhost, X, Key, ExpectedBindingCount, Attempts).
13091309

13101310
await_binding(_Config, _Node, _Vhost, _X, _Key, ExpectedBindingCount, 0) ->
1311-
{error, rabbit_misc:format("expected ~s bindings but they did not materialize in time", [ExpectedBindingCount])};
1311+
{error, rabbit_misc:format("expected ~b bindings but they did not materialize in time", [ExpectedBindingCount])};
13121312
await_binding(Config, Node, Vhost, X, Key, ExpectedBindingCount, AttemptsLeft) when is_integer(ExpectedBindingCount) ->
13131313
case bound_keys_from(Config, Node, Vhost, X, Key) of
13141314
Bs when length(Bs) < ExpectedBindingCount ->

rabbitmq_home.bzl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,15 @@ def _impl(ctx):
101101

102102
scripts = [_copy_script(ctx, script) for script in ctx.files._scripts]
103103

104-
escripts = [_link_escript(ctx, escript) for escript in ["rabbitmq-plugins", "rabbitmqctl"]]
104+
rabbitmq_ctl_copies = [
105+
"rabbitmq-diagnostics",
106+
"rabbitmq-plugins",
107+
"rabbitmq-queues",
108+
"rabbitmq-streams",
109+
"rabbitmq-upgrade",
110+
"rabbitmqctl",
111+
]
112+
escripts = [_link_escript(ctx, escript) for escript in rabbitmq_ctl_copies]
105113

106114
plugins = _flatten([_plugins_dir_links(ctx, plugin) for plugin in plugins])
107115

@@ -125,6 +133,7 @@ rabbitmq_home = rule(
125133
"//deps/rabbit:scripts/rabbitmq-defaults",
126134
"//deps/rabbit:scripts/rabbitmq-env",
127135
"//deps/rabbit:scripts/rabbitmq-plugins",
136+
"//deps/rabbit:scripts/rabbitmq-queues",
128137
"//deps/rabbit:scripts/rabbitmq-server",
129138
"//deps/rabbit:scripts/rabbitmqctl",
130139
],

0 commit comments

Comments
 (0)