feat(cli): add payload size option for random message generation #1940
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
PR Checklist
If you have any questions, you can refer to the Contributing Guide
What is the current behavior?
MQTTX CLI currently lacks the capability to display and generate payload sizes. Users cannot easily view message sizes or generate payloads of specific sizes for testing purposes.
Issue Number
Example: #123
What is the new behavior?
New Features:
sub
command now shows message payload sizes in human-readable format (e.g., "1.5KB", "2.3MB")CLI Usage:
mqttx sub -t topic
(automatically shows payload sizes)1KB
,2.5MB
,512B
, or plain numbers (defaults to bytes)Technical Additions:
formatBytes()
: Converts bytes to human-readable format with proper decimal handlingparsePayloadSize()
: Parses size strings (supports B/KB/MB/GB, case-insensitive)generateRandomPayload()
: Creates random payloads with MQTT size limit validationDoes this PR introduce a breaking change?
Specific Instructions
The new payload size utilities are fully backward compatible. The
sub
command output now includes size information without affecting existing functionality.Other information
All new functions include comprehensive test coverage with 37+ test cases covering edge cases, error handling, and various size formats.