Add arguments to mxb_assert_message
The macro can now be used to print runtime information in a printf-like manner. This makes it easier to see exactly why an assertion has failed.
This commit is contained in:
@ -31,9 +31,11 @@ MXB_BEGIN_DECLS
|
||||
fprintf(stderr, "debug assert at %s:%d failed: %s\n", (char*)__FILE__, __LINE__, debug_expr); \
|
||||
raise(SIGABRT);}} while (false)
|
||||
|
||||
#define mxb_assert_message(exp, message) \
|
||||
#define mxb_assert_message(exp, fmt, ...) \
|
||||
do {if (exp) {} else { \
|
||||
const char* debug_expr = #exp; \
|
||||
char message[1024]; \
|
||||
snprintf(message, sizeof(message), fmt, ##__VA_ARGS__); \
|
||||
MXB_ERROR("debug assert at %s:%d failed: %s (%s)\n", \
|
||||
(char*)__FILE__, \
|
||||
__LINE__, \
|
||||
|
||||
@ -1966,7 +1966,8 @@ const
|
||||
string value = get_string(key);
|
||||
milliseconds duration {0};
|
||||
MXB_AT_DEBUG(bool rval = ) get_suffixed_duration(value.c_str(), interpretation, &duration);
|
||||
mxb_assert(rval); // When this function is called, the validity of the value should have been checked.
|
||||
// When this function is called, the validity of the value should have been checked.
|
||||
mxb_assert_message(rval, "Invalid value for '%s': %s", key.c_str(), value.c_str());
|
||||
return duration;
|
||||
}
|
||||
|
||||
|
||||
@ -285,19 +285,20 @@ void test_multiple_sql_packets1()
|
||||
mxb_assert_message(complete && head, "Both buffers should have data");
|
||||
mxb_assert_message(gwbuf_length(complete) + gwbuf_length(head) + gwbuf_length(quarter)
|
||||
+ gwbuf_length(half) == sizeof(resultset),
|
||||
"25% of data should be available");
|
||||
"a quarter of data should be available");
|
||||
|
||||
quarter = gwbuf_append(gwbuf_append(complete, head), quarter);
|
||||
complete = modutil_get_complete_packets(&quarter);
|
||||
mxb_assert_message(gwbuf_length(complete) + gwbuf_length(quarter)
|
||||
+ gwbuf_length(half) == sizeof(resultset),
|
||||
"50% of data should be available");
|
||||
"half of data should be available");
|
||||
|
||||
half = gwbuf_append(gwbuf_append(complete, quarter), half);
|
||||
complete = modutil_get_complete_packets(&half);
|
||||
mxb_assert_message(complete, "Complete should not be NULL");
|
||||
mxb_assert_message(half == NULL, "Old buffer should be NULL");
|
||||
mxb_assert_message(gwbuf_length(complete) == sizeof(resultset), "Complete should contain 100% of data");
|
||||
mxb_assert_message(gwbuf_length(complete) == sizeof(resultset),
|
||||
"Complete should contain all of the data");
|
||||
|
||||
completelen = gwbuf_length(complete);
|
||||
mxb_assert_message(gwbuf_copy_data(complete, 0, completelen, databuf) == completelen,
|
||||
|
||||
Reference in New Issue
Block a user