aboutsummaryrefslogtreecommitdiff
path: root/test/interop/testclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/interop/testclient.c')
-rw-r--r--test/interop/testclient.c41
1 files changed, 39 insertions, 2 deletions
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,