summaryrefslogtreecommitdiff
path: root/gr-blocks/lib
diff options
context:
space:
mode:
authorClayton Smith <argilo@gmail.com>2020-02-07 09:24:14 -0500
committerMarcus Müller <marcus@hostalia.de>2020-02-08 15:05:45 +0100
commit8be48325fbe18b90ccb6447e6fdb7546b98d2966 (patch)
treee69866506add1673a3760fe1fb41364f869ac6e5 /gr-blocks/lib
parentc3333eb0d7238c82442d1d901df03d5199557213 (diff)
runtime: release the flattened flowgraph after stopping
Diffstat (limited to 'gr-blocks/lib')
-rw-r--r--gr-blocks/lib/qa_gr_top_block.cc30
1 files changed, 30 insertions, 0 deletions
diff --git a/gr-blocks/lib/qa_gr_top_block.cc b/gr-blocks/lib/qa_gr_top_block.cc
index 76e754fc0a..6a9e0f5467 100644
--- a/gr-blocks/lib/qa_gr_top_block.cc
+++ b/gr-blocks/lib/qa_gr_top_block.cc
@@ -282,3 +282,33 @@ BOOST_AUTO_TEST_CASE(t11_set_block_affinity)
// least one thread core exists to use.
BOOST_CHECK_EQUAL(set[0], ret[0]);
}
+
+BOOST_AUTO_TEST_CASE(t12_release_shared_pointers)
+{
+ if (VERBOSE)
+ std::cout << "qa_top_block::t12()\n";
+
+ gr::top_block_sptr tb = gr::make_top_block("top");
+
+ gr::block_sptr src = gr::blocks::null_source::make(sizeof(int));
+ gr::block_sptr head = gr::blocks::head::make(sizeof(int), 100000);
+ gr::block_sptr dst = gr::blocks::null_sink::make(sizeof(int));
+
+ tb->connect(src, 0, head, 0);
+ tb->connect(head, 0, dst, 0);
+
+ tb->start();
+ tb->stop();
+ tb->wait();
+
+ BOOST_CHECK(src.use_count() > 1);
+ BOOST_CHECK(head.use_count() > 1);
+ BOOST_CHECK(dst.use_count() > 1);
+
+ tb->disconnect(src, 0, head, 0);
+ tb->disconnect(head, 0, dst, 0);
+
+ BOOST_CHECK_EQUAL(1, src.use_count());
+ BOOST_CHECK_EQUAL(1, head.use_count());
+ BOOST_CHECK_EQUAL(1, dst.use_count());
+}