mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-06 15:30:14 +01:00
platform/test: include call location in signal assertions
Hard to debug failures, if we don't print where the failure
happens.
(cherry picked from commit 500cbcba21)
Conflicts:
src/platform/tests/test-common.c
This commit is contained in:
parent
adc145f537
commit
b67d017619
2 changed files with 29 additions and 21 deletions
|
|
@ -4,6 +4,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 ()
|
||||
|
|
@ -46,50 +49,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);
|
||||
|
|
@ -98,7 +102,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;
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue