From 3de8d68402ef5522f3b6bb0fc9f0f12acd6d468c Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Thu, 18 Sep 2014 14:27:43 +0300 Subject: [PATCH] mgmt-tester: Unify/simplify alternate event checking --- tools/mgmt-tester.c | 51 ++++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/tools/mgmt-tester.c b/tools/mgmt-tester.c index 2d9e97126..067ec48c3 100644 --- a/tools/mgmt-tester.c +++ b/tools/mgmt-tester.c @@ -3884,41 +3884,50 @@ done: test_condition_complete(data); } -static void command_generic_event_alt(uint16_t index, uint16_t length, - const void *param, - void *user_data) +static bool verify_alt_ev(const void *param, uint16_t length) { struct test_data *data = tester_get_data(); const struct generic_data *test = data->test_data; if (length != test->expect_alt_ev_len) { - tester_warn("Invalid length %s event", - mgmt_evstr(test->expect_alt_ev)); - mgmt_unregister(data->mgmt_alt, data->mgmt_alt_ev_id); - tester_test_failed(); - return; + tester_warn("Invalid length %u != %u", length, + test->expect_alt_ev_len); + return false; } - if (test->verify_alt_ev_func && - !test->verify_alt_ev_func(param, length)) { - tester_warn("Incorrect event parameters"); - mgmt_unregister(data->mgmt_alt, data->mgmt_alt_ev_id); - tester_test_failed(); - return; + if (test->expect_alt_ev_param && + memcmp(test->expect_alt_ev_param, param, length)) { + tester_warn("Event parameters do not match"); + return false; } - tester_print("New %s event received", mgmt_evstr(test->expect_alt_ev)); + return true; +} - if (test->expect_alt_ev_param && - memcmp(param, test->expect_alt_ev_param, - test->expect_alt_ev_len) != 0) - return; +static void command_generic_event_alt(uint16_t index, uint16_t length, + const void *param, + void *user_data) +{ + struct test_data *data = tester_get_data(); + const struct generic_data *test = data->test_data; + bool (*verify)(const void *param, uint16_t length); - tester_print("Unregistering %s notification", - mgmt_evstr(test->expect_alt_ev)); + tester_print("New %s event received", mgmt_evstr(test->expect_alt_ev)); mgmt_unregister(data->mgmt_alt, data->mgmt_alt_ev_id); + if (test->verify_alt_ev_func) + verify = test->verify_alt_ev_func; + else + verify = verify_alt_ev; + + if (!verify(param, length)) { + tester_warn("Incorrect %s event parameters", + mgmt_evstr(test->expect_alt_ev)); + tester_test_failed(); + return; + } + test_condition_complete(data); } -- 2.47.3