tests modified accordingly to unique_ptrs
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
SUB=
|
SUB=n
|
||||||
|
|
||||||
tests:
|
tests:
|
||||||
set -e; \
|
set -e; \
|
||||||
|
|||||||
@@ -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;
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user