Skip to content

Commit

Permalink
Test and fixes for will message expiry interval.
Browse files Browse the repository at this point in the history
  • Loading branch information
ralight committed Jan 22, 2019
1 parent 6a59e92 commit ca3782b
Show file tree
Hide file tree
Showing 13 changed files with 113 additions and 37 deletions.
1 change: 1 addition & 0 deletions lib/mosquitto_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,7 @@ struct mosquitto_message_all{
enum mosquitto_msg_state state;
bool dup;
struct mosquitto_message msg;
uint32_t expiry_interval;
};

struct mosquitto {
Expand Down
4 changes: 2 additions & 2 deletions src/bridge.c
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ int bridge__connect(struct mosquitto_db *db, struct mosquitto *context)
if(context->bridge->notification_topic){
if(!context->bridge->initial_notification_done){
notification_payload = '0';
db__messages_easy_queue(db, context, context->bridge->notification_topic, 1, 1, &notification_payload, 1, NULL);
db__messages_easy_queue(db, context, context->bridge->notification_topic, 1, 1, &notification_payload, 1, 0, NULL);
context->bridge->initial_notification_done = true;
}

Expand All @@ -359,7 +359,7 @@ int bridge__connect(struct mosquitto_db *db, struct mosquitto *context)

if(!context->bridge->initial_notification_done){
notification_payload = '0';
db__messages_easy_queue(db, context, notification_topic, 1, 1, &notification_payload, 1, NULL);
db__messages_easy_queue(db, context, notification_topic, 1, 1, &notification_payload, 1, 0, NULL);
context->bridge->initial_notification_done = true;
}

Expand Down
1 change: 1 addition & 0 deletions src/context.c
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,7 @@ void context__send_will(struct mosquitto_db *db, struct mosquitto *ctxt)
ctxt->will->msg.payloadlen,
ctxt->will->msg.payload,
ctxt->will->msg.retain,
ctxt->will->expiry_interval,
&ctxt->will->properties);
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/database.c
Original file line number Diff line number Diff line change
Expand Up @@ -569,7 +569,7 @@ int db__messages_delete(struct mosquitto_db *db, struct mosquitto *context)
return MOSQ_ERR_SUCCESS;
}

int db__messages_easy_queue(struct mosquitto_db *db, struct mosquitto *context, const char *topic, int qos, uint32_t payloadlen, const void *payload, int retain, mosquitto_property **properties)
int db__messages_easy_queue(struct mosquitto_db *db, struct mosquitto *context, const char *topic, int qos, uint32_t payloadlen, const void *payload, int retain, uint32_t message_expiry_interval, mosquitto_property **properties)
{
struct mosquitto_msg_store *stored;
char *source_id;
Expand Down Expand Up @@ -604,7 +604,7 @@ int db__messages_easy_queue(struct mosquitto_db *db, struct mosquitto *context,
local_properties = *properties;
*properties = NULL;
}
if(db__message_store(db, source_id, 0, topic_heap, qos, payloadlen, &payload_uhpa, retain, &stored, 0, local_properties, 0)) return 1;
if(db__message_store(db, source_id, 0, topic_heap, qos, payloadlen, &payload_uhpa, retain, &stored, message_expiry_interval, local_properties, 0)) return 1;

return sub__messages_queue(db, source_id, topic_heap, qos, retain, &stored);
}
Expand Down
4 changes: 2 additions & 2 deletions src/handle_connack.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ int handle__connack(struct mosquitto_db *db, struct mosquitto *context)
return 1;
}
}
db__messages_easy_queue(db, context, context->bridge->notification_topic, 1, 1, &notification_payload, 1, NULL);
db__messages_easy_queue(db, context, context->bridge->notification_topic, 1, 1, &notification_payload, 1, 0, NULL);
}else{
notification_topic_len = strlen(context->bridge->remote_clientid)+strlen("$SYS/broker/connection//state");
notification_topic = mosquitto__malloc(sizeof(char)*(notification_topic_len+1));
Expand All @@ -80,7 +80,7 @@ int handle__connack(struct mosquitto_db *db, struct mosquitto *context)
return 1;
}
}
db__messages_easy_queue(db, context, notification_topic, 1, 1, &notification_payload, 1, NULL);
db__messages_easy_queue(db, context, notification_topic, 1, 1, &notification_payload, 1, 0, NULL);
mosquitto__free(notification_topic);
}
}
Expand Down
3 changes: 3 additions & 0 deletions src/handle_connect.c
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ int handle__connect(struct mosquitto_db *db, struct mosquitto *context)
char *will_payload = NULL, *will_topic = NULL;
char *will_topic_mount;
uint16_t will_payloadlen;
uint32_t will_expiry_interval = 0;
struct mosquitto_message_all *will_struct = NULL;
uint8_t will, will_retain, will_qos, clean_start;
uint8_t username_flag, password_flag;
Expand Down Expand Up @@ -384,6 +385,7 @@ int handle__connect(struct mosquitto_db *db, struct mosquitto *context)
if(protocol_version == PROTOCOL_VERSION_v5){
rc = property__read_all(CMD_WILL, &context->in_packet, &will_struct->properties);
if(rc) return rc;
mosquitto_property_read_int32(properties, MQTT_PROP_MESSAGE_EXPIRY_INTERVAL, &will_expiry_interval, false);
mosquitto_property_free_all(&properties); /* FIXME - TEMPORARY UNTIL PROPERTIES PROCESSED */
}
if(packet__read_string(&context->in_packet, &will_topic, &slen)){
Expand Down Expand Up @@ -736,6 +738,7 @@ int handle__connect(struct mosquitto_db *db, struct mosquitto *context)
}
context->will->msg.qos = will_qos;
context->will->msg.retain = will_retain;
context->will->expiry_interval = will_expiry_interval;
}

if(db->config->connection_messages == true){
Expand Down
4 changes: 2 additions & 2 deletions src/logging.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,10 +239,10 @@ int log__vprintf(int priority, const char *fmt, va_list va)
return MOSQ_ERR_NOMEM;
}
snprintf(st, len, "%d: %s", (int)now, s);
db__messages_easy_queue(&int_db, NULL, topic, 2, strlen(st), st, 0, NULL);
db__messages_easy_queue(&int_db, NULL, topic, 2, strlen(st), st, 0, 20, NULL);
mosquitto__free(st);
}else{
db__messages_easy_queue(&int_db, NULL, topic, 2, strlen(s), s, 0, NULL);
db__messages_easy_queue(&int_db, NULL, topic, 2, strlen(s), s, 0, 20, NULL);
}
}
mosquitto__free(s);
Expand Down
2 changes: 1 addition & 1 deletion src/mosquitto_broker_internal.h
Original file line number Diff line number Diff line change
Expand Up @@ -564,7 +564,7 @@ int db__message_update(struct mosquitto *context, uint16_t mid, enum mosquitto_m
int db__message_write(struct mosquitto_db *db, struct mosquitto *context);
void db__message_dequeue_first(struct mosquitto *context);
int db__messages_delete(struct mosquitto_db *db, struct mosquitto *context);
int db__messages_easy_queue(struct mosquitto_db *db, struct mosquitto *context, const char *topic, int qos, uint32_t payloadlen, const void *payload, int retain, mosquitto_property **properties);
int db__messages_easy_queue(struct mosquitto_db *db, struct mosquitto *context, const char *topic, int qos, uint32_t payloadlen, const void *payload, int retain, uint32_t message_expiry_interval, mosquitto_property **properties);
int db__message_store(struct mosquitto_db *db, const char *source, uint16_t source_mid, char *topic, int qos, uint32_t payloadlen, mosquitto__payload_uhpa *payload, int retain, struct mosquitto_msg_store **stored, uint32_t message_expiry_interval, mosquitto_property *properties, dbid_t store_id);
int db__message_store_find(struct mosquitto *context, uint16_t mid, struct mosquitto_msg_store **stored);
void db__msg_store_add(struct mosquitto_db *db, struct mosquitto_msg_store *store);
Expand Down
54 changes: 27 additions & 27 deletions src/sys_tree.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ void sys_tree__init(struct mosquitto_db *db)

/* Set static $SYS messages */
snprintf(buf, 64, "mosquitto version %s", VERSION);
db__messages_easy_queue(db, NULL, "$SYS/broker/version", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/version", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

static void sys_tree__update_clients(struct mosquitto_db *db, char *buf)
Expand All @@ -71,12 +71,12 @@ static void sys_tree__update_clients(struct mosquitto_db *db, char *buf)
if(client_count != count_total){
client_count = count_total;
snprintf(buf, BUFLEN, "%d", client_count);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/total", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/total", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);

if(client_count > client_max){
client_max = client_count;
snprintf(buf, BUFLEN, "%d", client_max);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/maximum", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/maximum", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}
}

Expand All @@ -90,19 +90,19 @@ static void sys_tree__update_clients(struct mosquitto_db *db, char *buf)
disconnected_count = 0;
}
snprintf(buf, BUFLEN, "%d", disconnected_count);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/inactive", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/disconnected", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/inactive", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/disconnected", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}
if(connected_count != count_by_sock){
connected_count = count_by_sock;
snprintf(buf, BUFLEN, "%d", connected_count);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/active", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/connected", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/active", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/connected", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}
if(g_clients_expired != clients_expired){
clients_expired = g_clients_expired;
snprintf(buf, BUFLEN, "%d", clients_expired);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/expired", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/clients/expired", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}
}

Expand All @@ -117,13 +117,13 @@ static void sys_tree__update_memory(struct mosquitto_db *db, char *buf)
if(current_heap != value_ul){
current_heap = value_ul;
snprintf(buf, BUFLEN, "%lu", current_heap);
db__messages_easy_queue(db, NULL, "$SYS/broker/heap/current", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/heap/current", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}
value_ul =mosquitto__max_memory_used();
if(max_heap != value_ul){
max_heap = value_ul;
snprintf(buf, BUFLEN, "%lu", max_heap);
db__messages_easy_queue(db, NULL, "$SYS/broker/heap/maximum", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/heap/maximum", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}
}
#endif
Expand All @@ -135,12 +135,12 @@ static void calc_load(struct mosquitto_db *db, char *buf, const char *topic, boo
if (initial) {
new_value = *current;
snprintf(buf, BUFLEN, "%.2f", new_value);
db__messages_easy_queue(db, NULL, topic, SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, topic, SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
} else {
new_value = interval + exponent*((*current) - interval);
if(fabs(new_value - (*current)) >= 0.01){
snprintf(buf, BUFLEN, "%.2f", new_value);
db__messages_easy_queue(db, NULL, topic, SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, topic, SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}
}
(*current) = new_value;
Expand Down Expand Up @@ -218,7 +218,7 @@ void sys_tree__update(struct mosquitto_db *db, int interval, time_t start_time)
if(interval && now - interval > last_update){
uptime = now - start_time;
snprintf(buf, BUFLEN, "%d seconds", (int)uptime);
db__messages_easy_queue(db, NULL, "$SYS/broker/uptime", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/uptime", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);

sys_tree__update_clients(db, buf);
bool initial_publish = false;
Expand Down Expand Up @@ -287,26 +287,26 @@ void sys_tree__update(struct mosquitto_db *db, int interval, time_t start_time)
if(db->msg_store_count != msg_store_count){
msg_store_count = db->msg_store_count;
snprintf(buf, BUFLEN, "%d", msg_store_count);
db__messages_easy_queue(db, NULL, "$SYS/broker/messages/stored", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/store/messages/count", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/messages/stored", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/store/messages/count", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if (db->msg_store_bytes != msg_store_bytes){
msg_store_bytes = db->msg_store_bytes;
snprintf(buf, BUFLEN, "%lu", msg_store_bytes);
db__messages_easy_queue(db, NULL, "$SYS/broker/store/messages/bytes", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/store/messages/bytes", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(db->subscription_count != subscription_count){
subscription_count = db->subscription_count;
snprintf(buf, BUFLEN, "%d", subscription_count);
db__messages_easy_queue(db, NULL, "$SYS/broker/subscriptions/count", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/subscriptions/count", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(db->retained_count != retained_count){
retained_count = db->retained_count;
snprintf(buf, BUFLEN, "%d", retained_count);
db__messages_easy_queue(db, NULL, "$SYS/broker/retained messages/count", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/retained messages/count", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

#ifdef REAL_WITH_MEMORY_TRACKING
Expand All @@ -316,55 +316,55 @@ void sys_tree__update(struct mosquitto_db *db, int interval, time_t start_time)
if(msgs_received != g_msgs_received){
msgs_received = g_msgs_received;
snprintf(buf, BUFLEN, "%lu", msgs_received);
db__messages_easy_queue(db, NULL, "$SYS/broker/messages/received", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/messages/received", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(msgs_sent != g_msgs_sent){
msgs_sent = g_msgs_sent;
snprintf(buf, BUFLEN, "%lu", msgs_sent);
db__messages_easy_queue(db, NULL, "$SYS/broker/messages/sent", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/messages/sent", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(publish_dropped != g_msgs_dropped){
publish_dropped = g_msgs_dropped;
snprintf(buf, BUFLEN, "%lu", publish_dropped);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/messages/dropped", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/messages/dropped", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(pub_msgs_received != g_pub_msgs_received){
pub_msgs_received = g_pub_msgs_received;
snprintf(buf, BUFLEN, "%lu", pub_msgs_received);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/messages/received", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/messages/received", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(pub_msgs_sent != g_pub_msgs_sent){
pub_msgs_sent = g_pub_msgs_sent;
snprintf(buf, BUFLEN, "%lu", pub_msgs_sent);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/messages/sent", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/messages/sent", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(bytes_received != g_bytes_received){
bytes_received = g_bytes_received;
snprintf(buf, BUFLEN, "%llu", bytes_received);
db__messages_easy_queue(db, NULL, "$SYS/broker/bytes/received", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/bytes/received", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(bytes_sent != g_bytes_sent){
bytes_sent = g_bytes_sent;
snprintf(buf, BUFLEN, "%llu", bytes_sent);
db__messages_easy_queue(db, NULL, "$SYS/broker/bytes/sent", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/bytes/sent", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(pub_bytes_received != g_pub_bytes_received){
pub_bytes_received = g_pub_bytes_received;
snprintf(buf, BUFLEN, "%llu", pub_bytes_received);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/bytes/received", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/bytes/received", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

if(pub_bytes_sent != g_pub_bytes_sent){
pub_bytes_sent = g_pub_bytes_sent;
snprintf(buf, BUFLEN, "%llu", pub_bytes_sent);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/bytes/sent", SYS_TREE_QOS, strlen(buf), buf, 1, NULL);
db__messages_easy_queue(db, NULL, "$SYS/broker/publish/bytes/sent", SYS_TREE_QOS, strlen(buf), buf, 1, 60, NULL);
}

last_update = mosquitto_time();
Expand Down
65 changes: 65 additions & 0 deletions test/broker/02-subpub-qos1-message-expiry-will.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#!/usr/bin/env python

# Test whether the broker reduces the message expiry interval when republishing a will.
# MQTT v5

# Client connects with clean session set false, subscribes with qos=1, then disconnects
# Helper publishes two messages, one with a short expiry and one with a long expiry
# We wait until the short expiry will have expired but the long one not.
# Client reconnects, expects delivery of the long expiry message with a reduced
# expiry interval property.

from mosq_test_helper import *

rc = 1
mid = 53
keepalive = 60
connect_packet = mosq_test.gen_connect("subpub-qos0-test", keepalive=keepalive, proto_ver=5, clean_session=False)
connack1_packet = mosq_test.gen_connack(rc=0, proto_ver=5)
connack2_packet = mosq_test.gen_connack(rc=0, proto_ver=5, flags=1)

subscribe_packet = mosq_test.gen_subscribe(mid, "subpub/qos1", 1, proto_ver=5)
suback_packet = mosq_test.gen_suback(mid, 1, proto_ver=5)


props = mqtt5_props.gen_uint32_prop(mqtt5_props.PROP_MESSAGE_EXPIRY_INTERVAL, 10)
helper_connect = mosq_test.gen_connect("helper", proto_ver=5, will_topic="subpub/qos1", will_qos=1, will_payload="message", will_properties=props, keepalive=2)
helper_connack = mosq_test.gen_connack(rc=0, proto_ver=5)

#mid=2
props = mqtt5_props.gen_uint32_prop(mqtt5_props.PROP_MESSAGE_EXPIRY_INTERVAL, 10)
publish2s_packet = mosq_test.gen_publish("subpub/qos1", mid=mid, qos=1, payload="message2", proto_ver=5, properties=props)
puback2s_packet = mosq_test.gen_puback(mid)


port = mosq_test.get_port()
broker = mosq_test.start_broker(filename=os.path.basename(__file__), port=port)

try:
sock = mosq_test.do_client_connect(connect_packet, connack1_packet, timeout=20, port=port)
mosq_test.do_send_receive(sock, subscribe_packet, suback_packet, "suback")
sock.close()

helper = mosq_test.do_client_connect(helper_connect, helper_connack, timeout=20, port=port)

time.sleep(2)

sock = mosq_test.do_client_connect(connect_packet, connack2_packet, timeout=20, port=port)
packet = sock.recv(len(publish2s_packet))
for i in range(10, 5, -1):
props = mqtt5_props.gen_uint32_prop(mqtt5_props.PROP_MESSAGE_EXPIRY_INTERVAL, i)
publish2r_packet = mosq_test.gen_publish("subpub/qos1", mid=1, qos=1, payload="message", proto_ver=5, properties=props)
if packet == publish2r_packet:
rc = 0
break

sock.close()
finally:
broker.terminate()
broker.wait()
(stdo, stde) = broker.communicate()
if rc:
print(stde)

exit(rc)

1 change: 1 addition & 0 deletions test/broker/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ endif
./02-subpub-qos1-v5.py
./02-subpub-qos2-v5.py
./02-subpub-qos1-message-expiry.py
./02-subpub-qos1-message-expiry-will.py
./02-subpub-qos1-nolocal.py
./02-subpub-qos0-retain-as-publish.py
./02-subpub-qos0-send-retain.py
Expand Down
1 change: 1 addition & 0 deletions test/broker/ptest.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@
(1, './02-subpub-qos1-v5.py'),
(1, './02-subpub-qos2-v5.py'),
(1, './02-subpub-qos1-message-expiry.py'),
(1, './02-subpub-qos1-message-expiry-will.py'),
(1, './02-subpub-qos1-nolocal.py'),
(1, './02-subpub-qos0-retain-as-publish.py'),
(1, './02-subpub-qos0-send-retain.py'),
Expand Down
Loading

0 comments on commit ca3782b

Please sign in to comment.