tests modified accordingly to unique_ptrs

This commit is contained in:
hsaturn
2023-01-02 00:05:22 +01:00
parent ef24107169
commit 4746abfc96
5 changed files with 34 additions and 21 deletions

View File

@@ -34,7 +34,7 @@ MqttClient::MqttClient(MqttBroker* local_broker, TcpClient* new_client)
// client->onConnect() TODO // client->onConnect() TODO
// client->onDisconnect() TODO // client->onDisconnect() TODO
#else #else
tcp_client = std::unique_ptr<WiFiClient>(new WiFiClient(*new_client)); tcp_client.reset(new WiFiClient(*new_client));
#endif #endif
alive = millis()+5000; 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); debug("MqttClient::connect_to_host " << broker << ':' << port);
keep_alive = ka; keep_alive = ka;
close(); close();
tcp_client = std::unique_ptr<TcpClient>(new TcpClient); tcp_client.reset(new TcpClient);
#ifdef TINY_MQTT_ASYNC #ifdef TINY_MQTT_ASYNC
tcp_client->onData(onData, this); tcp_client->onData(onData, this);

View File

@@ -327,7 +327,6 @@ class MqttBroker
void connect(const std::string& host, uint16_t port=1883); void connect(const std::string& host, uint16_t port=1883);
bool connected() const { return state == Connected; } bool connected() const { return state == Connected; }
size_t clientsCount() const { return clients.size(); }
void dump(std::string indent="") void dump(std::string indent="")
{ {
@@ -336,7 +335,13 @@ class MqttBroker
} }
using Clients = std::set<std::unique_ptr<MqttClient>>; using Clients = std::set<std::unique_ptr<MqttClient>>;
using LocalClients = std::set<MqttClient*>;
const Clients& getClients() const { return clients; } 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: private:
friend class MqttClient; friend class MqttClient;
@@ -360,7 +365,7 @@ class MqttBroker
bool compareString(const char* good, const char* str, uint8_t str_len) const; bool compareString(const char* good, const char* str, uint8_t str_len) const;
Clients clients; Clients clients;
std::set<MqttClient*> local_clients; LocalClients local_clients;
private: private:
std::unique_ptr<TcpServer> server; std::unique_ptr<TcpServer> server;

View File

@@ -1,4 +1,4 @@
SUB= SUB=n
tests: tests:
set -e; \ set -e; \

View File

@@ -31,13 +31,13 @@ void onPublish(const MqttClient* srce, const Topic& topic, const char* payload,
test(local_client_should_unregister_when_destroyed) test(local_client_should_unregister_when_destroyed)
{ {
MqttBroker broker(1883); 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); 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) test(local_client_alive)
@@ -47,31 +47,31 @@ test(local_client_alive)
MqttClient client(&broker); MqttClient client(&broker);
broker.loop(); 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); add_millis(TINY_MQTT_DEFAULT_ALIVE*1000/2);
broker.loop(); 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); add_seconds(TINY_MQTT_DEFAULT_ALIVE*5);
broker.loop(); 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 #if 0
test(local_connect) test(local_connect)
{ {
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.localClientsCount(), (size_t)0);
MqttClient client; MqttClient client;
assertTrue(client.connected()); assertTrue(client.connected());
assertEqual(broker.clientsCount(), (size_t)1); assertEqual(broker.localClientsCount(), (size_t)1);
} }
test(local_publish_should_be_dispatched) test(local_publish_should_be_dispatched)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.localClientsCount(), (size_t)0);
MqttClient subscriber; MqttClient subscriber;
subscriber.subscribe("a/b"); subscriber.subscribe("a/b");
@@ -91,7 +91,7 @@ test(local_publish_should_be_dispatched)
test(local_publish_should_be_dispatched_to_local_clients) test(local_publish_should_be_dispatched_to_local_clients)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.localClientsCount(), (size_t)0);
MqttClient subscriber_a("A"); MqttClient subscriber_a("A");
subscriber_a.setCallback(onPublish); subscriber_a.setCallback(onPublish);
@@ -116,7 +116,7 @@ test(local_publish_should_be_dispatched_to_local_clients)
test(local_unsubscribe) test(local_unsubscribe)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.localClientsCount(), (size_t)0);
MqttClient subscriber; MqttClient subscriber;
subscriber.setCallback(onPublish); subscriber.setCallback(onPublish);
@@ -136,7 +136,7 @@ test(local_unsubscribe)
test(local_nocallback_when_destroyed) test(local_nocallback_when_destroyed)
{ {
published.clear(); published.clear();
assertEqual(broker.clientsCount(), (size_t)0); assertEqual(broker.localClientsCount(), (size_t)0);
MqttClient publisher; MqttClient publisher;
{ {

View File

@@ -142,6 +142,15 @@ test(suback)
assertEqual(MqttClient::counters[MqttMessage::Type::SubAck], 1); 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) test(network_client_alive)
{ {
const uint32_t keep_alive=1; const uint32_t keep_alive=1;
@@ -162,7 +171,7 @@ test(network_client_alive)
assertTrue(broker.clientsCount() == 1); assertTrue(broker.clientsCount() == 1);
assertTrue(client.connected()); assertTrue(client.connected());
uint32_t ka = broker.getClients()[0]->keepAlive(); uint32_t ka = getClientKeepAlive(broker);
assertEqual(ka, keep_alive); assertEqual(ka, keep_alive);
assertEqual(broker.clientsCount(), (size_t)1); assertEqual(broker.clientsCount(), (size_t)1);
@@ -212,9 +221,8 @@ test(network_client_keep_alive_high)
uint32_t sz = broker.getClients().size(); uint32_t sz = broker.getClients().size();
assertEqual(sz , (uint32_t)1); assertEqual(sz , (uint32_t)1);
uint32_t ka = broker.getClients()[0]->keepAlive(); uint32_t ka = getClientKeepAlive(broker);
assertEqual(ka, keep_alive); assertEqual(ka, keep_alive);
} }
test(network_client_to_broker_connexion) test(network_client_to_broker_connexion)