rabbitmq-server/deps/rabbit/ct.test.spec

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

190 lines
5.0 KiB
Plaintext
Raw Permalink Normal View History

{logdir, "logs/"}.
{logdir, master, "logs/"}.
{create_priv_dir, all_nodes, auto_per_run}.
{node, shard1, 'rabbit_shard1@localhost'}.
{node, shard2, 'rabbit_shard2@localhost'}.
{node, shard3, 'rabbit_shard3@localhost'}.
{node, shard4, 'rabbit_shard4@localhost'}.
%%
%% Sets of test suites that take around the same time to complete.
%%
{define, 'Set1', [
amqp_address_SUITE
, amqp_auth_SUITE
, amqp_client_SUITE
, amqp_credit_api_v2_SUITE
Support AMQP filter expressions (#12415) * Support AMQP filter expressions ## What? This PR implements the following property filter expressions for AMQP clients consuming from streams as defined in [AMQP Filter Expressions Version 1.0 Working Draft 09](https://groups.oasis-open.org/higherlogic/ws/public/document?document_id=66227): * properties filters [section 4.2.4] * application-properties filters [section 4.2.5] String prefix and suffix matching is also supported. This PR also fixes a bug where RabbitMQ would accept wrong filters. Specifically, prior to this PR the values of the filter-set's map were allowed to be symbols. However, "every value MUST be either null or of a described type which provides the archetype filter." ## Why? This feature adds the ability to RabbitMQ to have multiple concurrent clients each consuming only a subset of messages while maintaining message order. This feature also reduces network traffic between RabbitMQ and clients by only dispatching those messages that the clients are actually interested in. Note that AMQP filter expressions are more fine grained than the [bloom filter based stream filtering](https://www.rabbitmq.com/blog/2023/10/16/stream-filtering) because * they do not suffer false positives * the unit of filtering is per-message instead of per-chunk * matching can be performed on **multiple** values in the properties and application-properties sections * prefix and suffix matching on the actual values is supported. Both, AMQP filter expressions and bloom filters can be used together. ## How? If a filter isn't valid, RabbitMQ ignores the filter. RabbitMQ only replies with filters it actually supports and validated successfully to comply with: "The receiving endpoint sets its desired filter, the sending endpoint [RabbitMQ] sets the filter actually in place (including any filters defaulted at the node)." * Delete streams test case The test suite constructed a wrong filter-set. Specifically the value of the filter-set didn't use a described type as mandated by the spec. Using https://azure.github.io/amqpnetlite/api/Amqp.Types.DescribedValue.html throws errors that the descriptor can't be encoded. Given that this code path is already tests via the amqp_filtex_SUITE, this F# test gets therefore deleted. * Re-introduce the AMQP filter-set bug Since clients might rely on the wrong filter-set value type, we support the bug behind a deprecated feature flag and gradually remove support this bug. * Revert "Delete streams test case" This reverts commit c95cfeaef74160894050ae51a563bf839384d2d7.
2024-10-07 23:12:26 +08:00
, amqp_filtex_SUITE
, amqp_proxy_protocol_SUITE
, amqp_dotnet_SUITE
, amqp_jms_SUITE
, amqpl_consumer_ack_SUITE
, amqpl_direct_reply_to_SUITE
, amqqueue_backward_compatibility_SUITE
, backing_queue_SUITE
, bindings_SUITE
, channel_interceptor_SUITE
, channel_operation_timeout_SUITE
, classic_queue_SUITE
, classic_queue_prop_SUITE
]}.
{define, 'Set2', [
cluster_SUITE
, config_schema_SUITE
, confirms_rejects_SUITE
, consumer_timeout_SUITE
, crashing_queues_SUITE
, deprecated_features_SUITE
, direct_exchange_routing_v2_SUITE
, disconnect_detected_during_alarm_SUITE
, disk_monitor_SUITE
, dynamic_qq_SUITE
, exchanges_SUITE
, rabbit_stream_queue_SUITE
]}.
{define, 'Set3', [
cli_forget_cluster_node_SUITE
, feature_flags_SUITE
, feature_flags_v2_SUITE
, list_consumers_sanity_check_SUITE
, list_queues_online_and_offline_SUITE
, logging_SUITE
, lqueue_SUITE
, maintenance_mode_SUITE
, mc_unit_SUITE
, message_containers_deaths_v2_SUITE
, message_size_limit_SUITE
, metadata_store_migration_SUITE
, metadata_store_phase1_SUITE
, metrics_SUITE
, mirrored_supervisor_SUITE
, peer_discovery_classic_config_SUITE
]}.
{define, 'Set4', [
msg_size_metrics_SUITE
, peer_discovery_dns_SUITE
, peer_discovery_tmp_hidden_node_SUITE
, per_node_limit_SUITE
, per_user_connection_channel_limit_SUITE
, per_user_connection_channel_tracking_SUITE
, per_user_connection_tracking_SUITE
, per_vhost_connection_limit_SUITE
, per_vhost_msg_store_SUITE
, per_vhost_queue_limit_SUITE
, policy_SUITE
, priority_queue_SUITE
, priority_queue_recovery_SUITE
, product_info_SUITE
, proxy_protocol_SUITE
, publisher_confirms_parallel_SUITE
, unit_msg_size_metrics_SUITE
]}.
{define, 'Set5', [
clustering_recovery_SUITE
, metadata_store_clustering_SUITE
, queue_length_limits_SUITE
, queue_parallel_SUITE
, quorum_queue_SUITE
, rabbit_access_control_SUITE
, rabbit_confirms_SUITE
, rabbit_core_metrics_gc_SUITE
, rabbit_cuttlefish_SUITE
, rabbit_db_binding_SUITE
, rabbit_db_exchange_SUITE
, rabbit_db_maintenance_SUITE
, rabbit_db_msup_SUITE
, rabbit_db_policy_SUITE
, rabbit_db_queue_SUITE
, rabbit_db_topic_exchange_SUITE
, rabbit_direct_reply_to_prop_SUITE
]}.
{define, 'Set6', [
queue_type_SUITE
, quorum_queue_member_reconciliation_SUITE
, rabbit_fifo_SUITE
, rabbit_fifo_dlx_SUITE
, rabbit_fifo_dlx_integration_SUITE
, rabbit_fifo_int_SUITE
, rabbit_fifo_prop_SUITE
, rabbit_fifo_v0_SUITE
, rabbit_local_random_exchange_SUITE
2025-04-17 16:15:32 +08:00
, rabbit_msg_interceptor_SUITE
, rabbit_stream_coordinator_SUITE
Prevent blocked groups in stream SAC with fine-grained status A boolean status in the stream SAC coordinator is not enough to follow the evolution of a consumer. For example a former active consumer that is stepping down can go down before another consumer in the group is activated, letting the coordinator expect an activation request that will never arrive, leaving the group without any active consumer. This commit introduces 3 status: active (formerly "true"), waiting (formerly "false"), and deactivating. The coordinator will now know when a deactivating consumer goes down and will trigger a rebalancing to avoid a stuck group. This commit also introduces a status related to the connectivity state of a consumer. The possible values are: connected, disconnected, and presumed_down. Consumers are by default connected, they can become disconnected if the coordinator receives a down event with a noconnection reason, meaning the node of the consumer has been disconnected from the other nodes. Consumers can become connected again when their node joins the other nodes again. Disconnected consumers are still considered part of a group, as they are expected to come back at some point. For example there is no rebalancing in a group if the active consumer got disconnected. The coordinator sets a timer when a disconnection occurs. When the timer expires, corresponding disconnected consumers pass into the "presumed down" state. At this point they are no longer considered part of their respective group and are excluded from rebalancing decision. They are expected to get removed from the group by the appropriate down event of a monitor. So the consumer status is now a tuple, e.g. {connected, active}. Note this is an implementation detail: only the stream SAC coordinator deals with the status of stream SAC consumers. 2 new configuration entries are introduced: * rabbit.stream_sac_disconnected_timeout: this is the duration in ms of the disconnected-to-forgotten timer. * rabbit.stream_cmd_timeout: this is the timeout in ms to apply RA commands in the coordinator. It used to be a fixed value of 30 seconds. The default value is still the same. The setting has been introduced to make integration tests faster. Fixes #14070
2025-06-10 18:01:18 +08:00
, rabbit_stream_sac_coordinator_v4_SUITE
, rabbit_stream_sac_coordinator_SUITE
, rabbitmq_4_0_deprecations_SUITE
, rabbitmq_queues_cli_integration_SUITE
, rabbitmqctl_integration_SUITE
, rabbitmqctl_shutdown_SUITE
, routing_SUITE
, runtime_parameters_SUITE
]}.
{define, 'Set7', [
cluster_limit_SUITE
, cluster_minority_SUITE
, clustering_management_SUITE
, signal_handling_SUITE
, single_active_consumer_SUITE
, term_to_binary_compat_prop_SUITE
, topic_permission_SUITE
, transactions_SUITE
, unicode_SUITE
, unit_access_control_SUITE
, unit_access_control_authn_authz_context_propagation_SUITE
, unit_access_control_credential_validation_SUITE
, unit_amqp091_content_framing_SUITE
, unit_amqp091_server_properties_SUITE
, unit_app_management_SUITE
, unit_cluster_formation_locking_mocks_SUITE
, unit_cluster_formation_sort_nodes_SUITE
, unit_collections_SUITE
, unit_config_value_encryption_SUITE
, unit_connection_tracking_SUITE
]}.
{define, 'Set8', [
dead_lettering_SUITE
, definition_import_SUITE
, per_user_connection_channel_limit_partitions_SUITE
, per_vhost_connection_limit_partitions_SUITE
, unit_credit_flow_SUITE
, unit_disk_monitor_SUITE
, unit_file_handle_cache_SUITE
, unit_gen_server2_SUITE
, unit_log_management_SUITE
, unit_operator_policy_SUITE
, unit_pg_local_SUITE
, unit_plugin_directories_SUITE
, unit_plugin_versioning_SUITE
, unit_policy_validators_SUITE
, unit_priority_queue_SUITE
, unit_queue_consumers_SUITE
, unit_queue_location_SUITE
, unit_quorum_queue_SUITE
, unit_stats_and_metrics_SUITE
, unit_supervisor2_SUITE
, unit_vm_memory_monitor_SUITE
, upgrade_preparation_SUITE
, vhost_SUITE
]}.
{suites, shard1, "test/", 'Set1'}.
{suites, shard1, "test/", 'Set2'}.
{suites, shard2, "test/", 'Set3'}.
{suites, shard2, "test/", 'Set4'}.
{suites, shard3, "test/", 'Set5'}.
{suites, shard3, "test/", 'Set6'}.
{suites, shard4, "test/", 'Set7'}.
{suites, shard4, "test/", 'Set8'}.