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

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

189 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
, rabbit_message_interceptor_SUITE
, rabbit_stream_coordinator_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'}.