You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "zjncs (via GitHub)" <gi...@apache.org> on 2026/10/09 02:36:39 UTC

[PR] test(tools): pin the topic update partial-merge semantics [rocketmq-dashboard]

zjncs opened a new pull request, #5748:
URL: https://github.com/apache/rocketmq-dashboard/pull/5748

   ### What
   
   `TopicUpdateInput` — the partial-update shape of a topic mutation — had no test. This adds `TopicUpdateInputTest` with 6 tests.
   
   ### What is pinned
   
   - **absent values keep the current configuration**: an update is not a recreate, so omitting `writeQueues` never resets it;
   - **the topic type is immutable under merge**: an update asking for a different type is ignored by `mergeWith` — changing a NORMAL topic into a FIFO topic is not a config edit but a different topic, and only the creation path honours the type;
   - supplied fields override the current configuration;
   - the merge starts from a copy: the caller's current object is untouched;
   - the creation path fills the creation defaults (8/8 queues, NORMAL, RW) and honours an explicit type.
   
   ### Verification
   
   - New tests on unmodified code: **6/6 green**, checkstyle clean (`mvn test -Dtest=TopicUpdateInputTest`).
   - Discriminating mutations on `TopicUpdateInput`, build result verified red each time:
     1. the type made mutable under merge — red;
     2. the null checks dropped so absent fields wipe the current config — red;
     3. the creation default permission downgraded from RW to RO — red.
   - Restored: 6/6 green. Test-only change; no product code touched.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org