]> git.ipfire.org Git - thirdparty/strongswan.git/commitdiff
unit-tests: Call methods on IKE_SAs in their context
authorTobias Brunner <tobias@strongswan.org>
Fri, 13 May 2016 06:44:13 +0000 (08:44 +0200)
committerTobias Brunner <tobias@strongswan.org>
Fri, 17 Jun 2016 16:48:01 +0000 (18:48 +0200)
src/libcharon/tests/suites/test_child_delete.c
src/libcharon/tests/utils/exchange_test_helper.c
src/libcharon/tests/utils/exchange_test_helper.h

index 31473769f4650e81b2fb6a80d9eadc2540c1f084..b357beec57d4e6edc10b727a3e294d08be582fde 100644 (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
 
index f3f6996a0cb5564bd1bddb33539e5606685ff749..488a5ee9b148f158ac5e3ba11b3fd66a894892ef 100644 (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);
index 891ce2870f8e45d0c136cb48ca31ae635fc89d02..9768d42d0f2325ab82bd191dc244b7d097dedef5 100644 (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.
  *