From: Tobias Brunner Date: Fri, 13 May 2016 06:44:13 +0000 (+0200) Subject: unit-tests: Call methods on IKE_SAs in their context X-Git-Tag: 5.5.0dr1~4^2~73 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5d97e5c30f96de31037d45d9dcd3e12610112a9d;p=thirdparty%2Fstrongswan.git unit-tests: Call methods on IKE_SAs in their context --- diff --git a/src/libcharon/tests/suites/test_child_delete.c b/src/libcharon/tests/suites/test_child_delete.c index 31473769f4..b357beec57 100644 --- a/src/libcharon/tests/suites/test_child_delete.c +++ b/src/libcharon/tests/suites/test_child_delete.c @@ -39,7 +39,7 @@ START_TEST(test_regular) &a, &b); } assert_hook_not_called(child_updown); - a->delete_child_sa(a, PROTO_ESP, _i+1, FALSE); + call_ikesa(a, delete_child_sa, PROTO_ESP, _i+1, FALSE); assert_child_sa_state(a, _i+1, CHILD_DELETING); assert_hook(); @@ -57,8 +57,8 @@ START_TEST(test_regular) assert_child_sa_count(a, 0); assert_hook(); - a->destroy(a); - b->destroy(b); + call_ikesa(a, destroy); + call_ikesa(b, destroy); } END_TEST @@ -74,9 +74,9 @@ START_TEST(test_collision) &a, &b); /* both peers delete the CHILD_SA concurrently */ assert_hook_not_called(child_updown); - a->delete_child_sa(a, PROTO_ESP, 1, FALSE); + call_ikesa(a, delete_child_sa, PROTO_ESP, 1, FALSE); assert_child_sa_state(a, 1, CHILD_DELETING); - b->delete_child_sa(b, PROTO_ESP, 2, FALSE); + call_ikesa(b, delete_child_sa, PROTO_ESP, 2, FALSE); assert_child_sa_state(b, 2, CHILD_DELETING); assert_hook(); @@ -122,8 +122,8 @@ START_TEST(test_collision) assert_child_sa_count(b, 0); assert_hook(); - a->destroy(a); - b->destroy(b); + call_ikesa(a, destroy); + call_ikesa(b, destroy); } END_TEST diff --git a/src/libcharon/tests/utils/exchange_test_helper.c b/src/libcharon/tests/utils/exchange_test_helper.c index f3f6996a0c..488a5ee9b1 100644 --- a/src/libcharon/tests/utils/exchange_test_helper.c +++ b/src/libcharon/tests/utils/exchange_test_helper.c @@ -150,8 +150,7 @@ METHOD(exchange_test_helper_t, establish_sa, void, peer_cfg = create_peer_cfg(TRUE); sa_i->set_peer_cfg(sa_i, peer_cfg); peer_cfg->destroy(peer_cfg); - charon->bus->set_sa(charon->bus, sa_i); - sa_i->initiate(sa_i, create_child_cfg(TRUE), 0, NULL, NULL); + call_ikesa(sa_i, initiate, create_child_cfg(TRUE), 0, NULL, NULL); /* IKE_SA_INIT --> */ id_r->set_initiator_spi(id_r, id_i->get_initiator_spi(id_i)); process_message(this, sa_r, NULL); diff --git a/src/libcharon/tests/utils/exchange_test_helper.h b/src/libcharon/tests/utils/exchange_test_helper.h index 891ce2870f..9768d42d0f 100644 --- a/src/libcharon/tests/utils/exchange_test_helper.h +++ b/src/libcharon/tests/utils/exchange_test_helper.h @@ -61,6 +61,16 @@ struct exchange_test_helper_t { message_t *message); }; +/** + * Since we don't use the IKE_SA manager to checkout SAs use this to call a + * method on the given IKE_SA in its context. + */ +#define call_ikesa(sa, method, ...) ({ \ + charon->bus->set_sa(charon->bus, sa); \ + sa->method(sa, ##__VA_ARGS__); \ + charon->bus->set_sa(charon->bus, NULL); \ +}) + /** * The one and only instance of the helper object. *