You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mynewt.apache.org by st...@apache.org on 2016/08/09 23:08:13 UTC

[39/42] incubator-mynewt-core git commit: BLE Host - prep/exec tests: better mbuf leak check

BLE Host - prep/exec tests: better mbuf leak check

When ensuring no mbuf leaks at the end of the att_svr_test suite, also
ensure that each connection's prep list is empty.


Project: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/commit/004d61d9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/tree/004d61d9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/diff/004d61d9

Branch: refs/heads/sterly_refactor
Commit: 004d61d9b35c5d9a12cc83f7d1c1c01b9067ce2d
Parents: f1020d3
Author: Christopher Collins <cc...@apache.org>
Authored: Sun Aug 7 17:59:02 2016 -0700
Committer: Sterling Hughes <st...@apache.org>
Committed: Tue Aug 9 16:05:21 2016 -0700

----------------------------------------------------------------------
 net/nimble/host/src/test/ble_att_svr_test.c |  9 ++++-
 net/nimble/host/src/test/ble_hs_test_util.c | 46 ++++++++++++++++--------
 net/nimble/host/src/test/ble_hs_test_util.h | 12 +++++--
 3 files changed, 50 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/004d61d9/net/nimble/host/src/test/ble_att_svr_test.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_att_svr_test.c b/net/nimble/host/src/test/ble_att_svr_test.c
index 86565e3..1509b41 100644
--- a/net/nimble/host/src/test/ble_att_svr_test.c
+++ b/net/nimble/host/src/test/ble_att_svr_test.c
@@ -2282,7 +2282,14 @@ TEST_CASE(ble_att_svr_test_indicate)
 
 TEST_SUITE(ble_att_svr_suite)
 {
-    tu_suite_set_post_test_cb(ble_hs_test_util_post_test, NULL);
+    /* When checking for mbuf leaks, ensure no stale prep entries. */
+    static struct ble_hs_test_util_mbuf_params mbuf_params = {
+        .prev_tx = 1,
+        .rx_queue = 1,
+        .prep_list = 0,
+    };
+
+    tu_suite_set_post_test_cb(ble_hs_test_util_post_test, &mbuf_params);
 
     ble_att_svr_test_mtu();
     ble_att_svr_test_read();

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/004d61d9/net/nimble/host/src/test/ble_hs_test_util.c
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_test_util.c b/net/nimble/host/src/test/ble_hs_test_util.c
index 54a3527..460642e 100644
--- a/net/nimble/host/src/test/ble_hs_test_util.c
+++ b/net/nimble/host/src/test/ble_hs_test_util.c
@@ -1286,7 +1286,7 @@ ble_hs_test_util_mbuf_chain_len(const struct os_mbuf *om)
 }
 
 int
-ble_hs_test_util_mbuf_count(void)
+ble_hs_test_util_mbuf_count(const struct ble_hs_test_util_mbuf_params *params)
 {
     const struct ble_att_prep_entry *prep;
     const struct os_mbuf_pkthdr *omp;
@@ -1296,14 +1296,17 @@ ble_hs_test_util_mbuf_count(void)
     int count;
     int i;
 
-    count = ble_hs_test_util_mbuf_mpool.mp_num_free;
-    count += ble_hs_test_util_mbuf_chain_len(ble_hs_test_util_prev_tx_cur);
-
     ble_hs_process_tx_data_queue();
     ble_hs_process_rx_data_queue();
-    STAILQ_FOREACH(omp, &ble_hs_test_util_prev_tx_queue, omp_next) {
-        om = OS_MBUF_PKTHDR_TO_MBUF(omp);
-        count += ble_hs_test_util_mbuf_chain_len(om);
+
+    count = ble_hs_test_util_mbuf_mpool.mp_num_free;
+
+    if (params->prev_tx) {
+        count += ble_hs_test_util_mbuf_chain_len(ble_hs_test_util_prev_tx_cur);
+        STAILQ_FOREACH(omp, &ble_hs_test_util_prev_tx_queue, omp_next) {
+            om = OS_MBUF_PKTHDR_TO_MBUF(omp);
+            count += ble_hs_test_util_mbuf_chain_len(om);
+        }
     }
 
     ble_hs_lock();
@@ -1313,12 +1316,16 @@ ble_hs_test_util_mbuf_count(void)
             break;
         }
 
-        SLIST_FOREACH(chan, &conn->bhc_channels, blc_next) {
-            count += ble_hs_test_util_mbuf_chain_len(chan->blc_rx_buf);
+        if (params->rx_queue) {
+            SLIST_FOREACH(chan, &conn->bhc_channels, blc_next) {
+                count += ble_hs_test_util_mbuf_chain_len(chan->blc_rx_buf);
+            }
         }
 
-        SLIST_FOREACH(prep, &conn->bhc_att_svr.basc_prep_list, bape_next) {
-            count += ble_hs_test_util_mbuf_chain_len(prep->bape_value);
+        if (params->prep_list) {
+            SLIST_FOREACH(prep, &conn->bhc_att_svr.basc_prep_list, bape_next) {
+                count += ble_hs_test_util_mbuf_chain_len(prep->bape_value);
+            }
         }
     }
     ble_hs_unlock();
@@ -1327,18 +1334,29 @@ ble_hs_test_util_mbuf_count(void)
 }
 
 void
-ble_hs_test_util_assert_mbufs_freed(void)
+ble_hs_test_util_assert_mbufs_freed(
+    const struct ble_hs_test_util_mbuf_params *params)
 {
+    static const struct ble_hs_test_util_mbuf_params dflt = {
+        .prev_tx = 1,
+        .rx_queue = 1,
+        .prep_list = 1,
+    };
+
     int count;
 
-    count = ble_hs_test_util_mbuf_count();
+    if (params == NULL) {
+        params = &dflt;
+    }
+
+    count = ble_hs_test_util_mbuf_count(params);
     TEST_ASSERT(count == ble_hs_test_util_mbuf_mpool.mp_num_blocks);
 }
 
 void
 ble_hs_test_util_post_test(void *arg)
 {
-    ble_hs_test_util_assert_mbufs_freed();
+    ble_hs_test_util_assert_mbufs_freed(arg);
 }
 
 static int

http://git-wip-us.apache.org/repos/asf/incubator-mynewt-core/blob/004d61d9/net/nimble/host/src/test/ble_hs_test_util.h
----------------------------------------------------------------------
diff --git a/net/nimble/host/src/test/ble_hs_test_util.h b/net/nimble/host/src/test/ble_hs_test_util.h
index 0ae6cf5..3320e9b 100644
--- a/net/nimble/host/src/test/ble_hs_test_util.h
+++ b/net/nimble/host/src/test/ble_hs_test_util.h
@@ -44,6 +44,12 @@ struct ble_hs_test_util_flat_attr {
     uint16_t value_len;
 };
 
+struct ble_hs_test_util_mbuf_params {
+    unsigned prev_tx:1;
+    unsigned rx_queue:1;
+    unsigned prep_list:1;
+};
+
 void ble_hs_test_util_prev_tx_enqueue(struct os_mbuf *om);
 struct os_mbuf *ble_hs_test_util_prev_tx_dequeue(void);
 struct os_mbuf *ble_hs_test_util_prev_tx_dequeue_pullup(void);
@@ -160,8 +166,10 @@ int ble_hs_test_util_gatt_write_long_flat(uint16_t conn_handle,
                                           uint16_t attr_handle,
                                           const void *data, uint16_t data_len,
                                           ble_gatt_attr_fn *cb, void *cb_arg);
-int ble_hs_test_util_mbuf_count(void);
-void ble_hs_test_util_assert_mbufs_freed(void);
+int ble_hs_test_util_mbuf_count(
+    const struct ble_hs_test_util_mbuf_params *params);
+void ble_hs_test_util_assert_mbufs_freed(
+    const struct ble_hs_test_util_mbuf_params *params);
 void ble_hs_test_util_post_test(void *arg);
 void ble_hs_test_util_init(void);