diff options
| author | Philip Kuryloski <kuryloskip@vmware.com> | 2021-04-19 09:50:15 +0200 |
|---|---|---|
| committer | Philip Kuryloski <kuryloskip@vmware.com> | 2021-04-19 09:50:42 +0200 |
| commit | 36321ee126bd4d53db54932fd3132e8a2c95edd0 (patch) | |
| tree | fec4f468fd62e693b2974eaeb1a229aced23be5e | |
| parent | a4b86645a4f1e9db362ad1e0586dbacfff762a2b (diff) | |
| download | rabbitmq-server-git-36321ee126bd4d53db54932fd3132e8a2c95edd0.tar.gz | |
Test rabbitmq_mqtt with bazel
| -rw-r--r-- | BUILD.ranch | 46 | ||||
| -rw-r--r-- | deps/rabbitmq_mqtt/BUILD.bazel | 334 | ||||
| -rw-r--r-- | workspace_helpers.bzl | 23 |
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( |
