Add rabbitmq_federation to bazel

This commit is contained in:
Philip Kuryloski 2021-04-13 11:45:09 +02:00
parent ad7c0ef502
commit 078c897d2a
4 changed files with 262 additions and 14 deletions

View File

@ -13,6 +13,7 @@ exports_files([
"scripts/rabbitmq-defaults",
"scripts/rabbitmq-env",
"scripts/rabbitmq-plugins",
"scripts/rabbitmq-queues",
"scripts/rabbitmq-server",
"scripts/rabbitmqctl",
])

View File

@ -1,24 +1,262 @@
load("//:rabbitmq.bzl", "APP_VERSION", "RABBITMQ_ERLC_OPTS", "rabbitmq_lib")
load(
"@bazel-erlang//:bazel_erlang_lib.bzl",
"DEFAULT_TEST_ERLC_OPTS",
"erlang_lib",
"erlc",
"test_erlang_lib",
)
load("@bazel-erlang//:ct.bzl", "ct_suite")
load("//:rabbitmq_home.bzl", "rabbitmq_home")
load("//:rabbitmq_run.bzl", "rabbitmq_run")
load(
"//:rabbitmq.bzl",
"APP_VERSION",
"RABBITMQ_ERLC_OPTS",
"RABBITMQ_TEST_ERLC_OPTS",
)
APP_NAME = "rabbitmq_federation"
APP_DESCRIPTION = "RabbitMQ Federation"
APP_MODULE = "rabbit_federation_app"
APP_ENV = """[
{pgroup_name_cluster_id, false},
{internal_exchange_check_interval, 90000}
]"""
DEPS = [
"//deps/rabbit_common:bazel_erlang_lib",
"//deps/rabbit:bazel_erlang_lib",
"//deps/amqp_client:bazel_erlang_lib",
BUILD_DEPS = [
"//deps/rabbitmq_cli:rabbitmqctl",
]
rabbitmq_lib(
app_description = "RabbitMQ Federation",
DEPS = [
"//deps/amqp_client:bazel_erlang_lib",
"//deps/rabbit_common:bazel_erlang_lib",
"//deps/rabbit:bazel_erlang_lib",
]
erlang_lib(
app_description = APP_DESCRIPTION,
app_env = APP_ENV,
app_module = "rabbit_federation_app",
app_name = "rabbitmq_federation",
app_module = APP_MODULE,
app_name = APP_NAME,
app_version = APP_VERSION,
build_deps = [
"//deps/rabbitmq_cli:rabbitmqctl",
],
build_deps = BUILD_DEPS,
erlc_opts = RABBITMQ_ERLC_OPTS,
deps = DEPS,
)
test_erlang_lib(
app_description = APP_DESCRIPTION,
app_env = APP_ENV,
app_module = APP_MODULE,
app_name = APP_NAME,
app_version = APP_VERSION,
build_deps = BUILD_DEPS,
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = DEPS,
)
rabbitmq_home(
name = "broker-for-tests-home",
plugins = [
"//deps/rabbit:bazel_erlang_lib",
":bazel_erlang_lib",
],
)
rabbitmq_run(
name = "rabbitmq-for-tests-run",
home = ":broker-for-tests-home",
)
erlc(
name = "rabbit_federation_test_util",
testonly = True,
srcs = [
"test/rabbit_federation_test_util.erl",
],
hdrs = glob([
"include/**/*.hrl",
"src/**/*.hrl",
]),
dest = "test",
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
deps = [
":test_bazel_erlang_lib",
"//deps/amqp_client:bazel_erlang_lib",
"//deps/rabbit_common:bazel_erlang_lib",
],
)
ct_suite(
name = "exchange_SUITE",
additional_beam = [
":rabbit_federation_test_util",
],
data = [
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
],
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
groups = [
"without_automatic_setup",
"channel_use_mode_single",
"without_disambiguate",
"with_disambiguate",
],
test_env = {
"SKIP_MAKE_TEST_DIST": "true",
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
"RABBITMQ_QUEUES": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-queues",
},
tools = [
":rabbitmq-for-tests-run",
],
runtime_deps = [
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
"//deps/rabbitmq_cli:rabbitmqctl",
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
],
deps = [
"//deps/amqp_client:bazel_erlang_lib",
"//deps/rabbit_common:bazel_erlang_lib",
],
)
ct_suite(
name = "federation_status_command_SUITE",
additional_beam = [
":rabbit_federation_test_util",
],
data = [
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
],
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
test_env = {
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
},
tools = [
":rabbitmq-for-tests-run",
],
runtime_deps = [
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
"//deps/rabbitmq_cli:rabbitmqctl",
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
],
deps = [
"//deps/amqp_client:bazel_erlang_lib",
"//deps/rabbit_common:bazel_erlang_lib",
],
)
ct_suite(
name = "queue_SUITE",
additional_beam = [
":rabbit_federation_test_util",
],
data = [
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
],
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
test_env = {
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
},
tools = [
":rabbitmq-for-tests-run",
],
runtime_deps = [
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
"//deps/rabbitmq_cli:rabbitmqctl",
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
],
deps = [
"//deps/amqp_client:bazel_erlang_lib",
"//deps/rabbit_common:bazel_erlang_lib",
],
)
ct_suite(
name = "restart_federation_link_command_SUITE",
additional_beam = [
":rabbit_federation_test_util",
],
data = [
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
],
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
test_env = {
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
},
tools = [
":rabbitmq-for-tests-run",
],
runtime_deps = [
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
"//deps/rabbitmq_cli:rabbitmqctl",
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
],
deps = [
"//deps/amqp_client:bazel_erlang_lib",
"//deps/rabbit_common:bazel_erlang_lib",
],
)
ct_suite(
name = "unit_inbroker_SUITE",
data = [
"@rabbitmq_ct_helpers//tools/tls-certs:Makefile",
"@rabbitmq_ct_helpers//tools/tls-certs:openssl.cnf.in",
],
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
test_env = {
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
"RABBITMQ_RUN": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/rabbitmq-for-tests-run",
"RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmqctl",
"RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_federation/broker-for-tests-home/sbin/rabbitmq-plugins",
},
tools = [
":rabbitmq-for-tests-run",
],
runtime_deps = [
"//deps/rabbitmq_cli:elixir_as_bazel_erlang_lib",
"//deps/rabbitmq_cli:rabbitmqctl",
"@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
"@rabbitmq_ct_helpers//:bazel_erlang_lib",
],
deps = [
"//deps/rabbit_common:bazel_erlang_lib",
],
)
ct_suite(
name = "unit_SUITE",
erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
test_env = {
"RABBITMQ_CT_SKIP_AS_ERROR": "true",
},
deps = [
"//deps/amqp_client:bazel_erlang_lib",
"//deps/rabbit_common:bazel_erlang_lib",
],
)

View File

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

View File

@ -101,7 +101,15 @@ def _impl(ctx):
scripts = [_copy_script(ctx, script) for script in ctx.files._scripts]
escripts = [_link_escript(ctx, escript) for escript in ["rabbitmq-plugins", "rabbitmqctl"]]
rabbitmq_ctl_copies = [
"rabbitmq-diagnostics",
"rabbitmq-plugins",
"rabbitmq-queues",
"rabbitmq-streams",
"rabbitmq-upgrade",
"rabbitmqctl",
]
escripts = [_link_escript(ctx, escript) for escript in rabbitmq_ctl_copies]
plugins = _flatten([_plugins_dir_links(ctx, plugin) for plugin in plugins])
@ -125,6 +133,7 @@ rabbitmq_home = rule(
"//deps/rabbit:scripts/rabbitmq-defaults",
"//deps/rabbit:scripts/rabbitmq-env",
"//deps/rabbit:scripts/rabbitmq-plugins",
"//deps/rabbit:scripts/rabbitmq-queues",
"//deps/rabbit:scripts/rabbitmq-server",
"//deps/rabbit:scripts/rabbitmqctl",
],