2022-06-03 18:46:45 +08:00
|
|
|
load("@rules_erlang//:xref2.bzl", "xref")
|
2022-01-06 03:57:48 +08:00
|
|
|
load("@rules_erlang//:dialyze.bzl", "dialyze", "plt")
|
2021-05-10 23:38:03 +08:00
|
|
|
load("//:rabbitmq_home.bzl", "rabbitmq_home")
|
|
|
|
|
load("//:rabbitmq_run.bzl", "rabbitmq_run")
|
2021-03-29 17:01:43 +08:00
|
|
|
load(
|
|
|
|
|
"//:rabbitmq.bzl",
|
2021-06-01 16:19:10 +08:00
|
|
|
"RABBITMQ_DIALYZER_OPTS",
|
2021-07-12 21:55:56 +08:00
|
|
|
"assert_suites",
|
2022-01-06 03:57:48 +08:00
|
|
|
"rabbitmq_app",
|
2021-03-29 17:01:43 +08:00
|
|
|
"rabbitmq_integration_suite",
|
2021-05-11 16:44:28 +08:00
|
|
|
"rabbitmq_suite",
|
2022-05-17 20:07:16 +08:00
|
|
|
"rabbitmq_test_helper",
|
2021-03-29 17:01:43 +08:00
|
|
|
)
|
2021-05-14 16:39:03 +08:00
|
|
|
load(":bats.bzl", "bats")
|
2021-03-29 17:01:43 +08:00
|
|
|
|
2022-08-16 17:43:02 +08:00
|
|
|
exports_files(glob([
|
|
|
|
|
"scripts/**",
|
|
|
|
|
]) + ["INSTALL"])
|
2021-03-29 17:01:43 +08:00
|
|
|
|
|
|
|
|
_APP_ENV = """[
|
|
|
|
|
{tcp_listeners, [5672]},
|
|
|
|
|
{num_tcp_acceptors, 10},
|
|
|
|
|
{ssl_listeners, []},
|
|
|
|
|
{num_ssl_acceptors, 10},
|
|
|
|
|
{ssl_options, []},
|
|
|
|
|
{vm_memory_high_watermark, 0.4},
|
|
|
|
|
{vm_memory_high_watermark_paging_ratio, 0.5},
|
|
|
|
|
{vm_memory_calculation_strategy, rss},
|
|
|
|
|
{memory_monitor_interval, 2500},
|
|
|
|
|
{disk_free_limit, 50000000}, %% 50MB
|
|
|
|
|
{msg_store_index_module, rabbit_msg_store_ets_index},
|
|
|
|
|
{backing_queue_module, rabbit_variable_queue},
|
|
|
|
|
%% 0 ("no limit") would make a better default, but that
|
|
|
|
|
%% breaks the QPid Java client
|
|
|
|
|
{frame_max, 131072},
|
|
|
|
|
%% see rabbitmq-server#1593
|
|
|
|
|
{channel_max, 2047},
|
|
|
|
|
{connection_max, infinity},
|
|
|
|
|
{heartbeat, 60},
|
|
|
|
|
{msg_store_file_size_limit, 16777216},
|
|
|
|
|
{msg_store_shutdown_timeout, 600000},
|
|
|
|
|
{fhc_write_buffering, true},
|
|
|
|
|
{fhc_read_buffering, false},
|
|
|
|
|
{queue_index_max_journal_entries, 32768},
|
|
|
|
|
{queue_index_embed_msgs_below, 4096},
|
|
|
|
|
{default_user, <<"guest">>},
|
|
|
|
|
{default_pass, <<"guest">>},
|
|
|
|
|
{default_user_tags, [administrator]},
|
|
|
|
|
{default_vhost, <<"/">>},
|
|
|
|
|
{default_permissions, [<<".*">>, <<".*">>, <<".*">>]},
|
|
|
|
|
{loopback_users, [<<"guest">>]},
|
|
|
|
|
{password_hashing_module, rabbit_password_hashing_sha256},
|
|
|
|
|
{server_properties, []},
|
|
|
|
|
{collect_statistics, none},
|
|
|
|
|
{collect_statistics_interval, 5000},
|
|
|
|
|
{mnesia_table_loading_retry_timeout, 30000},
|
|
|
|
|
{mnesia_table_loading_retry_limit, 10},
|
|
|
|
|
{auth_mechanisms, ['PLAIN', 'AMQPLAIN']},
|
|
|
|
|
{auth_backends, [rabbit_auth_backend_internal]},
|
|
|
|
|
{delegate_count, 16},
|
|
|
|
|
{trace_vhosts, []},
|
|
|
|
|
{ssl_cert_login_from, distinguished_name},
|
|
|
|
|
{ssl_handshake_timeout, 5000},
|
|
|
|
|
{ssl_allow_poodle_attack, false},
|
|
|
|
|
{handshake_timeout, 10000},
|
|
|
|
|
{reverse_dns_lookups, false},
|
|
|
|
|
{cluster_partition_handling, ignore},
|
|
|
|
|
{cluster_keepalive_interval, 10000},
|
|
|
|
|
{autoheal_state_transition_timeout, 60000},
|
|
|
|
|
{tcp_listen_options, [{backlog, 128},
|
|
|
|
|
{nodelay, true},
|
|
|
|
|
{linger, {true, 0}},
|
|
|
|
|
{exit_on_close, false}
|
|
|
|
|
]},
|
|
|
|
|
{halt_on_upgrade_failure, true},
|
|
|
|
|
{ssl_apps, [asn1, crypto, public_key, ssl]},
|
|
|
|
|
%% see rabbitmq-server#114
|
|
|
|
|
{mirroring_flow_control, true},
|
|
|
|
|
{mirroring_sync_batch_size, 4096},
|
|
|
|
|
%% see rabbitmq-server#227 and related tickets.
|
|
|
|
|
%% msg_store_credit_disc_bound only takes effect when
|
|
|
|
|
%% messages are persisted to the message store. If messages
|
|
|
|
|
%% are embedded on the queue index, then modifying this
|
|
|
|
|
%% setting has no effect because credit_flow is not used when
|
|
|
|
|
%% writing to the queue index. See the setting
|
|
|
|
|
%% queue_index_embed_msgs_below above.
|
|
|
|
|
{msg_store_credit_disc_bound, {4000, 800}},
|
|
|
|
|
{msg_store_io_batch_size, 4096},
|
|
|
|
|
%% see rabbitmq-server#143,
|
|
|
|
|
%% rabbitmq-server#949, rabbitmq-server#1098
|
|
|
|
|
{credit_flow_default_credit, {400, 200}},
|
|
|
|
|
{quorum_commands_soft_limit, 32},
|
2021-03-30 16:44:55 +08:00
|
|
|
{quorum_cluster_size, 3},
|
2021-03-29 17:01:43 +08:00
|
|
|
%% see rabbitmq-server#248
|
|
|
|
|
%% and rabbitmq-server#667
|
|
|
|
|
{channel_operation_timeout, 15000},
|
|
|
|
|
|
|
|
|
|
%% see rabbitmq-server#486
|
|
|
|
|
{autocluster,
|
|
|
|
|
[{peer_discovery_backend, rabbit_peer_discovery_classic_config}]
|
|
|
|
|
},
|
|
|
|
|
%% used by rabbit_peer_discovery_classic_config
|
|
|
|
|
{cluster_nodes, {[], disc}},
|
|
|
|
|
|
|
|
|
|
{config_entry_decoder, [{passphrase, undefined}]},
|
|
|
|
|
|
|
|
|
|
%% rabbitmq-server#973
|
|
|
|
|
{queue_explicit_gc_run_operation_threshold, 1000},
|
|
|
|
|
{lazy_queue_explicit_gc_run_operation_threshold, 1000},
|
|
|
|
|
{background_gc_enabled, false},
|
|
|
|
|
{background_gc_target_interval, 60000},
|
|
|
|
|
%% rabbitmq-server#589
|
|
|
|
|
{proxy_protocol, false},
|
|
|
|
|
{disk_monitor_failure_retries, 10},
|
|
|
|
|
{disk_monitor_failure_retry_interval, 120000},
|
|
|
|
|
%% either "stop_node" or "continue".
|
|
|
|
|
%% by default we choose to not terminate the entire node if one
|
|
|
|
|
%% vhost had to shut down, see server#1158 and server#1280
|
|
|
|
|
{vhost_restart_strategy, continue},
|
|
|
|
|
%% {global, prefetch count}
|
|
|
|
|
{default_consumer_prefetch, {false, 0}},
|
|
|
|
|
%% interval at which the channel can perform periodic actions
|
|
|
|
|
{channel_tick_interval, 60000},
|
|
|
|
|
%% Default max message size is 128 MB
|
|
|
|
|
{max_message_size, 134217728},
|
|
|
|
|
%% Socket writer will run GC every 1 GB of outgoing data
|
|
|
|
|
{writer_gc_threshold, 1000000000},
|
|
|
|
|
%% interval at which connection/channel tracking executes post operations
|
|
|
|
|
{tracking_execution_timeout, 15000},
|
|
|
|
|
{stream_messages_soft_limit, 256},
|
2022-01-15 00:11:38 +08:00
|
|
|
{track_auth_attempt_source, false},
|
2022-05-06 20:58:50 +08:00
|
|
|
{credentials_obfuscation_fallback_secret, <<"nocookie">>},
|
2022-01-24 22:24:38 +08:00
|
|
|
{dead_letter_worker_consumer_prefetch, 32},
|
2022-08-19 22:20:55 +08:00
|
|
|
{dead_letter_worker_publisher_confirm_timeout, 180000},
|
|
|
|
|
|
|
|
|
|
%% EOL date for the current release series, if known/announced
|
|
|
|
|
{release_series_eol_date, none}
|
2021-03-29 17:01:43 +08:00
|
|
|
]
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
DEPS = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/amqp10_common:erlang_app",
|
|
|
|
|
"//deps/rabbit_common:erlang_app",
|
|
|
|
|
"@ra//:erlang_app",
|
|
|
|
|
"@ranch//:erlang_app",
|
|
|
|
|
"@stdout_formatter//:erlang_app",
|
|
|
|
|
"@syslog//:erlang_app",
|
2021-03-29 17:01:43 +08:00
|
|
|
]
|
|
|
|
|
|
|
|
|
|
RUNTIME_DEPS = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit/apps/rabbitmq_prelaunch:erlang_app",
|
|
|
|
|
"@cuttlefish//:erlang_app",
|
|
|
|
|
"@observer_cli//:erlang_app",
|
|
|
|
|
"@osiris//:erlang_app",
|
|
|
|
|
"@recon//:erlang_app",
|
|
|
|
|
"@redbug//:erlang_app",
|
|
|
|
|
"@seshat//:erlang_app",
|
|
|
|
|
"@sysmon_handler//:erlang_app",
|
|
|
|
|
"@systemd//:erlang_app",
|
2021-03-29 17:01:43 +08:00
|
|
|
]
|
|
|
|
|
|
2021-05-19 16:54:56 +08:00
|
|
|
APP_MODULE = "rabbit"
|
|
|
|
|
|
2021-03-29 17:01:43 +08:00
|
|
|
APP_REGISTERED = [
|
|
|
|
|
"rabbit_amqqueue_sup",
|
|
|
|
|
"rabbit_direct_client_sup",
|
|
|
|
|
"rabbit_log",
|
|
|
|
|
"rabbit_node_monitor",
|
|
|
|
|
"rabbit_router",
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
EXTRA_APPS = [
|
|
|
|
|
"sasl",
|
|
|
|
|
"rabbitmq_prelaunch",
|
|
|
|
|
"os_mon",
|
|
|
|
|
"inets",
|
|
|
|
|
"compiler",
|
|
|
|
|
"public_key",
|
|
|
|
|
"crypto",
|
|
|
|
|
"ssl",
|
|
|
|
|
"syntax_tools",
|
|
|
|
|
"xmerl",
|
|
|
|
|
]
|
|
|
|
|
|
2022-01-06 03:57:48 +08:00
|
|
|
rabbitmq_app(
|
2021-03-29 17:01:43 +08:00
|
|
|
app_description = "RabbitMQ",
|
|
|
|
|
app_env = _APP_ENV,
|
2021-05-19 16:54:56 +08:00
|
|
|
app_module = APP_MODULE,
|
2021-03-29 17:01:43 +08:00
|
|
|
app_name = "rabbit",
|
|
|
|
|
app_registered = APP_REGISTERED,
|
|
|
|
|
extra_apps = EXTRA_APPS,
|
|
|
|
|
runtime_deps = RUNTIME_DEPS,
|
|
|
|
|
deps = DEPS,
|
|
|
|
|
)
|
|
|
|
|
|
2022-05-17 20:07:16 +08:00
|
|
|
xref()
|
2021-05-19 16:54:56 +08:00
|
|
|
|
2021-05-28 19:27:21 +08:00
|
|
|
plt_apps = [
|
|
|
|
|
"mnesia",
|
|
|
|
|
] + EXTRA_APPS
|
|
|
|
|
|
|
|
|
|
plt_apps.remove("rabbitmq_prelaunch")
|
|
|
|
|
|
|
|
|
|
plt(
|
|
|
|
|
name = "base_plt",
|
|
|
|
|
apps = plt_apps,
|
|
|
|
|
plt = "//:base_plt",
|
2022-02-24 18:18:41 +08:00
|
|
|
deps = DEPS,
|
2021-05-28 19:27:21 +08:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
dialyze(
|
2021-06-01 16:19:10 +08:00
|
|
|
dialyzer_opts = RABBITMQ_DIALYZER_OPTS,
|
2021-05-28 19:27:21 +08:00
|
|
|
plt = ":base_plt",
|
2022-02-21 16:19:56 +08:00
|
|
|
warnings_as_errors = False,
|
2021-05-28 19:27:21 +08:00
|
|
|
)
|
|
|
|
|
|
2021-05-14 16:39:03 +08:00
|
|
|
bats(
|
|
|
|
|
srcs = glob(["test/**/*.bats"]),
|
|
|
|
|
data = glob(
|
|
|
|
|
["scripts/*"],
|
|
|
|
|
exclude = ["scripts/*.bat"],
|
|
|
|
|
),
|
2022-01-06 03:57:48 +08:00
|
|
|
tags = ["bats"],
|
2021-05-14 16:39:03 +08:00
|
|
|
)
|
|
|
|
|
|
2021-05-10 23:38:03 +08:00
|
|
|
rabbitmq_home(
|
|
|
|
|
name = "broker-for-tests-home",
|
|
|
|
|
testonly = True,
|
|
|
|
|
plugins = [
|
2022-01-06 03:57:48 +08:00
|
|
|
":test_erlang_app",
|
|
|
|
|
"//deps/rabbitmq_ct_client_helpers:erlang_app",
|
2022-04-01 14:41:30 +08:00
|
|
|
"@inet_tcp_proxy_dist//:erlang_app",
|
2022-01-06 03:57:48 +08:00
|
|
|
"@meck//:erlang_app",
|
2021-05-10 23:38:03 +08:00
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
rabbitmq_run(
|
|
|
|
|
name = "rabbitmq-for-tests-run",
|
|
|
|
|
testonly = True,
|
|
|
|
|
home = ":broker-for-tests-home",
|
|
|
|
|
)
|
|
|
|
|
|
2022-05-17 20:07:16 +08:00
|
|
|
rabbitmq_test_helper(
|
2021-03-29 17:01:43 +08:00
|
|
|
name = "quorum_queue_utils",
|
|
|
|
|
srcs = [
|
|
|
|
|
"test/quorum_queue_utils.erl",
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
2022-05-17 20:07:16 +08:00
|
|
|
rabbitmq_test_helper(
|
2021-03-29 17:01:43 +08:00
|
|
|
name = "rabbit_ha_test_consumer",
|
|
|
|
|
srcs = [
|
|
|
|
|
"test/rabbit_ha_test_consumer.erl",
|
|
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/amqp_client:erlang_app",
|
|
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-03-29 17:01:43 +08:00
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
2022-05-17 20:07:16 +08:00
|
|
|
rabbitmq_test_helper(
|
2021-03-29 17:01:43 +08:00
|
|
|
name = "rabbit_ha_test_producer",
|
|
|
|
|
srcs = [
|
|
|
|
|
"test/rabbit_ha_test_producer.erl",
|
|
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/amqp_client:erlang_app",
|
|
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-03-29 17:01:43 +08:00
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
2022-05-17 20:07:16 +08:00
|
|
|
rabbitmq_test_helper(
|
2021-05-12 18:37:08 +08:00
|
|
|
name = "test_util",
|
|
|
|
|
srcs = [
|
|
|
|
|
"test/test_util.erl",
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
|
2021-05-10 23:38:03 +08:00
|
|
|
PACKAGE = "deps/rabbit"
|
|
|
|
|
|
2021-07-12 21:55:56 +08:00
|
|
|
suites = [
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "amqqueue_backward_compatibility_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "backing_queue_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "channel_interceptor_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_srcs = [
|
|
|
|
|
"test/dummy_interceptor.erl",
|
|
|
|
|
"test/failing_dummy_interceptor.erl",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "channel_operation_timeout_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_srcs = [
|
|
|
|
|
"test/channel_operation_timeout_test_queue.erl",
|
|
|
|
|
],
|
|
|
|
|
),
|
2021-11-10 22:26:10 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
2022-02-02 22:11:06 +08:00
|
|
|
name = "classic_queue_prop_SUITE",
|
2021-12-09 19:28:53 +08:00
|
|
|
size = "large",
|
2022-09-09 19:47:45 +08:00
|
|
|
shard_count = 3,
|
2022-02-02 23:06:35 +08:00
|
|
|
sharding_method = "case",
|
2021-11-10 22:26:10 +08:00
|
|
|
deps = [
|
2022-01-25 18:26:20 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-11-10 22:26:10 +08:00
|
|
|
],
|
|
|
|
|
),
|
2021-07-12 21:55:56 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "cluster_rename_SUITE",
|
2021-07-23 18:57:16 +08:00
|
|
|
size = "large",
|
2021-07-12 21:55:56 +08:00
|
|
|
flaky = True,
|
|
|
|
|
shard_count = 2,
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "cluster_SUITE",
|
2021-07-23 18:57:16 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "clustering_management_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
flaky = True,
|
2021-09-30 16:38:39 +08:00
|
|
|
shard_count = 19,
|
|
|
|
|
sharding_method = "case",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "config_schema_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
data = [
|
|
|
|
|
"test/definition_import_SUITE_data/case1.json",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "confirms_rejects_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "consumer_timeout_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "crashing_queues_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "dead_lettering_SUITE",
|
2021-07-23 18:57:16 +08:00
|
|
|
size = "large",
|
2021-07-12 21:55:56 +08:00
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
flaky = True,
|
2022-01-25 16:55:22 +08:00
|
|
|
shard_count = 7,
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "definition_import_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "disconnect_detected_during_alarm_SUITE",
|
2021-07-27 16:57:50 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
2022-09-09 06:05:24 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "disk_monitor_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
2021-07-12 21:55:56 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "dynamic_ha_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
flaky = True,
|
|
|
|
|
shard_count = 20,
|
|
|
|
|
sharding_method = "case",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "dynamic_qq_SUITE",
|
2021-07-23 18:57:16 +08:00
|
|
|
size = "large",
|
2021-07-12 21:55:56 +08:00
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
flaky = True,
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "eager_sync_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":sync_detection_SUITE_beam_files",
|
|
|
|
|
],
|
|
|
|
|
flaky = True,
|
|
|
|
|
shard_count = 5,
|
|
|
|
|
sharding_method = "case",
|
|
|
|
|
tags = ["classic-queue"],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "feature_flags_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
flaky = True,
|
rabbit_feature_flags: Add a feature flags controller process
This gen_statem-based process is responsible for handling concurrency
when feature flags are enabled and synchronized when a cluster is
expanded.
This clarifies and stabilizes the behavior of the feature flag subsystem
w.r.t. situations where e.g. a feature flag migration function takes
time to update data and a new node joins a cluster and synchronizes its
feature flag states with the cluster. There was a chance that the
feature flag was marked as enabled on the joining node, even though the
migration function didn't take care of that node.
With this new feature flags controller, enabling or synchronizing
feature flags blocks and delays any concurrent operations which try to
modify feature flags states too.
This change also clarifies where and when the migration function is
called: it is called at least once on each node who knows the feature
flag and when the state goes from "disabled" to "enabled" on that node.
Note that even if the feature flag is being enabled on a subset of the
nodes (because other nodes already have it enabled), it is marked as
"state_changing" everywhere during the migration. This is to prevent
that a node where it is enabled assumes it is enabled on all nodes who
know the feature flag.
There is a new feature as well: just after a feature flag is enabled,
the migration function is called a second time for any post-enable
actions. The feature flag is marked as enabled between these "enable"
and "post-enable" steps. The success or failure of this "post-enable"
run does not affect the state of the feature flag (i.e. it is ignored).
A new migration function API is introduced to allow more advanced
things. The new API is:
my_migration_function(
#ffcommand{name = ...,
props = ...,
command = enable | post_enable,
extra = #{...}})
The record is defined in `include/feature_flags.hrl`. Here is the
meaning of each field:
* `name` and `props` are the equivalent of the `FeatureName` and
`FeatureProps` arguments of the previous migration function API.
* `command` is basically the same as the previous `Arg` arguments.
* `extra` is map containing context-specific information. For instance, it
contains the list of nodes where the feature flag state changes.
This whole new behavior is behind a new feature flag called
`feature_flags_v2`. If a feature flag uses the new migration function
API, `feature_flags_v2` will be automatically enabled.
If many feature flags are enabled at once (like when a fresh RabbitMQ
node is started for the first time), `feature_flags_v2` will be enabled
first if it is in the list.
2021-12-15 01:50:59 +08:00
|
|
|
shard_count = 9,
|
2021-09-17 17:08:48 +08:00
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit/test/feature_flags_SUITE_data/my_plugin:erlang_app",
|
2021-09-17 17:08:48 +08:00
|
|
|
],
|
|
|
|
|
),
|
rabbit_feature_flags: Add a feature flags controller process
This gen_statem-based process is responsible for handling concurrency
when feature flags are enabled and synchronized when a cluster is
expanded.
This clarifies and stabilizes the behavior of the feature flag subsystem
w.r.t. situations where e.g. a feature flag migration function takes
time to update data and a new node joins a cluster and synchronizes its
feature flag states with the cluster. There was a chance that the
feature flag was marked as enabled on the joining node, even though the
migration function didn't take care of that node.
With this new feature flags controller, enabling or synchronizing
feature flags blocks and delays any concurrent operations which try to
modify feature flags states too.
This change also clarifies where and when the migration function is
called: it is called at least once on each node who knows the feature
flag and when the state goes from "disabled" to "enabled" on that node.
Note that even if the feature flag is being enabled on a subset of the
nodes (because other nodes already have it enabled), it is marked as
"state_changing" everywhere during the migration. This is to prevent
that a node where it is enabled assumes it is enabled on all nodes who
know the feature flag.
There is a new feature as well: just after a feature flag is enabled,
the migration function is called a second time for any post-enable
actions. The feature flag is marked as enabled between these "enable"
and "post-enable" steps. The success or failure of this "post-enable"
run does not affect the state of the feature flag (i.e. it is ignored).
A new migration function API is introduced to allow more advanced
things. The new API is:
my_migration_function(
#ffcommand{name = ...,
props = ...,
command = enable | post_enable,
extra = #{...}})
The record is defined in `include/feature_flags.hrl`. Here is the
meaning of each field:
* `name` and `props` are the equivalent of the `FeatureName` and
`FeatureProps` arguments of the previous migration function API.
* `command` is basically the same as the previous `Arg` arguments.
* `extra` is map containing context-specific information. For instance, it
contains the list of nodes where the feature flag state changes.
This whole new behavior is behind a new feature flag called
`feature_flags_v2`. If a feature flag uses the new migration function
API, `feature_flags_v2` will be automatically enabled.
If many feature flags are enabled at once (like when a fresh RabbitMQ
node is started for the first time), `feature_flags_v2` will be enabled
first if it is in the list.
2021-12-15 01:50:59 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "feature_flags_v2_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
),
|
2021-09-17 17:08:48 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "feature_flags_with_unpriveleged_user_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":feature_flags_SUITE_beam_files",
|
|
|
|
|
],
|
|
|
|
|
flaky = True,
|
|
|
|
|
shard_count = 2,
|
2021-07-12 21:55:56 +08:00
|
|
|
# The enabling_* tests chmod files and then expect writes to be blocked.
|
|
|
|
|
# This probably doesn't work because we are root in the remote docker image.
|
|
|
|
|
tags = ["exclusive"],
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit/test/feature_flags_SUITE_data/my_plugin:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "lazy_queue_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "list_consumers_sanity_check_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "list_queues_online_and_offline_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "logging_SUITE",
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@syslog//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
2022-02-01 20:17:59 +08:00
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "lqueue_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
deps = [
|
|
|
|
|
"@proper//:erlang_app",
|
|
|
|
|
],
|
|
|
|
|
),
|
2021-07-12 21:55:56 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "maintenance_mode_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "many_node_ha_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":rabbit_ha_test_consumer",
|
|
|
|
|
":rabbit_ha_test_producer",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "message_size_limit_SUITE",
|
2021-07-27 15:54:44 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "metrics_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "mirrored_supervisor_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
additional_srcs = [
|
|
|
|
|
"test/mirrored_supervisor_SUITE_gs.erl",
|
|
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "msg_store_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "peer_discovery_classic_config_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
flaky = True,
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "peer_discovery_dns_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_user_connection_channel_limit_partitions_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_user_connection_channel_limit_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_user_connection_channel_tracking_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_user_connection_tracking_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_vhost_connection_limit_partitions_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_vhost_connection_limit_SUITE",
|
|
|
|
|
size = "medium",
|
2021-07-13 04:21:02 +08:00
|
|
|
flaky = True,
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_vhost_msg_store_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "per_vhost_queue_limit_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "policy_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "priority_queue_recovery_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "priority_queue_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "product_info_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "proxy_protocol_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "publisher_confirms_parallel_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "queue_length_limits_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "queue_master_location_SUITE",
|
2021-07-22 22:07:06 +08:00
|
|
|
size = "large",
|
2021-07-12 21:55:56 +08:00
|
|
|
shard_count = 2,
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "queue_parallel_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
flaky = True,
|
2022-01-21 16:25:02 +08:00
|
|
|
shard_count = 6,
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "queue_type_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "quorum_queue_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
flaky = True,
|
|
|
|
|
shard_count = 6,
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_confirms_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "rabbit_core_metrics_gc_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_fifo_int_SUITE",
|
2021-07-23 19:59:17 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@aten//:erlang_app",
|
|
|
|
|
"@gen_batch_server//:erlang_app",
|
|
|
|
|
"@meck//:erlang_app",
|
|
|
|
|
"@ra//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_fifo_prop_SUITE",
|
2021-12-17 04:55:29 +08:00
|
|
|
size = "large",
|
2021-07-12 21:55:56 +08:00
|
|
|
additional_beam = [
|
|
|
|
|
":test_util",
|
|
|
|
|
],
|
|
|
|
|
additional_hdrs = [
|
|
|
|
|
"src/rabbit_fifo.hrl",
|
|
|
|
|
],
|
|
|
|
|
erlc_opts = [
|
2022-04-09 04:03:39 +08:00
|
|
|
"-I",
|
|
|
|
|
"deps/rabbit", # allow rabbit_fifo.hrl to be included at src/rabbit_fifo.hrl
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@ra//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
|
|
|
|
"@proper//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
2021-12-13 20:00:56 +08:00
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_fifo_dlx_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
additional_hdrs = [
|
|
|
|
|
"src/rabbit_fifo.hrl",
|
|
|
|
|
"src/rabbit_fifo_dlx.hrl",
|
|
|
|
|
],
|
2021-12-27 23:10:23 +08:00
|
|
|
deps = [
|
2022-01-24 19:51:17 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-12-27 23:10:23 +08:00
|
|
|
],
|
2021-12-13 20:00:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "rabbit_fifo_dlx_integration_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":test_util",
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
":quorum_queue_SUITE_beam_files",
|
|
|
|
|
],
|
|
|
|
|
additional_hdrs = [
|
|
|
|
|
"src/rabbit_fifo.hrl",
|
|
|
|
|
"src/rabbit_fifo_dlx.hrl",
|
|
|
|
|
],
|
|
|
|
|
runtime_deps = [
|
2022-01-24 19:51:17 +08:00
|
|
|
"@ra//:erlang_app",
|
2021-12-13 20:00:56 +08:00
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-24 19:51:17 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-12-13 20:00:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
2021-07-12 21:55:56 +08:00
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_fifo_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":test_util",
|
|
|
|
|
":rabbit_fifo_v0_SUITE_beam_files",
|
|
|
|
|
],
|
|
|
|
|
additional_hdrs = [
|
|
|
|
|
"src/rabbit_fifo.hrl",
|
|
|
|
|
],
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@meck//:erlang_app",
|
|
|
|
|
"@ra//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_fifo_v0_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":test_util",
|
|
|
|
|
],
|
|
|
|
|
additional_hdrs = [
|
|
|
|
|
"src/rabbit_fifo_v0.hrl",
|
|
|
|
|
],
|
|
|
|
|
erlc_opts = [
|
2022-04-09 04:03:39 +08:00
|
|
|
"-I",
|
|
|
|
|
"deps/rabbit", # allow rabbit_fifo.hrl to be included at src/rabbit_fifo.hrl
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@meck//:erlang_app",
|
|
|
|
|
"@ra//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_msg_record_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/amqp10_common:erlang_app",
|
|
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "rabbit_stream_coordinator_SUITE",
|
2021-07-12 23:54:55 +08:00
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 23:54:55 +08:00
|
|
|
],
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
2021-12-17 00:32:35 +08:00
|
|
|
rabbitmq_suite(
|
2021-12-17 00:45:34 +08:00
|
|
|
name = "rabbit_stream_sac_coordinator_SUITE",
|
2021-12-17 00:32:35 +08:00
|
|
|
deps = [
|
2022-01-27 16:50:44 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-12-17 00:32:35 +08:00
|
|
|
],
|
|
|
|
|
),
|
2021-07-12 21:55:56 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "rabbit_stream_queue_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
flaky = True,
|
2021-07-15 16:46:26 +08:00
|
|
|
shard_count = 12,
|
2021-07-12 21:55:56 +08:00
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "rabbitmq_queues_cli_integration_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "rabbitmqctl_integration_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
flaky = True,
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "rabbitmqctl_shutdown_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "signal_handling_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "simple_ha_SUITE",
|
|
|
|
|
size = "large",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":rabbit_ha_test_consumer",
|
|
|
|
|
":rabbit_ha_test_producer",
|
|
|
|
|
],
|
|
|
|
|
shard_count = 4,
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "single_active_consumer_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "sync_detection_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "term_to_binary_compat_prop_SUITE",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "topic_permission_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_access_control_authn_authz_context_propagation_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_srcs = [
|
|
|
|
|
"test/rabbit_auth_backend_context_propagation_mock.erl",
|
|
|
|
|
"test/rabbit_foo_protocol_connection_info.erl",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_access_control_credential_validation_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@proper//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_access_control_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
additional_srcs = [
|
|
|
|
|
"test/rabbit_dummy_protocol_connection_info.erl",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_amqp091_content_framing_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_amqp091_server_properties_SUITE",
|
2021-07-23 15:43:05 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_app_management_SUITE",
|
2021-07-23 18:57:16 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_cluster_formation_locking_mocks_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"@meck//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_collections_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_config_value_encryption_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit/apps/rabbitmq_prelaunch:test_erlang_app",
|
|
|
|
|
"//deps/rabbit_common:test_erlang_app",
|
|
|
|
|
"@credentials_obfuscation//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_connection_tracking_SUITE",
|
2021-08-03 23:06:12 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_credit_flow_SUITE",
|
2021-07-23 18:57:16 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_disk_monitor_SUITE",
|
2021-07-27 15:54:44 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_file_handle_cache_SUITE",
|
2021-07-23 16:44:51 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_gen_server2_SUITE",
|
2021-08-04 20:55:44 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_gm_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
runtime_deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbitmq_ct_helpers:erlang_app",
|
|
|
|
|
"@meck//:erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_log_management_SUITE",
|
2021-07-23 15:43:05 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_operator_policy_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:test_erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_pg_local_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_plugin_directories_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:test_erlang_app",
|
2021-07-12 21:55:56 +08:00
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_plugin_versioning_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_policy_validators_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_priority_queue_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_queue_consumers_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_stats_and_metrics_SUITE",
|
2021-07-28 14:37:14 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
additional_srcs = [
|
|
|
|
|
"test/dummy_event_receiver.erl",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
|
|
|
|
name = "unit_supervisor2_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
additional_srcs = [
|
|
|
|
|
"test/dummy_supervisor2.erl",
|
|
|
|
|
],
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "unit_vm_memory_monitor_SUITE",
|
2021-08-03 21:51:02 +08:00
|
|
|
size = "medium",
|
2021-07-12 21:55:56 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "upgrade_preparation_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
),
|
|
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "vhost_SUITE",
|
|
|
|
|
size = "medium",
|
|
|
|
|
flaky = True,
|
|
|
|
|
),
|
2021-12-18 14:29:08 +08:00
|
|
|
rabbitmq_suite(
|
2021-12-28 06:19:00 +08:00
|
|
|
name = "unit_classic_mirrored_queue_sync_throttling_SUITE",
|
2021-12-18 14:29:08 +08:00
|
|
|
size = "small",
|
2021-12-28 06:30:07 +08:00
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
|
|
|
|
],
|
2021-12-18 14:29:08 +08:00
|
|
|
),
|
|
|
|
|
rabbitmq_suite(
|
2021-12-28 06:19:00 +08:00
|
|
|
name = "unit_classic_mirrored_queue_throughput_SUITE",
|
2021-12-18 14:29:08 +08:00
|
|
|
size = "small",
|
2021-12-28 06:30:07 +08:00
|
|
|
deps = [
|
2022-01-06 03:57:48 +08:00
|
|
|
"//deps/rabbit_common:erlang_app",
|
|
|
|
|
],
|
2021-12-18 14:29:08 +08:00
|
|
|
),
|
2022-04-19 23:18:33 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
2022-04-30 17:20:08 +08:00
|
|
|
name = "direct_exchange_routing_v2_SUITE",
|
|
|
|
|
size = "medium",
|
2022-07-26 00:57:10 +08:00
|
|
|
additional_beam = [
|
|
|
|
|
":quorum_queue_utils",
|
|
|
|
|
],
|
2022-04-19 23:18:33 +08:00
|
|
|
),
|
2022-11-10 05:24:04 +08:00
|
|
|
rabbitmq_integration_suite(
|
|
|
|
|
PACKAGE,
|
|
|
|
|
name = "rabbit_direct_reply_to_prop_SUITE",
|
|
|
|
|
size = "small",
|
|
|
|
|
deps = [
|
|
|
|
|
"@proper//:erlang_app",
|
|
|
|
|
],
|
|
|
|
|
),
|
2021-07-12 21:55:56 +08:00
|
|
|
]
|
2021-03-29 17:01:43 +08:00
|
|
|
|
2021-07-12 21:55:56 +08:00
|
|
|
assert_suites(
|
|
|
|
|
suites,
|
|
|
|
|
glob(["test/**/*_SUITE.erl"]),
|
2021-03-29 17:01:43 +08:00
|
|
|
)
|
2021-09-30 21:49:08 +08:00
|
|
|
|
|
|
|
|
filegroup(
|
|
|
|
|
name = "manpages",
|
|
|
|
|
srcs = glob([
|
|
|
|
|
"docs/*.1",
|
|
|
|
|
"docs/*.2",
|
|
|
|
|
"docs/*.3",
|
|
|
|
|
"docs/*.4",
|
|
|
|
|
"docs/*.5",
|
|
|
|
|
"docs/*.6",
|
|
|
|
|
"docs/*.7",
|
|
|
|
|
"docs/*.8",
|
|
|
|
|
"docs/*.9",
|
|
|
|
|
]),
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
genrule(
|
|
|
|
|
name = "manpages-dir",
|
|
|
|
|
srcs = [":manpages"],
|
|
|
|
|
outs = ["manpages.tar"],
|
|
|
|
|
cmd = """set -euo pipefail
|
|
|
|
|
|
|
|
|
|
DESTDIR=manpages-tmp/share/man
|
|
|
|
|
mkdir -p $${DESTDIR}
|
|
|
|
|
for mp in $(SRCS); do
|
|
|
|
|
section=$${mp##*.}
|
|
|
|
|
mkdir -p $${DESTDIR}/man$$section
|
|
|
|
|
gzip < $$mp \\
|
|
|
|
|
> $${DESTDIR}/man$$section/$$(basename $$mp).gz
|
|
|
|
|
done
|
|
|
|
|
tar --strip-components 1 -cf $@ manpages-tmp/*
|
|
|
|
|
rm -dr manpages-tmp
|
|
|
|
|
""",
|
|
|
|
|
visibility = ["//visibility:public"],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
genrule(
|
|
|
|
|
name = "web-manpages",
|
|
|
|
|
srcs = [":manpages"],
|
|
|
|
|
outs = ["web-manpages.tar"],
|
|
|
|
|
cmd = """set -euo pipefail
|
|
|
|
|
|
|
|
|
|
mkdir web-manpages-tmp
|
|
|
|
|
for mp in $(SRCS); do
|
|
|
|
|
d=web-manpages-tmp/$$(basename $${mp}).html
|
|
|
|
|
echo "Converting $$mp to $$d..."
|
|
|
|
|
mandoc -T html -O 'fragment,man=%N.%S.html' "$$mp" | \\
|
|
|
|
|
awk '\\
|
|
|
|
|
/^<table class="head">$$/ { remove_table=1; next; } \\
|
|
|
|
|
/^<table class="foot">$$/ { remove_table=1; next; } \\
|
|
|
|
|
/^<\\/table>$$/ { if (remove_table) { remove_table=0; next; } } \\
|
|
|
|
|
{ if (!remove_table) { \\
|
|
|
|
|
line=$$0; \\
|
|
|
|
|
gsub(/<h2/, "<h3", line); \\
|
|
|
|
|
gsub(/<\\/h2>/, "</h3>", line); \\
|
|
|
|
|
gsub(/<h1/, "<h2", line); \\
|
|
|
|
|
gsub(/<\\/h1>/, "</h2>", line); \\
|
|
|
|
|
gsub(/class="D1"/, "class=\"D1 lang-bash\"", line); \\
|
|
|
|
|
gsub(/class="Bd Bd-indent"/, "class=\"Bd Bd-indent lang-bash\"", line); \\
|
|
|
|
|
gsub(/&#[xX]201[cCdD];/, "\\"", line); \\
|
|
|
|
|
print line; \\
|
|
|
|
|
} } \\
|
|
|
|
|
' > "$$d"
|
|
|
|
|
done
|
|
|
|
|
tar --strip-components 1 -cf $@ web-manpages-tmp/*
|
|
|
|
|
rm -dr web-manpages-tmp
|
|
|
|
|
""",
|
|
|
|
|
visibility = ["//visibility:public"],
|
|
|
|
|
)
|