From 4746abfc961981acb00b05d08240205facfb2420 Mon Sep 17 00:00:00 2001 From: hsaturn Date: Mon, 2 Jan 2023 00:05:22 +0100 Subject: [PATCH] tests modified accordingly to unique_ptrs --- src/TinyMqtt.cpp | 4 ++-- src/TinyMqtt.h | 9 +++++++-- tests/Makefile | 2 +- tests/local-tests/local-tests.ino | 26 +++++++++++++------------- tests/network-tests/network-tests.ino | 14 +++++++++++--- 5 files changed, 34 insertions(+), 21 deletions(-) diff --git a/src/TinyMqtt.cpp b/src/TinyMqtt.cpp index 48ad527..a8af240 100644 --- a/src/TinyMqtt.cpp +++ b/src/TinyMqtt.cpp @@ -34,7 +34,7 @@ MqttClient::MqttClient(MqttBroker* local_broker, TcpClient* new_client) // client->onConnect() TODO // client->onDisconnect() TODO #else - tcp_client = std::unique_ptr(new WiFiClient(*new_client)); + tcp_client.reset(new WiFiClient(*new_client)); #endif alive = millis()+5000; } @@ -89,7 +89,7 @@ void MqttClient::connect(std::string broker, uint16_t port, uint16_t ka) debug("MqttClient::connect_to_host " << broker << ':' << port); keep_alive = ka; close(); - tcp_client = std::unique_ptr(new TcpClient); + tcp_client.reset(new TcpClient); #ifdef TINY_MQTT_ASYNC tcp_client->onData(onData, this); diff --git a/src/TinyMqtt.h b/src/TinyMqtt.h index 4b9e548..e07eda0 100644 --- a/src/TinyMqtt.h +++ b/src/TinyMqtt.h @@ -327,7 +327,6 @@ class MqttBroker void connect(const std::string& host, uint16_t port=1883); bool connected() const { return state == Connected; } - size_t clientsCount() const { return clients.size(); } void dump(std::string indent="") { @@ -336,7 +335,13 @@ class MqttBroker } using Clients = std::set>; + using LocalClients = std::set; + const Clients& getClients() const { return clients; } + const LocalClients& getLocalClients() const { return local_clients; } + + size_t clientsCount() const { return clients.size(); } + size_t localClientsCount() const { return local_clients.size(); } private: friend class MqttClient; @@ -360,7 +365,7 @@ class MqttBroker bool compareString(const char* good, const char* str, uint8_t str_len) const; Clients clients; - std::set local_clients; + LocalClients local_clients; private: std::unique_ptr server; diff --git a/tests/Makefile b/tests/Makefile index 4f66525..b849f31 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -1,4 +1,4 @@ -SUB= +SUB=n tests: set -e; \ diff --git a/tests/local-tests/local-tests.ino b/tests/local-tests/local-tests.ino index 2e006f1..2ed099c 100644 --- a/tests/local-tests/local-tests.ino +++ b/tests/local-tests/local-tests.ino @@ -31,13 +31,13 @@ void onPublish(const MqttClient* srce, const Topic& topic, const char* payload, test(local_client_should_unregister_when_destroyed) { MqttBroker broker(1883); - assertEqual(broker.clientsCount(), (size_t)0); + assertEqual(broker.localClientsCount(), (size_t)0); { - assertEqual(broker.clientsCount(), (size_t)0); // Ensure client is not yet connected + assertEqual(broker.localClientsCount(), (size_t)0); // Ensure client is not yet connected MqttClient client(&broker); - assertEqual(broker.clientsCount(), (size_t)1); // Ensure client is now connected + assertEqual(broker.localClientsCount(), (size_t)1); // Ensure client is now connected } - assertEqual(broker.clientsCount(), (size_t)0); + assertEqual(broker.localClientsCount(), (size_t)0); } test(local_client_alive) @@ -47,31 +47,31 @@ test(local_client_alive) MqttClient client(&broker); broker.loop(); - assertEqual(broker.clientsCount(), (size_t)1); // Ensure client is now connected + assertEqual(broker.localClientsCount(), (size_t)1); // Ensure client is now connected add_millis(TINY_MQTT_DEFAULT_ALIVE*1000/2); broker.loop(); - assertEqual(broker.clientsCount(), (size_t)1); // Ensure client is still connected + assertEqual(broker.localClientsCount(), (size_t)1); // Ensure client is still connected add_seconds(TINY_MQTT_DEFAULT_ALIVE*5); broker.loop(); - assertEqual(broker.clientsCount(), (size_t)1); // Ensure client is still connected + assertEqual(broker.localClientsCount(), (size_t)1); // Ensure client is still connected } #if 0 test(local_connect) { - assertEqual(broker.clientsCount(), (size_t)0); + assertEqual(broker.localClientsCount(), (size_t)0); MqttClient client; assertTrue(client.connected()); - assertEqual(broker.clientsCount(), (size_t)1); + assertEqual(broker.localClientsCount(), (size_t)1); } test(local_publish_should_be_dispatched) { published.clear(); - assertEqual(broker.clientsCount(), (size_t)0); + assertEqual(broker.localClientsCount(), (size_t)0); MqttClient subscriber; subscriber.subscribe("a/b"); @@ -91,7 +91,7 @@ test(local_publish_should_be_dispatched) test(local_publish_should_be_dispatched_to_local_clients) { published.clear(); - assertEqual(broker.clientsCount(), (size_t)0); + assertEqual(broker.localClientsCount(), (size_t)0); MqttClient subscriber_a("A"); subscriber_a.setCallback(onPublish); @@ -116,7 +116,7 @@ test(local_publish_should_be_dispatched_to_local_clients) test(local_unsubscribe) { published.clear(); - assertEqual(broker.clientsCount(), (size_t)0); + assertEqual(broker.localClientsCount(), (size_t)0); MqttClient subscriber; subscriber.setCallback(onPublish); @@ -136,7 +136,7 @@ test(local_unsubscribe) test(local_nocallback_when_destroyed) { published.clear(); - assertEqual(broker.clientsCount(), (size_t)0); + assertEqual(broker.localClientsCount(), (size_t)0); MqttClient publisher; { diff --git a/tests/network-tests/network-tests.ino b/tests/network-tests/network-tests.ino index ea7e910..eb19f3d 100644 --- a/tests/network-tests/network-tests.ino +++ b/tests/network-tests/network-tests.ino @@ -142,6 +142,15 @@ test(suback) assertEqual(MqttClient::counters[MqttMessage::Type::SubAck], 1); } +uint32_t getClientKeepAlive(MqttBroker& broker) +{ + if (broker.getClients().size() == 1) + for (auto& it : broker.getClients()) + return it->keepAlive(); + + return 9999; +} + test(network_client_alive) { const uint32_t keep_alive=1; @@ -162,7 +171,7 @@ test(network_client_alive) assertTrue(broker.clientsCount() == 1); assertTrue(client.connected()); - uint32_t ka = broker.getClients()[0]->keepAlive(); + uint32_t ka = getClientKeepAlive(broker); assertEqual(ka, keep_alive); assertEqual(broker.clientsCount(), (size_t)1); @@ -212,9 +221,8 @@ test(network_client_keep_alive_high) uint32_t sz = broker.getClients().size(); assertEqual(sz , (uint32_t)1); - uint32_t ka = broker.getClients()[0]->keepAlive(); + uint32_t ka = getClientKeepAlive(broker); assertEqual(ka, keep_alive); - } test(network_client_to_broker_connexion)