aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2017-02-19 16:03:56 +0200
committerOskari Timperi <oskari.timperi@iki.fi>2017-02-19 16:03:56 +0200
commit8198f6d6beb3c8af3768236070089112c094b92e (patch)
tree7dcddfde2133850077ec8dc34bc9264fcb4e469a /test
parente6e625ed6c1300e382a36b9ebef48336a55550e9 (diff)
downloadmqtt-8198f6d6beb3c8af3768236070089112c094b92e.tar.gz
mqtt-8198f6d6beb3c8af3768236070089112c094b92e.zip
Add MqttClientSubscribeMany() and make necessary API changes
Diffstat (limited to 'test')
-rw-r--r--test/interop/overlapping_subscriptions_test.c5
-rw-r--r--test/interop/subscribe_failure_test.c2
-rw-r--r--test/interop/testclient.c41
-rw-r--r--test/interop/testclient.h6
4 files changed, 48 insertions, 6 deletions
diff --git a/test/interop/overlapping_subscriptions_test.c b/test/interop/overlapping_subscriptions_test.c
index c6e5da0..ec6f061 100644
--- a/test/interop/overlapping_subscriptions_test.c
+++ b/test/interop/overlapping_subscriptions_test.c
@@ -7,11 +7,12 @@ TEST overlapping_subscriptions_test()
{
TestClient *client;
int count;
+ const char *mywildtopics[] = { wildtopics[6], wildtopics[0] };
+ int qos[] = { 2, 1 };
client = TestClientNew("clienta");
ASSERT(TestClientConnect(client, "localhost", 1883, 60, 1));
- ASSERT(TestClientSubscribe(client, wildtopics[6], 2));
- ASSERT(TestClientSubscribe(client, wildtopics[0], 1));
+ ASSERT(TestClientSubscribeMany(client, mywildtopics, qos, 2));
ASSERT(TestClientPublish(client, 2, 0, topics[3],
"overlapping topic filters"));
ASSERT(TestClientWait(client, 1000));
diff --git a/test/interop/subscribe_failure_test.c b/test/interop/subscribe_failure_test.c
index 84d3ebc..07a0d1b 100644
--- a/test/interop/subscribe_failure_test.c
+++ b/test/interop/subscribe_failure_test.c
@@ -10,7 +10,7 @@ TEST subscribe_failure_test()
client = TestClientNew("clienta");
ASSERT(TestClientConnect(client, "localhost", 1883, 60, 1));
ASSERT_FALSE(TestClientSubscribe(client, nosubscribe_topics[0], 2));
- ASSERT_EQ(MqttSubscriptionFailure, client->subStatus);
+ ASSERT_EQ(MqttSubscriptionFailure, client->subStatus[0]);
TestClientDisconnect(client);
TestClientFree(client);
diff --git a/test/interop/testclient.c b/test/interop/testclient.c
index c27945d..8d616f6 100644
--- a/test/interop/testclient.c
+++ b/test/interop/testclient.c
@@ -14,11 +14,12 @@ static void TestClientOnConnect(MqttClient *client,
}
static void TestClientOnSubscribe(MqttClient *client, int id,
+ const char *filter,
MqttSubscriptionStatus status)
{
TestClient *testClient = (TestClient *) MqttClientGetUserData(client);
testClient->subId = id;
- testClient->subStatus = status;
+ testClient->subStatus[testClient->subCount++] = status;
}
static void TestClientOnPublish(MqttClient *client, int id)
@@ -132,6 +133,7 @@ int TestClientSubscribe(TestClient *client, const char *topicFilter, int qos)
int id = MqttClientSubscribe(client->client, topicFilter, qos);
client->subId = -1;
+ client->subCount = 0;
while (MqttClientRunOnce(client->client, -1) != -1)
{
@@ -147,7 +149,42 @@ int TestClientSubscribe(TestClient *client, const char *topicFilter, int qos)
}
}
- return client->subStatus != MqttSubscriptionFailure;
+ return client->subStatus[0] != MqttSubscriptionFailure;
+}
+
+int TestClientSubscribeMany(TestClient *client, const char **topicFilter,
+ int *qos, size_t count)
+{
+ int id = MqttClientSubscribeMany(client->client, topicFilter, qos, count);
+ int fail = 0, i;
+
+ client->subId = -1;
+ client->subCount = 0;
+
+ while (MqttClientRunOnce(client->client, -1) != -1)
+ {
+ if (client->subId != -1)
+ {
+ if (client->subId != id)
+ {
+ printf(
+ "WARNING: subscription id mismatch: expected %d, got %d\n",
+ id, client->subId);
+ }
+ break;
+ }
+ }
+
+ for (i = 0; i < client->subCount; ++i)
+ {
+ if (client->subStatus[i] == MqttSubscriptionFailure)
+ {
+ fail = 1;
+ break;
+ }
+ }
+
+ return !fail;
}
int TestClientPublish(TestClient *client, int qos, int retain,
diff --git a/test/interop/testclient.h b/test/interop/testclient.h
index 70805c6..2aa229b 100644
--- a/test/interop/testclient.h
+++ b/test/interop/testclient.h
@@ -29,7 +29,8 @@ struct TestClient
/* OnSubscribe */
int subId;
- MqttSubscriptionStatus subStatus;
+ MqttSubscriptionStatus subStatus[16];
+ int subCount;
/* OnPublish */
int pubId;
@@ -54,6 +55,9 @@ void TestClientDisconnect(TestClient *client);
int TestClientSubscribe(TestClient *client, const char *topicFilter, int qos);
+int TestClientSubscribeMany(TestClient *client, const char **topicFilter,
+ int *qos, size_t count);
+
int TestClientPublish(TestClient *client, int qos, int retain,
const char *topic, const char *message);