From 20c4ff0c26f56e9df13e6e7097259e24d596235f Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Fri, 10 Apr 2020 08:45:49 -0700 Subject: [PATCH] test for Context leak Tests should only hold a single Context pointer --- src/pvxs/client.h | 1 + test/testget.cpp | 6 ++++++ test/testmon.cpp | 6 ++++++ 3 files changed, 13 insertions(+) diff --git a/src/pvxs/client.h b/src/pvxs/client.h index bc0c80f..a8cb464 100644 --- a/src/pvxs/client.h +++ b/src/pvxs/client.h @@ -359,6 +359,7 @@ public: void hurryUp(); explicit operator bool() const { return pvt.operator bool(); } + size_t use_count() const { return pvt.use_count(); } private: std::shared_ptr pvt; }; diff --git a/test/testget.cpp b/test/testget.cpp index e1fff9e..089ef62 100644 --- a/test/testget.cpp +++ b/test/testget.cpp @@ -43,6 +43,12 @@ struct Tester { initial["value"] = 42; } + ~Tester() + { + if(cli.use_count()!=1u) + testAbort("Tester Context leak"); + } + void testWaiter() { testShow()<<__func__; diff --git a/test/testmon.cpp b/test/testmon.cpp index d3e3e59..855bbb8 100644 --- a/test/testmon.cpp +++ b/test/testmon.cpp @@ -46,6 +46,12 @@ struct BasicTest { initial["value"] = 42; } + ~BasicTest() + { + if(cli.use_count()!=1u) + testAbort("Tester Context leak"); + } + void subscribe(const char *name) { sub = cli.monitor(name)