Fix memory leaks & data races in tests (#4772)

* Add a few pre-made sanitizer suppressions

* Test Sanitization: Fix threading issues

* Test Sanitization: Allow deletion of PubSub

We still don't delete it in main code, but this allows us to try
deleting it in tests.

* Test Sanitization: Fix some memory leaks

* fix gtest clang-tidy warning

* const emojis test :-)
This commit is contained in:
pajlada
2023-08-27 14:07:46 +02:00
committed by GitHub
parent ac6708b3a2
commit 3f7671000a
18 changed files with 360 additions and 296 deletions
+19 -19
View File
@@ -116,33 +116,33 @@ private:
TEST(BasicPubSub, SubscriptionCycle)
{
const QString host("wss://127.0.0.1:9050/liveupdates/sub-unsub");
auto *manager = new MyManager(host);
manager->start();
MyManager manager(host);
manager.start();
std::this_thread::sleep_for(50ms);
manager->sub({1, "foo"});
manager.sub({1, "foo"});
std::this_thread::sleep_for(500ms);
ASSERT_EQ(manager->diag.connectionsOpened, 1);
ASSERT_EQ(manager->diag.connectionsClosed, 0);
ASSERT_EQ(manager->diag.connectionsFailed, 0);
ASSERT_EQ(manager->messagesReceived, 1);
ASSERT_EQ(manager.diag.connectionsOpened, 1);
ASSERT_EQ(manager.diag.connectionsClosed, 0);
ASSERT_EQ(manager.diag.connectionsFailed, 0);
ASSERT_EQ(manager.messagesReceived, 1);
ASSERT_EQ(manager->popMessage(), QString("ack-sub-1-foo"));
ASSERT_EQ(manager.popMessage(), QString("ack-sub-1-foo"));
manager->unsub({1, "foo"});
manager.unsub({1, "foo"});
std::this_thread::sleep_for(50ms);
ASSERT_EQ(manager->diag.connectionsOpened, 1);
ASSERT_EQ(manager->diag.connectionsClosed, 0);
ASSERT_EQ(manager->diag.connectionsFailed, 0);
ASSERT_EQ(manager->messagesReceived, 2);
ASSERT_EQ(manager->popMessage(), QString("ack-unsub-1-foo"));
ASSERT_EQ(manager.diag.connectionsOpened, 1);
ASSERT_EQ(manager.diag.connectionsClosed, 0);
ASSERT_EQ(manager.diag.connectionsFailed, 0);
ASSERT_EQ(manager.messagesReceived, 2);
ASSERT_EQ(manager.popMessage(), QString("ack-unsub-1-foo"));
manager->stop();
manager.stop();
ASSERT_EQ(manager->diag.connectionsOpened, 1);
ASSERT_EQ(manager->diag.connectionsClosed, 1);
ASSERT_EQ(manager->diag.connectionsFailed, 0);
ASSERT_EQ(manager->messagesReceived, 2);
ASSERT_EQ(manager.diag.connectionsOpened, 1);
ASSERT_EQ(manager.diag.connectionsClosed, 1);
ASSERT_EQ(manager.diag.connectionsFailed, 0);
ASSERT_EQ(manager.messagesReceived, 2);
}