MyLog(LOGA_INFO,"Starting SSL test 1 - connection to nonSSL MQTT server");
MyLog(LOGA_INFO,"Starting SSL test 1 - connection to nonSSL MQTT server");
if(!(assert("Good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test1",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
MyLog(LOGA_INFO,"Starting test 2a - Mutual SSL authentication");
MyLog(LOGA_INFO,"Starting test 2a - Mutual SSL authentication");
if(!(assert("Good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test2a",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
assert("good rc from create",rc==MQTTASYNC_SUCCESS,"rc was %d\n",rc);
if(rc!=MQTTASYNC_SUCCESS)
gotoexit;
gotoexit;
tc.client=c;
tc.client=c;
...
@@ -628,14 +689,16 @@ int test2a(struct Options options)
...
@@ -628,14 +689,16 @@ int test2a(struct Options options)
opts.cleansession=1;
opts.cleansession=1;
opts.username="testuser";
opts.username="testuser";
opts.password="testpassword";
opts.password="testpassword";
opts.will=&wopts;
opts.will->message="will message";
opts.will->qos=1;
opts.will->retained=0;
opts.will->topicName="will topic";
opts.will=NULL;
opts.onSuccess=asyncTestOnConnect;
opts.onSuccess=asyncTestOnConnect;
opts.onFailure=test2aOnConnectFailure;
opts.onFailure=test2aOnConnectFailure;
opts.context=&tc;
opts.context=&tc;
if(options.haconnections!=NULL)
{
opts.serverURIs=options.haconnections;
opts.serverURIcount=options.hacount;
}
opts.ssl=&sslopts;
opts.ssl=&sslopts;
if(options.server_key_file!=NULL)
if(options.server_key_file!=NULL)
...
@@ -646,12 +709,24 @@ int test2a(struct Options options)
...
@@ -646,12 +709,24 @@ int test2a(struct Options options)
//opts.ssl->enabledCipherSuites = "DEFAULT";
//opts.ssl->enabledCipherSuites = "DEFAULT";
//opts.ssl->enabledServerCertAuth = 1;
//opts.ssl->enabledServerCertAuth = 1;
if(!(assert("Good rc from setCallbacks",(rc=MQTTAsync_setCallbacks(c,&tc,NULL,asyncTestMessageArrived,asyncTestOnDeliveryComplete))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
@@ -713,21 +787,30 @@ int test2b(struct Options options)
...
@@ -713,21 +787,30 @@ int test2b(struct Options options)
LOGA_INFO,
LOGA_INFO,
"Starting test 2b - connection to SSL MQTT server with clientauth=req but server does not have client cert");
"Starting test 2b - connection to SSL MQTT server with clientauth=req but server does not have client cert");
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test2b",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
"Starting test 2c - connection to SSL MQTT server, server auth enabled but unknown cert");
"Starting test 2c - connection to SSL MQTT server, server auth enabled but unknown cert");
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test2c",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
MyLog(LOGA_INFO,"Starting test 3a - Server authentication");
MyLog(LOGA_INFO,"Starting test 3a - Server authentication");
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test3a",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
assert("Good rc from setCallbacks",rc==MQTTASYNC_SUCCESS,"rc was %d",rc);
if(!(assert("Good rc from setCallbacks",(rc=MQTTAsync_setCallbacks(c,&tc,NULL,asyncTestMessageArrived,asyncTestOnDeliveryComplete))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
MyLog(LOGA_DEBUG,"Connecting");
rc=MQTTAsync_connect(c,&opts);
assert("Good rc from connect",rc==MQTTASYNC_SUCCESS,"rc was %d",rc);
if(rc!=MQTTASYNC_SUCCESS)
gotoexit;
gotoexit;
MyLog(LOGA_DEBUG,"Connecting");
while(!tc.subscribed&&!tc.testFinished)
#if defined(WIN32)
Sleep(100);
#else
usleep(10000L);
#endif
if(!(assert("Good rc from connect",(rc=MQTTAsync_connect(c,&opts))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
MyLog(LOGA_INFO,"Starting test 3b - connection to SSL MQTT server with clientauth=opt but client does not have server cert");
MyLog(
LOGA_INFO,
"Starting test 3b - connection to SSL MQTT server with clientauth=opt but client does not have server cert");
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test3b",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
MyLog(LOGA_INFO,"Starting test 4 - accept invalid server certificates");
MyLog(LOGA_INFO,"Starting test 4 - accept invalid server certificates");
if(!(assert("Good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test4",MQTTCLIENT_PERSISTENCE_NONE,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
@@ -1072,14 +1208,16 @@ int test4(struct Options options)
...
@@ -1072,14 +1208,16 @@ int test4(struct Options options)
opts.cleansession=1;
opts.cleansession=1;
opts.username="testuser";
opts.username="testuser";
opts.password="testpassword";
opts.password="testpassword";
opts.will=&wopts;
opts.will->message="will message";
opts.will->qos=1;
opts.will->retained=0;
opts.will->topicName="will topic";
opts.will=NULL;
opts.onSuccess=asyncTestOnConnect;
opts.onSuccess=asyncTestOnConnect;
opts.onFailure=test4OnConnectFailure;
opts.onFailure=test4OnConnectFailure;
opts.context=&tc;
opts.context=&tc;
if(options.haconnections!=NULL)
{
opts.serverURIs=options.haconnections;
opts.serverURIcount=options.hacount;
}
opts.ssl=&sslopts;
opts.ssl=&sslopts;
//if (options.server_key_file != NULL) opts.ssl->trustStore = options.server_key_file; /*file of certificates trusted by client*/
//if (options.server_key_file != NULL) opts.ssl->trustStore = options.server_key_file; /*file of certificates trusted by client*/
...
@@ -1088,27 +1226,55 @@ int test4(struct Options options)
...
@@ -1088,27 +1226,55 @@ int test4(struct Options options)
//opts.ssl->enabledCipherSuites = "DEFAULT";
//opts.ssl->enabledCipherSuites = "DEFAULT";
opts.ssl->enableServerCertAuth=0;
opts.ssl->enableServerCertAuth=0;
if(!(assert("Good rc from setCallbacks",(rc=MQTTAsync_setCallbacks(c,&tc,NULL,asyncTestMessageArrived,asyncTestOnDeliveryComplete))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
MyLog(LOGA_INFO,"Starting SSL test 5a - Anonymous ciphers - server authentication disabled");
MyLog(LOGA_INFO,
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test5a",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
"Starting SSL test 5a - Anonymous ciphers - server authentication disabled");
assert("good rc from create",rc==MQTTASYNC_SUCCESS,"rc was %d\n",rc);
if(rc!=MQTTASYNC_SUCCESS)
gotoexit;
gotoexit;
tc.client=c;
tc.client=c;
sprintf(tc.clientid,"%s",testname);
sprintf(tc.clientid,"%s",testname);
sprintf(tc.topic,"C client SSL test5a");
sprintf(tc.topic,"C client SSL test5a");
...
@@ -1169,14 +1340,16 @@ int test5a(struct Options options)
...
@@ -1169,14 +1340,16 @@ int test5a(struct Options options)
opts.cleansession=1;
opts.cleansession=1;
opts.username="testuser";
opts.username="testuser";
opts.password="testpassword";
opts.password="testpassword";
opts.will=&wopts;
opts.will->message="will message";
opts.will->qos=1;
opts.will->retained=0;
opts.will->topicName="will topic";
opts.will=NULL;
opts.onSuccess=asyncTestOnConnect;
opts.onSuccess=asyncTestOnConnect;
opts.onFailure=test5aOnConnectFailure;
opts.onFailure=test5aOnConnectFailure;
opts.context=&tc;
opts.context=&tc;
if(options.haconnections!=NULL)
{
opts.serverURIs=options.haconnections;
opts.serverURIcount=options.hacount;
}
opts.ssl=&sslopts;
opts.ssl=&sslopts;
//opts.ssl->trustStore = /*file of certificates trusted by client*/
//opts.ssl->trustStore = /*file of certificates trusted by client*/
...
@@ -1185,14 +1358,45 @@ int test5a(struct Options options)
...
@@ -1185,14 +1358,45 @@ int test5a(struct Options options)
opts.ssl->enabledCipherSuites="aNULL";
opts.ssl->enabledCipherSuites="aNULL";
opts.ssl->enableServerCertAuth=0;
opts.ssl->enableServerCertAuth=0;
if(!(assert("Good rc from setCallbacks",(rc=MQTTAsync_setCallbacks(c,&tc,NULL,asyncTestMessageArrived,asyncTestOnDeliveryComplete))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
"Starting SSL test 5b - Anonymous ciphers - server authentication enabled");
"Starting SSL test 5b - Anonymous ciphers - server authentication enabled");
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test5b",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
MyLog(LOGA_INFO,"Starting SSL test 5c - Anonymous ciphers - client not using anonymous cipher");
MyLog(LOGA_INFO,
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"test5c",MQTTCLIENT_PERSISTENCE_DEFAULT,persistenceStore))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
"Starting SSL test 5c - Anonymous ciphers - client not using anonymous cipher");
sprintf(tc[i].topic,"sslasync test6 topic num %d",i);
sprintf(tc[i].topic,"sslasync test6 topic num %d",i);
if(!(assert("good rc from create",(rc=MQTTAsync_create(&(tc[i].client),options.connection,tc[i].clientid,MQTTCLIENT_PERSISTENCE_NONE,NULL))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
assert("Good rc from setCallbacks",rc==MQTTASYNC_SUCCESS,"rc was %d",rc);
if(!(assert("Good rc from setCallbacks",(rc=MQTTAsync_setCallbacks(tc[i].client,&tc[i],NULL,asyncTestMessageArrived,NULL))==MQTTASYNC_SUCCESS,"rc was %d",rc)))
gotoexit;
opts.keepAliveInterval=20;
opts.keepAliveInterval=20;
opts.cleansession=1;
opts.cleansession=1;
opts.username="testuser";
opts.username="testuser";
opts.password="testpassword";
opts.password="testpassword";
opts.will=&wopts;
opts.will->message="will message";
opts.will->qos=1;
opts.will->retained=0;
opts.will->topicName="will topic";
opts.onSuccess=asyncTestOnConnect;
opts.onSuccess=asyncTestOnConnect;
opts.onFailure=test6OnConnectFailure;
opts.onFailure=test6OnConnectFailure;
opts.context=&tc[i];
opts.context=&tc[i];
if(options.haconnections!=NULL)
{
opts.serverURIs=options.haconnections;
opts.serverURIcount=options.hacount;
}
opts.ssl=&sslopts;
opts.ssl=&sslopts;
if(options.server_key_file!=NULL)
if(options.server_key_file!=NULL)
...
@@ -1482,8 +1719,8 @@ int test6(struct Options options)
...
@@ -1482,8 +1719,8 @@ int test6(struct Options options)
//opts.ssl->enabledServerCertAuth = 1;
//opts.ssl->enabledServerCertAuth = 1;
MyLog(LOGA_DEBUG,"Connecting");
MyLog(LOGA_DEBUG,"Connecting");
rc=MQTTAsync_connect(tc[i].client,&opts);
assert("Good rc from connect",(rc=MQTTAsync_connect(tc[i].client,&opts))==MQTTASYNC_SUCCESS,"rc was %d",rc);
assert("Good rc from connect",rc==MQTTASYNC_SUCCESS,"rc was %d",rc);
}
}
while(test6finished<num_clients)
while(test6finished<num_clients)
...
@@ -1506,13 +1743,12 @@ int test6(struct Options options)
...
@@ -1506,13 +1743,12 @@ int test6(struct Options options)
}
}
}
}
exit:
MyLog(LOGA_DEBUG,"test6: destroying clients");
MyLog(LOGA_DEBUG,"test6: destroying clients");
for(i=0;i<num_clients;++i)
for(i=0;i<num_clients;++i)
MQTTAsync_destroy(&tc[i].client);
MQTTAsync_destroy(&tc[i].client);
MyLog(LOGA_INFO,"%s: test %s. %d tests run, %d failures.",
exit:MyLog(LOGA_INFO,"%s: test %s. %d tests run, %d failures.",
MyLog(LOGA_INFO,"Starting test 7 - big messages");
MyLog(LOGA_INFO,"Starting test 7 - big messages");
if(!(assert("good rc from create",(rc=MQTTAsync_create(&c,options.connection,"async_test_7",MQTTCLIENT_PERSISTENCE_NONE,NULL))==MQTTASYNC_SUCCESS,"rc was %d\n",rc)))
gotoexit;
if(!(assert("Good rc from setCallbacks",(rc=MQTTAsync_setCallbacks(c,&tc,NULL,test7MessageArrived,NULL))==MQTTASYNC_SUCCESS,"rc was %d",rc)))