Commit d0f87d58 authored by Ian Craggs's avatar Ian Craggs

MQTT V5 async tests for shared subs, subs options and request response #470 471 487

parent 7dc676e5
...@@ -3073,7 +3073,8 @@ int MQTTAsync_subscribeMany(MQTTAsync handle, int count, char* const* topic, int ...@@ -3073,7 +3073,8 @@ int MQTTAsync_subscribeMany(MQTTAsync handle, int count, char* const* topic, int
rc = MQTTASYNC_NO_MORE_MSGIDS; rc = MQTTASYNC_NO_MORE_MSGIDS;
goto exit; goto exit;
} }
if (m->c->MQTTVersion >= MQTTVERSION_5 && count > 1 && count != response->subscribe_options_count) if (m->c->MQTTVersion >= MQTTVERSION_5 && count > 1 && (count != response->subscribe_options_count
&& response->subscribe_options_count != 0))
{ {
rc = MQTTASYNC_BAD_MQTT_OPTIONS; rc = MQTTASYNC_BAD_MQTT_OPTIONS;
goto exit; goto exit;
...@@ -3099,8 +3100,17 @@ int MQTTAsync_subscribeMany(MQTTAsync handle, int count, char* const* topic, int ...@@ -3099,8 +3100,17 @@ int MQTTAsync_subscribeMany(MQTTAsync handle, int count, char* const* topic, int
if (count > 1) if (count > 1)
{ {
sub->command.details.sub.optlist = malloc(sizeof(MQTTSubscribe_options) * count); sub->command.details.sub.optlist = malloc(sizeof(MQTTSubscribe_options) * count);
for (i = 0; i < count; ++i) if (response->subscribe_options_count == 0)
sub->command.details.sub.optlist[i] = response->subscribe_options_list[i]; {
MQTTSubscribe_options initialized = MQTTSubscribe_options_initializer;
for (i = 0; i < count; ++i)
sub->command.details.sub.optlist[i] = initialized;
}
else
{
for (i = 0; i < count; ++i)
sub->command.details.sub.optlist[i] = response->subscribe_options_list[i];
}
} }
} }
} }
......
...@@ -672,6 +672,21 @@ ADD_TEST( ...@@ -672,6 +672,21 @@ ADD_TEST(
COMMAND "test11" "--test_no" "6" "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY} COMMAND "test11" "--test_no" "6" "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY}
) )
ADD_TEST(
NAME test11-7-request_response
COMMAND "test11" "--test_no" "7" "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY}
)
ADD_TEST(
NAME test11-8-subscribe_options
COMMAND "test11" "--test_no" "8" "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY}
)
ADD_TEST(
NAME test11-9-shared_subscriptions
COMMAND "test11" "--test_no" "9" "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY}
)
SET_TESTS_PROPERTIES( SET_TESTS_PROPERTIES(
test11-1-client_topic_aliases test11-1-client_topic_aliases
test11-2-server_topic_aliases test11-2-server_topic_aliases
...@@ -679,6 +694,9 @@ SET_TESTS_PROPERTIES( ...@@ -679,6 +694,9 @@ SET_TESTS_PROPERTIES(
test11-4-flow_control test11-4-flow_control
test11-5-error_handling test11-5-error_handling
test11-6-qos_1_2_errors test11-6-qos_1_2_errors
test11-7-request_response
test11-8-subscribe_options
test11-9-shared_subscriptions
PROPERTIES TIMEOUT 540 PROPERTIES TIMEOUT 540
) )
......
...@@ -1628,7 +1628,7 @@ struct ...@@ -1628,7 +1628,7 @@ struct
} test_shared_subscriptions_globals = } test_shared_subscriptions_globals =
{ {
"$share/share_test/#", "$share/share_test/#",
"#", "a",
0, 0,
}; };
...@@ -1756,7 +1756,7 @@ int test_shared_subscriptions(struct Options options) ...@@ -1756,7 +1756,7 @@ int test_shared_subscriptions(struct Options options)
test_shared_subscriptions_globals.messages_arrived = 0; test_shared_subscriptions_globals.messages_arrived = 0;
for (i = 0; i < 10; ++i) for (i = 0; i < 10; ++i)
{ {
response = MQTTClient_publishMessage5(c, test_subscribe_options_globals.topic, &pubmsg, &dt); response = MQTTClient_publishMessage5(c, test_shared_subscriptions_globals.topic, &pubmsg, &dt);
assert("Good rc from publish", response.reasonCode == MQTTCLIENT_SUCCESS, "rc was %d", response.reasonCode); assert("Good rc from publish", response.reasonCode == MQTTCLIENT_SUCCESS, "rc was %d", response.reasonCode);
/* should get the request */ /* should get the request */
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment