summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Kuryloski <kuryloskip@vmware.com>2021-04-19 09:50:15 +0200
committerPhilip Kuryloski <kuryloskip@vmware.com>2021-04-19 09:50:42 +0200
commit36321ee126bd4d53db54932fd3132e8a2c95edd0 (patch)
treefec4f468fd62e693b2974eaeb1a229aced23be5e
parenta4b86645a4f1e9db362ad1e0586dbacfff762a2b (diff)
downloadrabbitmq-server-git-36321ee126bd4d53db54932fd3132e8a2c95edd0.tar.gz
Test rabbitmq_mqtt with bazel
-rw-r--r--BUILD.ranch46
-rw-r--r--deps/rabbitmq_mqtt/BUILD.bazel334
-rw-r--r--workspace_helpers.bzl23
3 files changed, 399 insertions, 4 deletions
diff --git a/BUILD.ranch b/BUILD.ranch
new file mode 100644
index 0000000000..746712128f
--- /dev/null
+++ b/BUILD.ranch
@@ -0,0 +1,46 @@
+load("@bazel-erlang//:bazel_erlang_lib.bzl", "app_file", "bazel_erlang_lib", "erlc",
+"DEFAULT_ERLC_OPTS")
+
+FIRST_SRCS = [
+ "src/ranch_transport.erl",
+]
+
+erlc(
+ name = "first_beam_files",
+ hdrs = glob(["include/**/*.hrl", "src/**/*.hrl"]),
+ srcs = glob(FIRST_SRCS),
+ erlc_opts = DEFAULT_ERLC_OPTS,
+ dest = "ebin",
+)
+
+erlc(
+ name = "beam_files",
+ hdrs = glob(["include/**/*.hrl", "src/**/*.hrl"]),
+ srcs = glob(["src/**/*.erl"], exclude = FIRST_SRCS),
+ beam = [":first_beam_files"],
+ erlc_opts = DEFAULT_ERLC_OPTS,
+ dest = "ebin",
+)
+
+genrule(
+ name = "appup",
+ srcs = ["src/ranch.appup"],
+ outs = ["ebin/ranch.appup"],
+ cmd = "cp $< $@",
+)
+
+app_file(
+ name = "app_file",
+ app_name = "ranch",
+ app_src = ["src/ranch.app.src"],
+ modules = [":first_beam_files", ":beam_files"],
+)
+
+bazel_erlang_lib(
+ name = "bazel_erlang_lib",
+ app_name = "ranch",
+ app = ":app_file",
+ hdrs = glob(["include/**/*.hrl"]),
+ beam = [":first_beam_files", ":beam_files", ":appup"],
+ visibility = ["//visibility:public"],
+)
diff --git a/deps/rabbitmq_mqtt/BUILD.bazel b/deps/rabbitmq_mqtt/BUILD.bazel
new file mode 100644
index 0000000000..c7296e5adb
--- /dev/null
+++ b/deps/rabbitmq_mqtt/BUILD.bazel
@@ -0,0 +1,334 @@
+load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlc")
+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",
+ "rabbitmq_lib",
+)
+
+APP_NAME = "rabbitmq_mqtt"
+
+APP_DESCRIPTION = "RabbitMQ MQTT Adapter"
+
+APP_MODULE = "rabbit_mqtt"
+
+APP_ENV = """[
+ {default_user, <<"guest">>},
+ {default_pass, <<"guest">>},
+ {ssl_cert_login,false},
+ %% To satisfy an unfortunate expectation from popular MQTT clients.
+ {allow_anonymous, true},
+ {vhost, <<"/">>},
+ {exchange, <<"amq.topic">>},
+ {subscription_ttl, 86400000}, %% 24 hours
+ {retained_message_store, rabbit_mqtt_retained_msg_store_dets},
+ %% only used by DETS store
+ {retained_message_store_dets_sync_interval, 2000},
+ {prefetch, 10},
+ {ssl_listeners, []},
+ {tcp_listeners, [1883]},
+ {num_tcp_acceptors, 10},
+ {num_ssl_acceptors, 10},
+ {tcp_listen_options, [{backlog, 128},
+ {nodelay, true}]},
+ {proxy_protocol, false},
+ {sparkplug, false}
+ ]"""
+
+FIRST_SRCS = [
+ "src/rabbit_mqtt_retained_msg_store.erl",
+]
+
+BUILD_DEPS = [
+ "//deps/rabbitmq_cli:rabbitmqctl",
+]
+
+DEPS = [
+ "//deps/amqp_client:bazel_erlang_lib",
+ "//deps/rabbit_common:bazel_erlang_lib",
+ "@ra//:bazel_erlang_lib",
+ "@ranch//:bazel_erlang_lib",
+]
+
+RUNTIME_DEPS = [
+ "//deps/rabbit:bazel_erlang_lib",
+]
+
+rabbitmq_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,
+ first_srcs = FIRST_SRCS,
+ runtime_deps = RUNTIME_DEPS,
+ 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_auth_backend_mqtt_mock",
+ testonly = True,
+ srcs = [
+ "test/rabbit_auth_backend_mqtt_mock.erl",
+ ],
+ dest = "test",
+ deps = [
+ "//deps/rabbit_common:bazel_erlang_lib",
+ ],
+)
+
+ct_suite(
+ name = "auth_SUITE",
+ additional_beam = [
+ ":rabbit_auth_backend_mqtt_mock",
+ ],
+ 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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ "@emqttc//:bazel_erlang_lib",
+ "@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
+ "@rabbitmq_ct_helpers//:bazel_erlang_lib",
+ ],
+)
+
+ct_suite(
+ name = "cluster_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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ "@emqttc//:bazel_erlang_lib",
+ "@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
+ "@rabbitmq_ct_helpers//:bazel_erlang_lib",
+ ],
+)
+
+ct_suite(
+ name = "command_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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ "@emqttc//:bazel_erlang_lib",
+ "@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 = "config_schema_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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ ],
+)
+
+ct_suite(
+ name = "java_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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ ],
+)
+
+ct_suite(
+ name = "mqtt_machine_SUITE",
+ size = "small",
+ erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
+ test_env = {
+ "RABBITMQ_CT_SKIP_AS_ERROR": "true",
+ },
+)
+
+ct_suite(
+ name = "processor_SUITE",
+ size = "small",
+ 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",
+ ],
+)
+
+ct_suite(
+ name = "proxy_protocol_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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ ],
+)
+
+ct_suite(
+ name = "reader_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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ "@emqttc//:bazel_erlang_lib",
+ "@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
+ "@rabbitmq_ct_helpers//:bazel_erlang_lib",
+ ],
+)
+
+ct_suite(
+ name = "retainer_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_mqtt/rabbitmq-for-tests-run",
+ "RABBITMQCTL": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/broker-for-tests-home/sbin/rabbitmqctl",
+ "RABBITMQ_PLUGINS": "$TEST_SRCDIR/$TEST_WORKSPACE/deps/rabbitmq_mqtt/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",
+ "@emqttc//:bazel_erlang_lib",
+ "@rabbitmq_ct_client_helpers//:bazel_erlang_lib",
+ "@rabbitmq_ct_helpers//:bazel_erlang_lib",
+ ],
+)
+
+ct_suite(
+ name = "util_SUITE",
+ size = "small",
+ data = [
+ "test/rabbitmq_mqtt.app",
+ ],
+ erlc_opts = RABBITMQ_TEST_ERLC_OPTS,
+ test_env = {
+ "RABBITMQ_CT_SKIP_AS_ERROR": "true",
+ },
+)
diff --git a/workspace_helpers.bzl b/workspace_helpers.bzl
index f3073b85f8..9719ecfab0 100644
--- a/workspace_helpers.bzl
+++ b/workspace_helpers.bzl
@@ -1,6 +1,7 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository")
load("@bazel-erlang//:github.bzl", "github_bazel_erlang_lib")
+load("@bazel-erlang//:hex_archive.bzl", "hex_archive")
load("@bazel-erlang//:hex_pm.bzl", "hex_pm_bazel_erlang_lib")
load("//:rabbitmq.bzl", "APP_VERSION")
@@ -48,6 +49,22 @@ def rabbitmq_external_deps(rabbitmq_workspace = "@rabbitmq-server"):
org = "Kyorai",
)
+ http_archive(
+ name = "emqttc",
+ urls = ["https://github.com/rabbitmq/emqttc/archive/remove-logging.zip"],
+ strip_prefix = "emqttc-remove-logging",
+ build_file_content = """load("@bazel-erlang//:bazel_erlang_lib.bzl", "erlang_lib")
+
+erlang_lib(
+ app_name = "emqttc",
+ erlc_opts = [
+ "+warn_export_all",
+ "+warn_unused_import",
+ ],
+)
+""",
+ )
+
hex_pm_bazel_erlang_lib(
name = "enough",
version = "0.1.0",
@@ -134,13 +151,11 @@ def rabbitmq_external_deps(rabbitmq_workspace = "@rabbitmq-server"):
],
)
- hex_pm_bazel_erlang_lib(
+ hex_archive(
name = "ranch",
- first_srcs = [
- "src/ranch_transport.erl",
- ],
version = "2.0.0",
sha256 = "c20a4840c7d6623c19812d3a7c828b2f1bd153ef0f124cb69c54fe51d8a42ae0",
+ build_file = rabbitmq_workspace + "//:BUILD.ranch",
)
hex_pm_bazel_erlang_lib(