diff options
author | Thomas Haller <thaller@redhat.com> | 2015-05-04 19:26:36 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-05-13 14:31:05 +0200 |
commit | 500cbcba21a2602bcb172f6a5cd9b13780cd18f0 (patch) | |
tree | c68561a39a394a32f43184c028e0b1304a855bba | |
parent | 050c644cce110bef4f48499498e2b6192dca7040 (diff) | |
download | NetworkManager-500cbcba21a2602bcb172f6a5cd9b13780cd18f0.tar.gz |
platform/test: include call location in signal assertions
Hard to debug failures, if we don't print where the failure
happens.
-rw-r--r-- | src/platform/tests/test-common.c | 35 | ||||
-rw-r--r-- | src/platform/tests/test-common.h | 15 |
2 files changed, 29 insertions, 21 deletions
diff --git a/src/platform/tests/test-common.c b/src/platform/tests/test-common.c index 6353cfa5dc..2d37fb837d 100644 --- a/src/platform/tests/test-common.c +++ b/src/platform/tests/test-common.c @@ -7,6 +7,9 @@ #include "nm-test-utils.h" +#define SIGNAL_DATA_FMT "'%s-%s' ifindex %d%s%s%s (%d times received)" +#define SIGNAL_DATA_ARG(data) (data)->name, _change_type_to_string ((data)->change_type), (data)->ifindex, (data)->ifname ? " ifname '" : "", (data)->ifname ? (data)->ifname : "", (data)->ifname ? "'" : "", (data)->received_count + gboolean nmtst_platform_is_root_test () @@ -49,50 +52,51 @@ _change_type_to_string (NMPlatformSignalChangeType change_type) } void -accept_signal (SignalData *data) +_accept_signal (const char *file, int line, const char *func, SignalData *data) { - debug ("Accepting signal '%s-%s' ifindex %d ifname %s.", data->name, _change_type_to_string (data->change_type), data->ifindex, data->ifname); - if (data->received_count == 0) - g_error ("Attemted to accept a non-received signal '%s-%s'.", data->name, _change_type_to_string (data->change_type)); + debug ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal one time: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); if (data->received_count != 1) - g_error ("Signal already received %d times: '%s-%s'.", data->received_count, data->name, _change_type_to_string (data->change_type)); - + g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to accept signal one time: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); data->received_count = 0; } void -accept_signals (SignalData *data, int min, int max) +_accept_signals (const char *file, int line, const char *func, SignalData *data, int min, int max) { + debug ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal [%d,%d] times: "SIGNAL_DATA_FMT, file, line, func, min, max, SIGNAL_DATA_ARG (data)); if (data->received_count < min || data->received_count > max) - g_error ("Expect [%d,%d] signals, but %s signals queued -- '%s-%s' ifindex %d ifname %s.", min, max, data->received_count, data->name, _change_type_to_string (data->change_type), data->ifindex, data->ifname); + g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to accept signal [%d,%d] times: "SIGNAL_DATA_FMT, file, line, func, min, max, SIGNAL_DATA_ARG (data)); data->received_count = 0; } void -ensure_no_signal (SignalData *data) +_ensure_no_signal (const char *file, int line, const char *func, SignalData *data) { + debug ("NMPlatformSignalAssert: %s:%d, %s(): Accepting signal 0 times: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); if (data->received_count > 0) - g_error ("Unepexted signal '%s-%s'.", data->name, _change_type_to_string (data->change_type)); + g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to accept signal 0 times: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); } void -wait_signal (SignalData *data) +_wait_signal (const char *file, int line, const char *func, SignalData *data) { + debug ("NMPlatformSignalAssert: %s:%d, %s(): wait signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); if (data->received_count) - g_error ("Signal '%s' received before waiting for it.", data->name); + g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to wait for signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); data->loop = g_main_loop_new (NULL, FALSE); g_main_loop_run (data->loop); g_clear_pointer (&data->loop, g_main_loop_unref); - accept_signal (data); + _accept_signal (file, line, func, data); } void -free_signal (SignalData *data) +_free_signal (const char *file, int line, const char *func, SignalData *data) { + debug ("NMPlatformSignalAssert: %s:%d, %s(): free signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); if (data->received_count != 0) - g_error ("Attempted to free received but not accepted signal '%s-%s'.", data->name, _change_type_to_string (data->change_type)); + g_error ("NMPlatformSignalAssert: %s:%d, %s(): failure to free non-accepted signal: "SIGNAL_DATA_FMT, file, line, func, SIGNAL_DATA_ARG (data)); g_signal_handler_disconnect (nm_platform_get (), data->handler_id); g_free (data); @@ -101,7 +105,6 @@ free_signal (SignalData *data) void link_callback (NMPlatform *platform, int ifindex, NMPlatformLink *received, NMPlatformSignalChangeType change_type, NMPlatformReason reason, SignalData *data) { - GArray *links; NMPlatformLink *cached; int i; diff --git a/src/platform/tests/test-common.h b/src/platform/tests/test-common.h index b0f9ca21fb..56e27f6581 100644 --- a/src/platform/tests/test-common.h +++ b/src/platform/tests/test-common.h @@ -34,11 +34,16 @@ SignalData *add_signal_full (const char *name, NMPlatformSignalChangeType change #define add_signal(name, change_type, callback) add_signal_full (name, change_type, (GCallback) callback, 0, NULL) #define add_signal_ifindex(name, change_type, callback, ifindex) add_signal_full (name, change_type, (GCallback) callback, ifindex, NULL) #define add_signal_ifname(name, change_type, callback, ifname) add_signal_full (name, change_type, (GCallback) callback, 0, ifname) -void accept_signal (SignalData *data); -void accept_signals (SignalData *data, int min, int max); -void wait_signal (SignalData *data); -void ensure_no_signal (SignalData *data); -void free_signal (SignalData *data); +void _accept_signal (const char *file, int line, const char *func, SignalData *data); +void _accept_signals (const char *file, int line, const char *func, SignalData *data, int min, int max); +void _wait_signal (const char *file, int line, const char *func, SignalData *data); +void _ensure_no_signal (const char *file, int line, const char *func, SignalData *data); +void _free_signal (const char *file, int line, const char *func, SignalData *data); +#define accept_signal(data) _accept_signal(__FILE__, __LINE__, G_STRFUNC, data) +#define accept_signals(data, min, max) _accept_signals(__FILE__, __LINE__, G_STRFUNC, data, min, max) +#define wait_signal(data) _wait_signal(__FILE__, __LINE__, G_STRFUNC, data) +#define ensure_no_signal(data) _ensure_no_signal(__FILE__, __LINE__, G_STRFUNC, data) +#define free_signal(data) _free_signal(__FILE__, __LINE__, G_STRFUNC, data) gboolean ip4_route_exists (const char *ifname, guint32 network, int plen, guint32 metric); |