Skip to content

Instantly share code, notes, and snippets.

@9401adarsh
Last active July 17, 2025 16:32
Show Gist options
  • Select an option

  • Save 9401adarsh/a860fa918853d475f1afa5e2d86cd57f to your computer and use it in GitHub Desktop.

Select an option

Save 9401adarsh/a860fa918853d475f1afa5e2d86cd57f to your computer and use it in GitHub Desktop.
Testing Document for Topic Creation, Deletion, and Modification for Sharded Queues

Sharded Queue Creation Testing Plan

New Code Tests

Test Case Description Steps Expected Result Pass/Fail
Create Sharded Topic Verify sharded topic creation 1. Create topic with sharding enabled
2. Specify shard count
3. Validate creation
Topic created with correct shard count Pass
Delete Sharded Topic Verify sharded topic deletion 1. Create sharded topic
2. Delete topic
3. Verify cleanup
Topic and all shards deleted completely Pass
Modify Persistent to Non-Persistent Convert topic persistence type 1. Create persistent topic
2. Modify to non-persistent
3. Verify behavior
Topic converted successfully Pass
Change Shard Count Modify number of shards 1. Create topic with N shards
2. Change config to M shards
3. Apply changes
Shard count updated correctly Pass
Bucket Notification Tests Run complete test suite 1. Execute bucket notification test suite
2. Verify all tests pass
All existing tests pass with sharded queues Failing Tests unrelated to sharded uptake

Test-Suite Summary for test_bn:

============================================================== short test summary info ==============================================================
============================= test session starts ==============================
platform linux -- Python 3.9.21, pytest-8.4.1, pluggy-1.5.0 -- /bin/python3
cachedir: .pytest_cache
benchmark: 4.0.0 (defaults: timer=time.perf_counter disable_gc=False min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 warmup=False warmup_iterations=100000)
rootdir: /home/adarsh9401/ceph-ws/my-fork/ceph/src/test/rgw/bucket_notification
plugins: benchmark-4.0.0
collecting ... collected 74 items

test_bn.py::test_ps_s3_topic_on_master PASSED                            [  1%]
test_bn.py::test_ps_s3_topic_admin_on_master PASSED                      [  2%]
test_bn.py::test_notification_configuration_admin PASSED                 [  4%]
test_bn.py::test_ps_s3_topic_with_secret_on_master PASSED                [  5%]
test_bn.py::test_notification_configuration PASSED                       [  6%]
test_bn.py::test_ps_s3_notification_on_master_empty_config PASSED        [  8%]
test_bn.py::test_ps_s3_notification_filter_on_master PASSED              [  9%]
test_bn.py::test_ps_s3_notification_errors_on_master PASSED              [ 10%]
test_bn.py::test_notification_push_amqp PASSED                           [ 12%]
test_bn.py::test_ps_s3_notification_push_amqp_idleness_check PASSED      [ 13%]
test_bn.py::test_notification_push_kafka PASSED                          [ 14%]
test_bn.py::test_notification_push_kafka_multiple_brokers_override PASSED [ 16%]
test_bn.py::test_notification_push_kafka_multiple_brokers_append FAILED  [ 17%]
test_bn.py::test_ps_s3_notification_multi_delete_on_master PASSED        [ 18%]
test_bn.py::test_notification_push_http PASSED                           [ 20%]
test_bn.py::test_notification_push_cloudevents PASSED                    [ 21%]
test_bn.py::test_ps_s3_opaque_data_on_master PASSED                      [ 22%]
test_bn.py::test_lifecycle_http PASSED                                   [ 24%]
test_bn.py::test_lifecycle_kafka PASSED                                  [ 25%]
test_bn.py::test_lifecycle_abort_mpu PASSED                              [ 27%]
test_bn.py::test_ps_s3_creation_triggers_on_master PASSED                [ 28%]
test_bn.py::test_ps_s3_creation_triggers_on_master_external PASSED       [ 29%]
test_bn.py::test_ps_s3_creation_triggers_on_master_ssl FAILED            [ 31%]
test_bn.py::test_http_post_object_upload PASSED                          [ 32%]
test_bn.py::test_multipart_http PASSED                                   [ 33%]
test_bn.py::test_multipart_kafka PASSED                                  [ 35%]
test_bn.py::test_multipart_ampq PASSED                                   [ 36%]
test_bn.py::test_metadata_filter_kafka PASSED                            [ 37%]
test_bn.py::test_metadata_filter_http PASSED                             [ 39%]
test_bn.py::test_metadata_filter_ampq PASSED                             [ 40%]
test_bn.py::test_ps_s3_metadata_on_master PASSED                         [ 41%]
test_bn.py::test_ps_s3_tags_on_master PASSED                             [ 43%]
test_bn.py::test_ps_s3_versioning_on_master PASSED                       [ 44%]
test_bn.py::test_ps_s3_versioned_deletion_on_master PASSED               [ 45%]
test_bn.py::test_ps_s3_persistent_cleanup PASSED                         [ 47%]
test_bn.py::test_persistent_topic_stats_http PASSED                      [ 48%]
test_bn.py::test_persistent_topic_stats_kafka PASSED                     [ 50%]
test_bn.py::test_persistent_topic_stats_amqp PASSED                      [ 51%]
test_bn.py::test_persistent_topic_dump PASSED                            [ 52%]
test_bn.py::test_ps_s3_persistent_topic_configs_ttl PASSED               [ 54%]
test_bn.py::test_ps_s3_persistent_topic_configs_max_retries PASSED       [ 55%]
test_bn.py::test_ps_s3_persistent_notification_pushback PASSED           [ 56%]
test_bn.py::test_ps_s3_notification_kafka_idle_behaviour PASSED          [ 58%]
test_bn.py::test_ps_s3_persistent_gateways_recovery PASSED               [ 59%]
test_bn.py::test_ps_s3_persistent_multiple_gateways PASSED               [ 60%]
test_bn.py::test_persistent_multiple_endpoints_http PASSED               [ 62%]
test_bn.py::test_persistent_multiple_endpoints_kafka PASSED              [ 63%]
test_bn.py::test_ps_s3_persistent_notification_http PASSED               [ 64%]
test_bn.py::test_ps_s3_persistent_notification_http_account PASSED       [ 66%]
test_bn.py::test_ps_s3_persistent_notification_amqp PASSED               [ 67%]
test_bn.py::test_ps_s3_persistent_notification_kafka PASSED              [ 68%]
test_bn.py::test_ps_s3_persistent_notification_large PASSED              [ 70%]
test_bn.py::test_ps_s3_topic_update PASSED                               [ 71%]
test_bn.py::test_ps_s3_notification_update PASSED                        [ 72%]
test_bn.py::test_ps_s3_multiple_topics_notification PASSED               [ 74%]
test_bn.py::test_ps_s3_list_topics_migration PASSED                      [ 75%]
test_bn.py::test_ps_s3_list_topics PASSED                                [ 77%]
test_bn.py::test_ps_s3_list_topics_v1 PASSED                             [ 78%]
test_bn.py::test_ps_s3_topic_permissions_same_tenant PASSED              [ 79%]
test_bn.py::test_ps_s3_topic_permissions_cross_tenant PASSED             [ 81%]
test_bn.py::test_ps_s3_topic_no_permissions PASSED                       [ 82%]
test_bn.py::test_ps_s3_notification_push_kafka_security_ssl FAILED       [ 83%]
test_bn.py::test_ps_s3_notification_push_kafka_security_ssl_sasl FAILED  [ 85%]
test_bn.py::test_ps_s3_notification_push_kafka_security_ssl_sasl_attrs FAILED [ 86%]
test_bn.py::test_ps_s3_notification_push_kafka_security_sasl FAILED      [ 87%]
test_bn.py::test_ps_s3_notification_push_kafka_security_ssl_sasl_scram FAILED [ 89%]
test_bn.py::test_ps_s3_notification_push_kafka_security_sasl_scram FAILED [ 90%]
test_bn.py::test_persistent_ps_s3_reload PASSED                          [ 91%]
test_bn.py::test_ps_s3_data_path_v2_migration PASSED                     [ 93%]
test_bn.py::test_ps_s3_data_path_v2_large_migration PASSED               [ 94%]
test_bn.py::test_ps_s3_data_path_v2_mixed_migration PASSED               [ 95%]
test_bn.py::test_notification_caching PASSED                             [ 97%]
test_bn.py::test_connection_caching PASSED                               [ 98%]
test_bn.py::test_topic_migration_to_an_account PASSED                    [100%]

=========================== short test summary info ============================
FAILED test_bn.py::test_notification_push_kafka_multiple_brokers_append - Exc...
FAILED test_bn.py::test_ps_s3_creation_triggers_on_master_ssl - Exception: fa...
FAILED test_bn.py::test_ps_s3_notification_push_kafka_security_ssl - KeyError...
FAILED test_bn.py::test_ps_s3_notification_push_kafka_security_ssl_sasl - Key...
FAILED test_bn.py::test_ps_s3_notification_push_kafka_security_ssl_sasl_attrs
FAILED test_bn.py::test_ps_s3_notification_push_kafka_security_sasl - botocor...
FAILED test_bn.py::test_ps_s3_notification_push_kafka_security_ssl_sasl_scram
FAILED test_bn.py::test_ps_s3_notification_push_kafka_security_sasl_scram - b...
============ 8 failed, 66 passed, 18 warnings in 1548.15s (0:25:48) ============

Old Code Tests on a Mixed Cluster

Test Case Description Steps Expected Result Pass/Fail
Prevent Topic Modification Old Code modifying topics created by new RGWs during upgrade will lead to orphaned RADOS objects lying around - no functional impact - Following discussion, we have decided to document this. Users will be suggested to not modify new topics creating during upgrade until upgrade is done. NA
Bucket Operations Routing Old code operations route to first shard 1. Create sharded topic (new code)
2. Perform bucket ops (old code)
3. Verify routing
Operations enqueued to first shard [ ]
Standard Bucket Tests Run usual bucket notification tests 1. Execute standard test suite
2. Verify compatibility
All standard tests pass [ ]
Dequeuing from first shard of topics created on new RGWs Check if old RGWs dequeue from sharded topics 1. Make a new topic on new RGW, link it to a bucket with notification pointing to said topic
2. Bring down topic endpoint, and put an object on said bucket.
3. Restart cluster with old RGW code, and bring up topic endpoint.
Notification should show up on topic endpoint Passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment