unit-tests: Call methods on IKE_SAs in their context

This commit is contained in:
Tobias Brunner 2016-05-13 08:44:13 +02:00
parent 33e2620b8c
commit 5d97e5c30f
3 changed files with 18 additions and 9 deletions

View File

@ -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

View File

@ -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);

View File

@ -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.
*