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