blazingmq icon indicating copy to clipboard operation
blazingmq copied to clipboard

Apply the "safe bool" idiom to ConfigureQueueStatus

Open hallfox opened this issue 1 year ago • 3 comments

https://github.com/bloomberg/blazingmq/blob/c71d6c598dc386a5886f16abe03600a9d3068fdc/src/groups/bmq/bmqa/bmqa_configurequeuestatus.h#L109

The implicit operator bool conversion is not particularly safe, we prefer the unspecified bool type to help prevent implicit conversions to integral types. We do this for CloseQueueStatus, but we seemed to have missed it for this class.

hallfox avatar Jul 05 '24 17:07 hallfox

I've started work on this one ^

vinay-deshmukh avatar Jan 23 '25 01:01 vinay-deshmukh

@hallfox

A random test I picked, doesn't seem to be working for me.

I think I'm missing something:

After running bin/build-darwin.sh, I did:

make -C build/blazingmq bmqa_message.t

And when I run the .t.tsk, I get the following failures:

Am I supposed to run the bmqtool / broker in a separate shell so these tests "pass" ?

❯ build/blazingmq/src/groups/bmq/bmqa_message.t.tsk
TEST /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.t.cpp CASE 0
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(240): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(263): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(317): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(384): isInitialized() && "message is invalid: use " "'MessageEventBuilder::startMessage' to get one"    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(394): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(431): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(453): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(240): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(263): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(317): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(384): isInitialized() && "message is invalid: use " "'MessageEventBuilder::startMessage' to get one"    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(394): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(431): isInitialized()    (failed)
Error /Users/vinay/coding/blazingmq/src/groups/bmq/bmqa/bmqa_message.cpp(453): isInitialized()    (failed)

vinay-deshmukh avatar Jan 29 '25 02:01 vinay-deshmukh

All the .t targets are unit tests that don't require the broker to run. To run specific tests, please use

ctest --test-dir <path/to/build/dir> -R bmqa_message.t

BlazingMQ tests are passed to a helper script to run BDE-style tests correctly. As invoked, the test case being run is specifically checking for errors from using bmqa::Message incorrectly, so it will look like the test is failing when it's actually succeeding (echo $? should print 0.)

hallfox avatar Jan 29 '25 16:01 hallfox