Skip to content

Commit b9f6c2b

Browse files
Add DTLS test, fixes regarding QoS
1 parent d3349c4 commit b9f6c2b

File tree

5 files changed

+44
-26
lines changed

5 files changed

+44
-26
lines changed

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,10 @@ Example code:
3232
#include <MQTTClientMbedOs.h>
3333

3434
NetworkInterface *net = NetworkInterface::get_default_instance();
35-
SocketAddress sockAddr(hostname, port);
3635
TCPSocket socket;
3736
MQTTClient client(&socket);
3837
socket.open(net);
39-
socket.connect(sockAddr);
38+
socket.connect(hostname, port);
4039
```
4140
4241
The socket has to be opened and connected in order for the client to be able to interact with the broker.
@@ -70,7 +69,7 @@ mqttNet.connect(mqtt_global::hostname, mqtt_global::port);
7069

7170
The MQTTNetwork has to `connect` to a broker, given its address and port number.
7271

73-
72+
#### API usage ####
7473

7574
Apart from lanaguage details and different creation and initialization procedure, the APIs of both the legacy and new API are the same.
7675

TESTS/mqtt/mqtt/main.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,9 @@ Case cases[] = {
123123

124124
#if MBED_CONF_MBED_MQTT_TESTS_MQTT_SN_ENABLE
125125
// MQTT-SN
126-
Case("MQTTSN_LEGACY_TEST_CONNECT", MQTTSN_LEGACY_TEST_CONNECT),
126+
Case("MQTTSN_LEGACY_CONNECT", MQTTSN_LEGACY_CONNECT),
127127
Case("MQTTSN_LEGACY_CONNECT_NOT_CONNECTED", MQTTSN_LEGACY_CONNECT_NOT_CONNECTED),
128-
Case("MQTTSN_LEGACY_TEST_SUBSCRIBE", MQTTSN_LEGACY_TEST_SUBSCRIBE),
128+
Case("MQTTSN_LEGACY_SUBSCRIBE", MQTTSN_LEGACY_SUBSCRIBE),
129129
Case("MQTTSN_LEGACY_SUBSCRIBE_NETWORK_NOT_CONNECTED", MQTTSN_LEGACY_SUBSCRIBE_NETWORK_NOT_CONNECTED),
130130
// Case("MQTTSN_LEGACY_SUBSCRIBE_CLIENT_NOT_CONNECTED", MQTTSN_LEGACY_SUBSCRIBE_CLIENT_NOT_CONNECTED),
131131
Case("MQTTSN_LEGACY_SUBSCRIBE_TOPIC_TOO_LONG", MQTTSN_LEGACY_SUBSCRIBE_TOPIC_TOO_LONG),
@@ -135,7 +135,7 @@ Case cases[] = {
135135
#endif
136136
Case("MQTTSN_LEGACY_UNSUBSCRIBE_WITHOUT_SUBSCRIBE", MQTTSN_LEGACY_UNSUBSCRIBE_WITHOUT_SUBSCRIBE),
137137
Case("MQTTSN_LEGACY_UNSUBSCRIBE_INVALID", MQTTSN_LEGACY_UNSUBSCRIBE_INVALID),
138-
Case("MQTTSN_LEGACY_TEST_PUBLISH", MQTTSN_LEGACY_TEST_PUBLISH),
138+
Case("MQTTSN_LEGACY_PUBLISH", MQTTSN_LEGACY_PUBLISH),
139139
Case("MQTTSN_LEGACY_PUBLISH_NOT_CONNECTED", MQTTSN_LEGACY_PUBLISH_NOT_CONNECTED),
140140
Case("MQTTSN_LEGACY_PUBLISH_TOPIC_TOO_LONG", MQTTSN_LEGACY_PUBLISH_TOPIC_TOO_LONG),
141141
Case("MQTTSN_LEGACY_UDP_CONNECT_SUBSCRIBE_PUBLISH", MQTTSN_LEGACY_UDP_CONNECT_SUBSCRIBE_PUBLISH),
@@ -187,6 +187,7 @@ Case cases[] = {
187187
Case("MQTTSN_PUBLISH_NOT_CONNECTED", MQTTSN_PUBLISH_NOT_CONNECTED),
188188
Case("MQTTSN_PUBLISH_TOPIC_TOO_LONG", MQTTSN_PUBLISH_TOPIC_TOO_LONG),
189189
Case("MQTTSN_UDP_CONNECT_SUBSCRIBE_PUBLISH", MQTTSN_UDP_CONNECT_SUBSCRIBE_PUBLISH),
190+
Case("MQTTSN_DTLS_CONNECT_SUBSCRIBE_PUBLISH", MQTTSN_DTLS_CONNECT_SUBSCRIBE_PUBLISH),
190191
Case("MQTTSN_IS_CONNECTED", MQTTSN_IS_CONNECTED),
191192
Case("MQTTSN_IS_CONNECTED_CLIENT_NOT_CONNECTED", MQTTSN_IS_CONNECTED_CLIENT_NOT_CONNECTED),
192193
Case("MQTTSN_IS_CONNECTED_NETWORK_NOT_CONNECTED", MQTTSN_IS_CONNECTED_NETWORK_NOT_CONNECTED),
@@ -253,7 +254,7 @@ utest::v1::status_t test_setup(const size_t number_of_cases)
253254

254255
// Prepare a default message, to avoid code duplication at a later stage.
255256
sprintf(mqtt_global::message_buffer, "%s", "MQTT_MBED_OS_TEST_MESSAGE");
256-
mqtt_global::default_message.qos = MQTT::QOS1;
257+
mqtt_global::default_message.qos = MQTT::QOS0;
257258
mqtt_global::default_message.retained = false;
258259
mqtt_global::default_message.dup = false;
259260
mqtt_global::default_message.payload = (void*)mqtt_global::message_buffer;

TESTS/mqtt/mqtt/mqtt-sn_legacy.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131

3232
#define MQTTSN_LEGACY_API_DEINIT() TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, mqttNet.disconnect());
3333

34-
void MQTTSN_LEGACY_TEST_CONNECT()
34+
void MQTTSN_LEGACY_CONNECT()
3535
{
3636
MQTTSN_LEGACY_API_INIT();
3737
data.clientID.cstring = (char*)"MQTTSN_LEGACY_CONNECT";
@@ -51,7 +51,7 @@ void MQTTSN_LEGACY_CONNECT_NOT_CONNECTED()
5151
TEST_ASSERT_EQUAL(-1, client.connect(data));
5252
}
5353

54-
void MQTTSN_LEGACY_TEST_SUBSCRIBE()
54+
void MQTTSN_LEGACY_SUBSCRIBE()
5555
{
5656
MQTTSN_LEGACY_API_INIT();
5757
data.clientID.cstring = (char*)"MQTTSN_LEGACY_TEST_SUBSCRIBE";
@@ -163,7 +163,7 @@ void MQTTSN_LEGACY_UNSUBSCRIBE_INVALID()
163163
MQTTSN_LEGACY_API_DEINIT();
164164
}
165165

166-
void MQTTSN_LEGACY_TEST_PUBLISH()
166+
void MQTTSN_LEGACY_PUBLISH()
167167
{
168168
MQTTSN_LEGACY_API_INIT();
169169
data.clientID.cstring = (char*)"MQTTSN_LEGACY_PUBLISH";

TESTS/mqtt/mqtt/mqtt-sn_new.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,3 +261,20 @@ void MQTTSN_UDP_CONNECT_SUBSCRIBE_PUBLISH()
261261

262262
socket.close();
263263
}
264+
265+
void MQTTSN_DTLS_CONNECT_SUBSCRIBE_PUBLISH()
266+
{
267+
NetworkInterface *net = NetworkInterface::get_default_instance();
268+
DTLSSocket *socket = new DTLSSocket; // Allocate on heap to avoid stack overflow.
269+
TEST_ASSERT(NSAPI_ERROR_OK == socket->open(net));
270+
TEST_ASSERT(NSAPI_ERROR_OK == socket->set_root_ca_cert(mqtt_global::SSL_CA_PEM));
271+
int ret = socket->connect(mqtt_global::hostname, mqtt_global::port_udp);
272+
TEST_ASSERT(NSAPI_ERROR_OK == ret);
273+
274+
MQTTClient client(socket);
275+
276+
send_messages_sn< MQTTClient >(client, "MQTTSN_DTLS_CONNECT_SUBSCRIBE_PUBLISH");
277+
278+
socket->close();
279+
delete socket;
280+
}

TESTS/mqtt/mqtt/mqtt_tests.h

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -76,16 +76,16 @@ void MQTT_LEGACY_CONNECT_SUBSCRIBE_PUBLISH_USER_PASSWORD();
7676
void MQTT_LEGACY_TLS_CONNECT_SUBSCRIBE_PUBLISH();
7777

7878
void MQTTSN_LEGACY_CONNECT_NOT_CONNECTED();
79-
void MQTTSN_LEGACY_TEST_CONNECT(); // Avoid clash with MQTTSN enum.
80-
void MQTTSN_LEGACY_TEST_SUBSCRIBE(); // Avoid clash with MQTTSN enum.
79+
void MQTTSN_LEGACY_CONNECT();
80+
void MQTTSN_LEGACY_SUBSCRIBE();
8181
void MQTTSN_LEGACY_SUBSCRIBE_NETWORK_NOT_CONNECTED();
8282
void MQTTSN_LEGACY_SUBSCRIBE_CLIENT_NOT_CONNECTED();
8383
void MQTTSN_LEGACY_SUBSCRIBE_TOPIC_TOO_LONG();
8484
void MQTTSN_LEGACY_SUBSCRIBE_INVALID_MESSAGE_HANDLER();
8585
void MQTTSN_LEGACY_SUBSCRIBE_RECEIVE();
8686
void MQTTSN_LEGACY_UNSUBSCRIBE_WITHOUT_SUBSCRIBE();
8787
void MQTTSN_LEGACY_UNSUBSCRIBE_INVALID();
88-
void MQTTSN_LEGACY_TEST_PUBLISH();
88+
void MQTTSN_LEGACY_PUBLISH();
8989
void MQTTSN_LEGACY_PUBLISH_NOT_CONNECTED();
9090
void MQTTSN_LEGACY_PUBLISH_TOPIC_TOO_LONG();
9191
void MQTTSN_LEGACY_IS_CONNECTED();
@@ -130,6 +130,7 @@ void MQTTSN_IS_CONNECTED();
130130
void MQTTSN_IS_CONNECTED_CLIENT_NOT_CONNECTED();
131131
void MQTTSN_IS_CONNECTED_NETWORK_NOT_CONNECTED();
132132
void MQTTSN_UDP_CONNECT_SUBSCRIBE_PUBLISH();
133+
void MQTTSN_DTLS_CONNECT_SUBSCRIBE_PUBLISH();
133134

134135
template <class Client> void send_messages(Client &client, char *clientID, bool user_password = false) {
135136
arrivedcount = 0;
@@ -141,7 +142,7 @@ template <class Client> void send_messages(Client &client, char *clientID, bool
141142
data.password.cstring = (char*)MBED_CONF_MBED_MQTT_TESTS_PASSWORD;
142143
}
143144
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, client.connect(data));
144-
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, client.subscribe(mqtt_global::topic, MQTT::QOS1, messageArrived));
145+
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, client.subscribe(mqtt_global::topic, MQTT::QOS2, messageArrived));
145146

146147
MQTT::Message message = mqtt_global::default_message;
147148

@@ -168,7 +169,7 @@ template <class Client> void send_messages(Client &client, char *clientID, bool
168169
// sprintf(buf, "QoS 2 %s\n", clientID);
169170
// message.qos = MQTT::QOS2;
170171
// message.payloadlen = strlen(buf)+1;
171-
// TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, client.publish(topic, message));
172+
// TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, client.publish(mqtt_global::topic, message));
172173
// while (arrivedcount < 3)
173174
// client.yield(100);
174175

@@ -199,17 +200,17 @@ template <class Client> void send_messages_sn(Client &client, char *clientID) {
199200
client.yield(10);
200201

201202
// QoS 1
202-
// MQTTSN::Message message;
203-
// char buf[100];
204-
// sprintf(buf, "QoS 1 %s\n", clientID);
205-
// message.qos = MQTTSN::QOS0;
206-
// message.retained = false;
207-
// message.dup = false;
208-
// message.payload = (void*)buf;
209-
// message.payloadlen = strlen(buf)+1;
210-
// TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, client.publish(topic, message));
211-
// while (arrivedcountSN < 2)
212-
// client.yield(10);
203+
MQTTSN::Message message;
204+
char buf[100];
205+
sprintf(buf, "QoS 1 %s\n", clientID);
206+
message.qos = MQTTSN::QOS0;
207+
message.retained = false;
208+
message.dup = false;
209+
message.payload = (void*)buf;
210+
message.payloadlen = strlen(buf)+1;
211+
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, client.publish(topic, message));
212+
while (arrivedcountSN < 2)
213+
client.yield(10);
213214

214215
// // QoS 2
215216
// sprintf(buf, "QoS 2 %s\n", clientID);

0 commit comments

Comments
 (0)