From b880d34f4bde0ecc41c62d775da7967eb9c73995 Mon Sep 17 00:00:00 2001 From: Ian Craggs Date: Mon, 20 Mar 2017 22:47:28 +0000 Subject: [PATCH] Windows CMake build additions and corrections --- CMakeLists.txt | 1 + cbuild.bat | 16 ++ src/CMakeLists.txt | 17 +- src/Socket.c | 21 +- src/Socket.h | 13 +- src/Thread.c | 5 +- src/samples/CMakeLists.txt | 4 + src/samples/MQTTClient_publish_async.c | 9 +- src/samples/paho_c_pub.c | 50 ++--- src/samples/paho_cs_pub.c | 45 ++-- test/CMakeLists.txt | 6 +- test/test1.c | 84 ++++--- test/test2.c | 66 +++--- test/test3.c | 99 ++++----- test/test4.c | 116 +++++----- test/test5.c | 26 +-- test/test6.c | 12 +- test/test8.c | 85 ++++---- test/test9.c | 291 ++++++++++++------------- 19 files changed, 467 insertions(+), 499 deletions(-) create mode 100644 cbuild.bat diff --git a/CMakeLists.txt b/CMakeLists.txt index c5872e5a..a7f6b557 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ PROJECT("paho" C) CMAKE_MINIMUM_REQUIRED(VERSION 3.0) MESSAGE(STATUS "CMake version: " ${CMAKE_VERSION}) +MESSAGE(STATUS "CMake system name: " ${CMAKE_SYSTEM_NAME}) ## build settings SET(PAHO_VERSION_MAJOR 1) diff --git a/cbuild.bat b/cbuild.bat new file mode 100644 index 00000000..cce02926 --- /dev/null +++ b/cbuild.bat @@ -0,0 +1,16 @@ + +setlocal + +mkdir build.paho + +cd build.paho + +call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 + +cmake -G "NMake Makefiles" -DPAHO_WITH_SSL=FALSE -DPAHO_BUILD_DOCUMENTATION=FALSE -DPAHO_BUILD_SAMPLES=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=TRUE .. + +nmake + +cd .. + +endlocal diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index d2b8ecaf..b35db3fd 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -28,6 +28,10 @@ CONFIGURE_FILE(VersionInfo.h.in @ONLY ) +IF (WIN32) + ADD_DEFINITIONS(/DCMAKE_BUILD /D_CRT_SECURE_NO_DEPRECATE) +ENDIF() + IF (PAHO_WITH_SSL) SET(OPENSSL_LIB_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL libraries") SET(OPENSSL_INC_SEARCH_PATH "" CACHE PATH "Directory containing OpenSSL includes") @@ -95,7 +99,12 @@ SET_PROPERTY(TARGET common_obj PROPERTY POSITION_INDEPENDENT_CODE ON) IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") SET_PROPERTY(TARGET common_obj PROPERTY COMPILE_DEFINITIONS "OSX=1") -ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") +ENDIF () +## IF (${CMAKE_SYSTEM_NAME} STREQUAL "Windows") +## MESSAGE(STATUS "Setting secure_no_warnings") +## SET_PROPERTY(TARGET common_obj PROPERTY +## COMPILE_DEFINITIONS "_CRT_SECURE_NO_DEPRECATE") +## ENDIF () ADD_EXECUTABLE(MQTTVersion MQTTVersion.c) @@ -165,9 +174,11 @@ IF (PAHO_WITH_SSL) SET_PROPERTY(TARGET common_ssl_obj PROPERTY POSITION_INDEPENDENT_CODE ON) IF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;OSX=1") - ELSE (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + ELSIF (WIN32) + SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1;_CRT_SECURE_NO_WARNINGS") + ELSE () SET_PROPERTY(TARGET common_ssl_obj PROPERTY COMPILE_DEFINITIONS "OPENSSL=1") - ENDIF (${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + ENDIF () ADD_LIBRARY(paho-mqtt3cs SHARED $ MQTTClient.c SSLSocket.c) ADD_LIBRARY(paho-mqtt3as SHARED $ MQTTAsync.c SSLSocket.c) diff --git a/src/Socket.c b/src/Socket.c index a7d9f9af..9273bbf0 100644 --- a/src/Socket.c +++ b/src/Socket.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -106,7 +106,7 @@ int Socket_error(char* aString, int sock) if (errno != EINTR && errno != EAGAIN && errno != EINPROGRESS && errno != EWOULDBLOCK) { if (strcmp(aString, "shutdown") != 0 || (errno != ENOTCONN && errno != ECONNRESET)) - Log(TRACE_MINIMUM, -1, "Socket error %s in %s for socket %d", strerror(errno), aString, sock); + Log(TRACE_MINIMUM, -1, "Socket error %s(%d) in %s for socket %d", strerror(errno), errno, aString, sock); } FUNC_EXIT_RC(errno); return errno; @@ -499,7 +499,7 @@ exit: /** * Add a socket to the pending write list, so that it is checked for writing in select. This is used * in connect processing when the TCP connect is incomplete, as we need to check the socket for both - * ready to read and write states. + * ready to read and write states. * @param socket the socket to add */ void Socket_addPendingWrite(int socket) @@ -719,13 +719,13 @@ int Socket_continueWrite(int socket) FUNC_ENTRY; pw = SocketBuffer_getWrite(socket); - + #if defined(OPENSSL) if (pw->ssl) { rc = SSLSocket_continueWrite(pw); goto exit; - } + } #endif for (i = 0; i < pw->count; ++i) @@ -757,7 +757,7 @@ int Socket_continueWrite(int socket) if (pw->frees[i]) free(pw->iovecs[i].iov_base); } - Log(TRACE_MIN, -1, "ContinueWrite: partial write now complete for socket %d", socket); + Log(TRACE_MIN, -1, "ContinueWrite: partial write now complete for socket %d", socket); } else Log(TRACE_MIN, -1, "ContinueWrite wrote +%lu bytes on socket %d", bytes, socket); @@ -795,7 +795,7 @@ int Socket_continueWrites(fd_set* pwset) ListNextElement(s.write_pending, &curpending); } curpending = s.write_pending->current; - + if (writecomplete) (*writecomplete)(socket); } @@ -828,7 +828,7 @@ char* Socket_getaddrname(struct sockaddr* sa, int sock) #if defined(WIN32) || defined(WIN64) int buflen = ADDRLEN*2; wchar_t buf[ADDRLEN*2]; - if (WSAAddressToString(sa, sizeof(struct sockaddr_in6), NULL, buf, (LPDWORD)&buflen) == SOCKET_ERROR) + if (WSAAddressToStringW(sa, sizeof(struct sockaddr_in6), NULL, buf, (LPDWORD)&buflen) == SOCKET_ERROR) Socket_error("WSAAddressToString", sock); else wcstombs(addr_string, buf, sizeof(addr_string)); @@ -874,4 +874,3 @@ int main(int argc, char *argv[]) } #endif - diff --git a/src/Socket.h b/src/Socket.h index e1ab2912..b5485960 100644 --- a/src/Socket.h +++ b/src/Socket.h @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -25,12 +25,19 @@ #include #define MAXHOSTNAMELEN 256 #if !defined(SSLSOCKET_H) +#undef EAGAIN #define EAGAIN WSAEWOULDBLOCK +#undef EINTR #define EINTR WSAEINTR +#undef EINPROGRESS #define EINPROGRESS WSAEINPROGRESS +#undef EWOULDBLOCK #define EWOULDBLOCK WSAEWOULDBLOCK +#undef ENOTCONN #define ENOTCONN WSAENOTCONN +#undef ECONNRESET #define ECONNRESET WSAECONNRESET +#undef ETIMEDOUT #define ETIMEDOUT WAIT_TIMEOUT #endif #define ioctl ioctlsocket diff --git a/src/Thread.c b/src/Thread.c index e1c879ac..c93ced70 100644 --- a/src/Thread.c +++ b/src/Thread.c @@ -90,6 +90,8 @@ mutex_type Thread_create_mutex(void) FUNC_ENTRY; #if defined(WIN32) || defined(WIN64) mutex = CreateMutex(NULL, 0, NULL); + if (mutex == NULL) + rc = GetLastError(); #else mutex = malloc(sizeof(pthread_mutex_t)); rc = pthread_mutex_init(mutex, NULL); @@ -100,8 +102,7 @@ mutex_type Thread_create_mutex(void) /** - * Lock a mutex which has already been created, block until ready - * @param mutex the mutex + * Lock a mutex which has alrea * @return completion code, 0 is success */ int Thread_lock_mutex(mutex_type mutex) diff --git a/src/samples/CMakeLists.txt b/src/samples/CMakeLists.txt index 6be74516..fbf8b18f 100644 --- a/src/samples/CMakeLists.txt +++ b/src/samples/CMakeLists.txt @@ -24,6 +24,10 @@ INCLUDE_DIRECTORIES( ${CMAKE_BINARY_DIR} ) +IF (WIN32) + ADD_DEFINITIONS(/DCMAKE_BUILD /D_CRT_SECURE_NO_DEPRECATE) +ENDIF() + # sample files c ADD_EXECUTABLE(paho_c_pub paho_c_pub.c) ADD_EXECUTABLE(paho_c_sub paho_c_sub.c) diff --git a/src/samples/MQTTClient_publish_async.c b/src/samples/MQTTClient_publish_async.c index 49046e92..18eac476 100644 --- a/src/samples/MQTTClient_publish_async.c +++ b/src/samples/MQTTClient_publish_async.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -81,7 +81,7 @@ int main(int argc, char* argv[]) exit(EXIT_FAILURE); } pubmsg.payload = PAYLOAD; - pubmsg.payloadlen = strlen(PAYLOAD); + pubmsg.payloadlen = (int)strlen(PAYLOAD); pubmsg.qos = QOS; pubmsg.retained = 0; deliveredtoken = 0; @@ -94,4 +94,3 @@ int main(int argc, char* argv[]) MQTTClient_destroy(&client); return rc; } - diff --git a/src/samples/paho_c_pub.c b/src/samples/paho_c_pub.c index 3d54ed04..5cdf9e2b 100644 --- a/src/samples/paho_c_pub.c +++ b/src/samples/paho_c_pub.c @@ -3,27 +3,27 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Ian Craggs - initial contribution * Guilherme Maciel Ferreira - add keep alive option *******************************************************************************/ - + /* stdin publisher - + compulsory parameters: - + --topic topic to publish on - + defaulted parameters: - + --host localhost --port 1883 --qos 0 @@ -31,10 +31,10 @@ --clientid stdin-publisher-async --maxdatalen 100 --keepalive 10 - + --userid none --password none - + */ #include "MQTTAsync.h" @@ -125,7 +125,7 @@ void myconnect(MQTTAsync* client); void onConnectFailure(void* context, MQTTAsync_failureData* response) { printf("Connect failed, rc %d\n", response ? response->code : -1); - connected = -1; + connected = -1; MQTTAsync client = (MQTTAsync)context; myconnect(client); @@ -135,8 +135,7 @@ void onConnectFailure(void* context, MQTTAsync_failureData* response) void onConnect(void* context, MQTTAsync_successData* response) { MQTTAsync client = (MQTTAsync)context; - int rc; - + printf("Connected\n"); connected = 1; } @@ -172,7 +171,7 @@ static int published = 0; void onPublishFailure(void* context, MQTTAsync_failureData* response) { printf("Publish failed, rc %d\n", response ? -1 : response->code); - published = -1; + published = -1; } @@ -223,13 +222,13 @@ int main(int argc, char** argv) if (argc < 2) usage(); - + getopts(argc, argv); - + sprintf(url, "%s:%s", opts.host, opts.port); if (opts.verbose) printf("URL is %s\n", url); - + topic = argv[1]; printf("Using topic %s\n", topic); @@ -244,13 +243,13 @@ int main(int argc, char** argv) myconnect(&client); buffer = malloc(opts.maxdatalen); - + while (!toStop) { int data_len = 0; int delim_len = 0; - - delim_len = strlen(opts.delimiter); + + delim_len = (int)strlen(opts.delimiter); do { buffer[data_len++] = getchar(); @@ -261,7 +260,7 @@ int main(int argc, char** argv) break; } } while (data_len < opts.maxdatalen); - + if (opts.verbose) printf("Publishing data of length %d\n", data_len); pub_opts.onSuccess = onPublish; @@ -272,9 +271,9 @@ int main(int argc, char** argv) } while (rc != MQTTASYNC_SUCCESS); } - + printf("Stopping\n"); - + free(buffer); disc_opts.onSuccess = onDisconnect; @@ -299,7 +298,7 @@ int main(int argc, char** argv) void getopts(int argc, char** argv) { int count = 2; - + while (count < argc) { if (strcmp(argv[count], "--retained") == 0) @@ -380,6 +379,5 @@ void getopts(int argc, char** argv) } count++; } - -} +} diff --git a/src/samples/paho_cs_pub.c b/src/samples/paho_cs_pub.c index db52efb5..8a4599ac 100644 --- a/src/samples/paho_cs_pub.c +++ b/src/samples/paho_cs_pub.c @@ -3,36 +3,36 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: * Ian Craggs - initial contribution *******************************************************************************/ - + /* stdin publisher - + compulsory parameters: - + --topic topic to publish on - + defaulted parameters: - + --host localhost --port 1883 --qos 0 --delimiters \n --clientid stdin_publisher --maxdatalen 100 - + --userid none --password none - + */ #include "MQTTClient.h" @@ -128,13 +128,13 @@ int main(int argc, char** argv) if (argc < 2) usage(); - + getopts(argc, argv); - + sprintf(url, "%s:%s", opts.host, opts.port); if (opts.verbose) printf("URL is %s\n", url); - + topic = argv[1]; printf("Using topic %s\n", topic); @@ -152,17 +152,17 @@ int main(int argc, char** argv) conn_opts.password = opts.password; ssl_opts.enableServerCertAuth = 0; conn_opts.ssl = &ssl_opts; - + myconnect(&client, &conn_opts); buffer = malloc(opts.maxdatalen); - + while (!toStop) { int data_len = 0; int delim_len = 0; - - delim_len = strlen(opts.delimiter); + + delim_len = (int)strlen(opts.delimiter); do { buffer[data_len++] = getchar(); @@ -173,7 +173,7 @@ int main(int argc, char** argv) break; } } while (data_len < opts.maxdatalen); - + if (opts.verbose) printf("Publishing data of length %d\n", data_len); rc = MQTTClient_publish(client, topic, data_len, buffer, opts.qos, opts.retained, NULL); @@ -185,9 +185,9 @@ int main(int argc, char** argv) if (opts.qos > 0) MQTTClient_yield(); } - + printf("Stopping\n"); - + free(buffer); MQTTClient_disconnect(client, 0); @@ -200,7 +200,7 @@ int main(int argc, char** argv) void getopts(int argc, char** argv) { int count = 2; - + while (count < argc) { if (strcmp(argv[count], "--retained") == 0) @@ -274,6 +274,5 @@ void getopts(int argc, char** argv) } count++; } - -} +} diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index b9883a54..a9c52fd3 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -6,7 +6,7 @@ SET(MQTT_SSL_HOSTNAME "localhost" CACHE STRING "Hostname of a test SSL MQTT brok SET(CERTDIR $ENV{TRAVIS_BUILD_DIR}/test/ssl ) IF (WIN32) - ADD_DEFINITIONS(/DCMAKE_BUILD) + ADD_DEFINITIONS(/DCMAKE_BUILD /D_CRT_SECURE_NO_WARNINGS) ENDIF() @@ -22,7 +22,7 @@ TARGET_LINK_LIBRARIES( IF (WIN32) ADD_CUSTOM_COMMAND( - TARGET test1 PRE_BUILD + TARGET test1 PRE_BUILD COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_SOURCE_DIR}/dll-copy.cmake COMMENT "Copying DLLs to test directory" ) @@ -313,5 +313,3 @@ ADD_TEST( NAME test9-5-offline-buffering-max-buffered COMMAND test9 "--test_no" "5" "--connection" ${MQTT_TEST_BROKER} "--proxy_connection" ${MQTT_TEST_PROXY} ) - - diff --git a/test/test1.c b/test/test1.c index c7f1082a..bc173857 100644 --- a/test/test1.c +++ b/test/test1.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -34,21 +34,13 @@ #include #if !defined(_WINDOWS) - #include - #include - #include - #include + #include + #include + #include + #include #else -#include -#include -#define MAXHOSTNAMELEN 256 -#define EAGAIN WSAEWOULDBLOCK -#define EINTR WSAEINTR -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ENOTCONN WSAENOTCONN -#define ECONNRESET WSAECONNRESET -#define setenv(a, b, c) _putenv_s(a, b) + #include + #define setenv(a, b, c) _putenv_s(a, b) #endif #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) @@ -84,7 +76,7 @@ struct Options void getopts(int argc, char** argv) { int count = 1; - + while (count < argc) { if (strcmp(argv[count], "--test_no") == 0) @@ -171,7 +163,7 @@ void MyLog(int LOGA_level, char* format, ...) if (LOGA_level == LOGA_DEBUG && options.verbose == 0) return; - + ftime(&ts); timeinfo = localtime(&ts.time); strftime(msg_buf, 80, "%Y%m%d %H%M%S", timeinfo); @@ -259,11 +251,11 @@ void write_test_result(void) { long duration = elapsed(global_start_time); - fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); + fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); if (cur_output != output) { fprintf(xml, "%s", output); - cur_output = output; + cur_output = output; } fprintf(xml, "\n"); } @@ -283,11 +275,11 @@ void myassert(char* filename, int lineno, char* description, int value, char* fo vprintf(format, args); va_end(args); - cur_output += sprintf(cur_output, "file %s, line %d \n", + cur_output += sprintf(cur_output, "file %s, line %d \n", description, filename, lineno); } else - MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); + MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); } @@ -371,9 +363,9 @@ int test1(struct Options options) global_start_time = start_clock(); failures = 0; MyLog(LOGA_INFO, "Starting test 1 - single threaded client using receive"); - + rc = MQTTClient_create(&c, options.connection, "single_threaded_test", - MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); + MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTCLIENT_SUCCESS, "rc was %d\n", rc); if (rc != MQTTCLIENT_SUCCESS) { @@ -485,7 +477,7 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) for (i = 1; i <= iterations; ++i) { if (i % 10 == 0) - rc = MQTTClient_publish(c, test_topic, test2_pubmsg.payloadlen, test2_pubmsg.payload, + rc = MQTTClient_publish(c, test_topic, test2_pubmsg.payloadlen, test2_pubmsg.payload, test2_pubmsg.qos, test2_pubmsg.retained, NULL); else rc = MQTTClient_publishMessage(c, test_topic, &test2_pubmsg, &dt); @@ -507,7 +499,7 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) usleep(1000000L); #endif } - assert("Message Arrived", wait_seconds > 0, + assert("Message Arrived", wait_seconds > 0, "Time out waiting for message %d\n", i ); } if (qos > 0) @@ -515,7 +507,7 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) /* MQ Telemetry can send a message to a subscriber before the server has completed the QoS 2 handshake with the publisher. For QoS 1 and 2, allow time for the final delivery complete callback before checking - that all expected callbacks have been made */ + that all expected callbacks have been made */ wait_seconds = 10; while ((test2_deliveryCompleted < iterations) && (wait_seconds-- > 0)) { @@ -526,8 +518,8 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) usleep(1000000L); #endif } - assert("All Deliveries Complete", wait_seconds > 0, - "Number of deliveryCompleted callbacks was %d\n", + assert("All Deliveries Complete", wait_seconds > 0, + "Number of deliveryCompleted callbacks was %d\n", test2_deliveryCompleted); } } @@ -645,7 +637,7 @@ int test3(struct Options options) /* authorization failure (RC = 5) */ opts.username = "Admin"; opts.password = "Admin"; - /*opts.will = &wopts; "Admin" not authorized to publish to Will topic by default + /*opts.will = &wopts; "Admin" not authorized to publish to Will topic by default opts.will->message = "will message"; opts.will->qos = 1; opts.will->retained = 0; @@ -694,7 +686,7 @@ int test4_run(int qos) int count = 3; int i, rc; - failures = 0; + failures = 0; MyLog(LOGA_INFO, "Starting test 4 - persistence, qos %d", qos); MQTTClient_create(&c, options.connection, "xrctest1_test_4", MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); @@ -724,7 +716,7 @@ int test4_run(int qos) assert("Good rc from connect", rc == MQTTCLIENT_SUCCESS, "rc was %d", rc); return -1; } - + /* subscribe so we can get messages back */ rc = MQTTClient_subscribe(c, topic, subsqos); assert("Good rc from subscribe", rc == MQTTCLIENT_SUCCESS, "rc was %d", rc); @@ -804,7 +796,7 @@ int test4_run(int qos) MQTTClient_free(topicName); } } - + MQTTClient_yield(); /* allow any unfinished protocol exchanges to finish */ rc = MQTTClient_getPendingDeliveryTokens(c, &tokens); @@ -829,11 +821,11 @@ int test4(struct Options options) fprintf(xml, "\n", elapsed(global_start_time) / 1000); + fprintf(xml, " time=\"%ld\" >\n", elapsed(global_start_time) / 1000); if (cur_output != output) { fprintf(xml, "%s", output); - cur_output = output; + cur_output = output; } fprintf(xml, "\n"); return rc; @@ -954,13 +946,13 @@ int test6(struct Options options) MQTTClient_willOptions wopts = MQTTClient_willOptions_initializer; MQTTClient_connectOptions opts2 = MQTTClient_connectOptions_initializer; int rc, count; - char* mqttsas_topic = "MQTTSAS topic"; + char* mqttsas_topic = "MQTTSAS topic"; failures = 0; MyLog(LOGA_INFO, "Starting test 6 - connectionLost and will messages"); fprintf(xml, "\n", (int)(ARRAY_SIZE(tests) - 1)); @@ -1077,13 +1069,13 @@ int main(int argc, char** argv) else rc = tests[options.test_no](options); /* run just the selected test */ } - + if (rc == 0) MyLog(LOGA_INFO, "verdict pass"); else MyLog(LOGA_INFO, "verdict fail"); fprintf(xml, "\n"); - fclose(xml); + fclose(xml); return rc; } diff --git a/test/test2.c b/test/test2.c index 293bd386..dd816e25 100644 --- a/test/test2.c +++ b/test/test2.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -27,29 +27,13 @@ #if !defined(_WINDOWS) #include - #include + #include #include - #include + #include #define WINAPI #else -#define WIN32_LEAN_AND_MEAN -#if !defined(CMAKE_BUILD) - /* - * These causes the cmake build to fail. In order to prevent affecting - * other builds, remove them only from CMAKE-related builds - */ - #include - #include -#endif // CMAKE_BUILD -#define MAXHOSTNAMELEN 256 -#define EAGAIN WSAEWOULDBLOCK -#define EINTR WSAEINTR -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ENOTCONN WSAENOTCONN -#define ECONNRESET WSAECONNRESET -#define setenv(a, b, c) _putenv_s(a, b) - + #include + #define setenv(a, b, c) _putenv_s(a, b) #endif #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) @@ -83,7 +67,7 @@ struct Options void getopts(int argc, char** argv) { int count = 1; - + while (count < argc) { if (strcmp(argv[count], "--test_no") == 0) @@ -163,7 +147,7 @@ void MyLog(int LOGA_level, char* format, ...) if (LOGA_level == LOGA_DEBUG && options.verbose == 0) return; - + ftime(&ts); timeinfo = localtime(&ts.time); strftime(msg_buf, 80, "%Y%m%d %H%M%S", timeinfo); @@ -251,11 +235,11 @@ void write_test_result(void) { long duration = elapsed(global_start_time); - fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); + fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); if (cur_output != output) { fprintf(xml, "%s", output); - cur_output = output; + cur_output = output; } fprintf(xml, "\n"); } @@ -275,11 +259,11 @@ void myassert(char* filename, int lineno, char* description, int value, char* fo vprintf(format, args); va_end(args); - cur_output += sprintf(cur_output, "file %s, line %d \n", + cur_output += sprintf(cur_output, "file %s, line %d \n", description, filename, lineno); } else - MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); + MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); } @@ -351,7 +335,7 @@ struct thread_parms }; static int iterations = 50; - + thread_return_type WINAPI test1_sendAndReceive(void* n) { MQTTClient_deliveryToken dt; @@ -403,7 +387,7 @@ thread_return_type WINAPI test1_sendAndReceive(void* n) assert("Message Arrived", wait_seconds > 0, "Timed out waiting for message %d\n", i); } - + #if defined(_WINDOWS) return 0; #else @@ -424,7 +408,7 @@ int test1(struct Options options) global_start_time = start_clock(); failures = 0; MyLog(LOGA_INFO, "Starting test 1 - multiple threads using same client object"); - + rc = MQTTClient_create(&c, options.connection, "single_object, multiple threads", MQTTCLIENT_PERSISTENCE_NONE, NULL); assert("good rc from create", rc == MQTTCLIENT_SUCCESS, "rc was %d\n", rc); @@ -478,7 +462,7 @@ int test1(struct Options options) completed the QoS 2 handshake with the publisher. For QoS 1 and 2, allow time for the final delivery complete callback before checking that all expected callbacks have been made */ - + int wait_seconds = 90; while (((test1_arrivedcount < iterations*3) || (test1_deliveryCompleted < iterations*2)) && (wait_seconds-- > 0)) { @@ -570,7 +554,7 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) for (i = 1; i <= iterations; ++i) { if (i % 10 == 0) - rc = MQTTClient_publish(c, test_topic, test2_pubmsg.payloadlen, test2_pubmsg.payload, + rc = MQTTClient_publish(c, test_topic, test2_pubmsg.payloadlen, test2_pubmsg.payload, test2_pubmsg.qos, test2_pubmsg.retained, NULL); else rc = MQTTClient_publishMessage(c, test_topic, &test2_pubmsg, &dt); @@ -592,7 +576,7 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) usleep(1000000L); #endif } - assert("Message Arrived", wait_seconds > 0, + assert("Message Arrived", wait_seconds > 0, "Time out waiting for message %d\n", i ); } if (qos > 0) @@ -600,7 +584,7 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) /* MQ Telemetry can send a message to a subscriber before the server has completed the QoS 2 handshake with the publisher. For QoS 1 and 2, allow time for the final delivery complete callback before checking - that all expected callbacks have been made */ + that all expected callbacks have been made */ wait_seconds = 40; while ((test2_deliveryCompleted < iterations) && (wait_seconds-- > 0)) { @@ -611,8 +595,8 @@ void test2_sendAndReceive(MQTTClient* c, int qos, char* test_topic) usleep(1000000L); #endif } - assert("All Deliveries Complete", test2_deliveryCompleted == iterations, - "Number of deliveryCompleted callbacks was %d\n", + assert("All Deliveries Complete", test2_deliveryCompleted == iterations, + "Number of deliveryCompleted callbacks was %d\n", test2_deliveryCompleted); } } @@ -686,7 +670,7 @@ int main(int argc, char** argv) #if defined(WIN32) || defined(WIN64) deliveryCompleted_mutex = CreateMutex(NULL, 0, NULL); #endif - + xml = fopen("TEST-test2.xml", "w"); fprintf(xml, "\n", (int)(ARRAY_SIZE(tests) - 1)); @@ -705,13 +689,13 @@ int main(int argc, char** argv) else rc = tests[options.test_no](options); /* run just the selected test */ } - + if (rc == 0) MyLog(LOGA_INFO, "verdict pass"); else MyLog(LOGA_INFO, "verdict fail"); fprintf(xml, "\n"); - fclose(xml); + fclose(xml); return rc; } diff --git a/test/test3.c b/test/test3.c index 9452514d..e55b6fff 100644 --- a/test/test3.c +++ b/test/test3.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -26,19 +26,12 @@ #if !defined(_WINDOWS) #include - #include + #include #include - #include + #include #else -#include -#include +#include #define MAXHOSTNAMELEN 256 -#define EAGAIN WSAEWOULDBLOCK -#define EINTR WSAEINTR -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ENOTCONN WSAENOTCONN -#define ECONNRESET WSAECONNRESET #define snprintf _snprintf #define setenv(a, b, c) _putenv_s(a, b) #endif @@ -134,7 +127,7 @@ char* test_map[] = void getopts(int argc, char** argv) { int count = 1; - + while (count < argc) { if (strcmp(argv[count], "--help") == 0) @@ -155,7 +148,7 @@ void getopts(int argc, char** argv) } if (options.test_no == 0) options.test_no = atoi(argv[count]); - + } else usage(); @@ -273,7 +266,7 @@ void MyLog(int LOGA_level, char* format, ...) if (LOGA_level == LOGA_DEBUG && options.verbose == 0) return; - + ftime(&ts); timeinfo = localtime(&ts.time); strftime(msg_buf, 80, "%Y%m%d %H%M%S", timeinfo); @@ -363,11 +356,11 @@ void write_test_result(void) { long duration = elapsed(global_start_time); - fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); + fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); if (cur_output != output) { fprintf(xml, "%s", output); - cur_output = output; + cur_output = output; } fprintf(xml, "\n"); } @@ -387,11 +380,11 @@ int myassert(char* filename, int lineno, char* description, int value, char* for vprintf(format, args); va_end(args); - cur_output += sprintf(cur_output, "file %s, line %d \n", + cur_output += sprintf(cur_output, "file %s, line %d \n", description, filename, lineno); } else - MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); + MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); return value; } @@ -513,7 +506,7 @@ void multiThread_sendAndReceive(MQTTClient* c, int qos, char* test_topic) for (i = 1; i <= iterations; ++i) { if (i % 10 == 0) - rc = MQTTClient_publish(c, test_topic, multiThread_pubmsg.payloadlen, multiThread_pubmsg.payload, + rc = MQTTClient_publish(c, test_topic, multiThread_pubmsg.payloadlen, multiThread_pubmsg.payload, multiThread_pubmsg.qos, multiThread_pubmsg.retained, NULL); else rc = MQTTClient_publishMessage(c, test_topic, &multiThread_pubmsg, &dt); @@ -535,7 +528,7 @@ void multiThread_sendAndReceive(MQTTClient* c, int qos, char* test_topic) usleep(1000000L); #endif } - assert("Message Arrived", wait_seconds > 0, + assert("Message Arrived", wait_seconds > 0, "Time out waiting for message %d\n", i ); } if (qos > 0) @@ -543,7 +536,7 @@ void multiThread_sendAndReceive(MQTTClient* c, int qos, char* test_topic) /* MQ Telemetry can send a message to a subscriber before the server has completed the QoS 2 handshake with the publisher. For QoS 1 and 2, allow time for the final delivery complete callback before checking - that all expected callbacks have been made */ + that all expected callbacks have been made */ wait_seconds = 10; while ((multiThread_deliveryCompleted < iterations) && (wait_seconds-- > 0)) { @@ -554,8 +547,8 @@ void multiThread_sendAndReceive(MQTTClient* c, int qos, char* test_topic) usleep(1000000L); #endif } - assert("All Deliveries Complete", wait_seconds > 0, - "Number of deliveryCompleted callbacks was %d\n", + assert("All Deliveries Complete", wait_seconds > 0, + "Number of deliveryCompleted callbacks was %d\n", multiThread_deliveryCompleted); } } @@ -581,7 +574,7 @@ int test1(struct Options options) MyLog(LOGA_INFO, "Starting SSL test 1 - connection to nonSSL MQTT server"); fprintf(xml, "trustStore = options.server_key_file; /*file of certificates trusted by client*/ MyLog(LOGA_DEBUG, "Connecting"); @@ -636,7 +629,7 @@ int test2a_s(struct Options options) MyLog(LOGA_INFO, "Starting test 2a_s - Mutual SSL authentication - single threaded client using receive"); fprintf(xml, "trustStore = options.server_key_file; /*file of certificates trusted by client*/ opts.ssl->keyStore = options.client_key_file; /*file of certificate for client to present to server*/ - if (options.client_key_pass) + if (options.client_key_pass) opts.ssl->privateKeyPassword = options.client_key_pass; - if (options.client_private_key_file) + if (options.client_private_key_file) opts.ssl->privateKey = options.client_private_key_file; MyLog(LOGA_DEBUG, "Connecting"); @@ -737,12 +730,12 @@ int test2a_m(struct Options options) } opts.ssl = &sslopts; - if (options.server_key_file) + if (options.server_key_file) opts.ssl->trustStore = options.server_key_file; /*file of certificates trusted by client*/ opts.ssl->keyStore = options.client_key_file; /*file of certificate for client to present to server*/ - if (options.client_key_pass) + if (options.client_key_pass) opts.ssl->privateKeyPassword = options.client_key_pass; - if (options.client_private_key_file) + if (options.client_private_key_file) opts.ssl->privateKey = options.client_private_key_file; //opts.ssl->enabledCipherSuites = "DEFAULT"; //opts.ssl->enabledServerCertAuth = 1; @@ -802,7 +795,7 @@ int test2b(struct Options options) MyLog(LOGA_INFO, "Starting test 2b - connection to SSL MQTT server with clientauth=req but server does not have client cert"); fprintf(xml, "trustStore = options.server_key_file; /*file of certificates trusted by client*/ opts.ssl->keyStore = options.client_key_file; /*file of certificate for client to present to server*/ - if (options.client_key_pass) + if (options.client_key_pass) opts.ssl->privateKeyPassword = options.client_key_pass; - if (options.client_private_key_file) + if (options.client_private_key_file) opts.ssl->privateKey = options.client_private_key_file; //opts.ssl->enabledCipherSuites = "DEFAULT"; //opts.ssl->enabledServerCertAuth = 0; @@ -862,7 +855,7 @@ int test2c(struct Options options) MyLog(LOGA_INFO, "Starting test 2c - connection to SSL MQTT server, server auth enabled but unknown cert"); fprintf(xml, "trustStore = options.server_key_file; /*file of certificates trusted by client*/ opts.ssl->keyStore = options.client_key_file; /*file of certificate for client to present to server*/ - if (options.client_key_pass) + if (options.client_key_pass) opts.ssl->privateKeyPassword = options.client_key_pass; - if (options.client_private_key_file) + if (options.client_private_key_file) opts.ssl->privateKey = options.client_private_key_file; //opts.ssl->enabledCipherSuites = "DEFAULT"; //opts.ssl->enabledServerCertAuth = 0; @@ -923,7 +916,7 @@ int test3a_s(struct Options options) MyLog(LOGA_INFO, "Starting test 3a_s - Server authentication - single threaded client using receive"); fprintf(xml, "trustStore = options.server_key_file; /*file of certificates trusted by client*/ MyLog(LOGA_DEBUG, "Connecting"); @@ -1018,7 +1011,7 @@ int test3a_m(struct Options options) } opts.ssl = &sslopts; - if (options.server_key_file != NULL) + if (options.server_key_file != NULL) opts.ssl->trustStore = options.server_key_file; /*file of certificates trusted by client*/ rc = MQTTClient_setCallbacks(c, NULL, NULL, multiThread_messageArrived, multiThread_deliveryComplete); @@ -1076,7 +1069,7 @@ int test3b(struct Options options) MyLog(LOGA_INFO, "Starting test 3b - connection to SSL MQTT server with clientauth=opt but client does not have server cert"); fprintf(xml, "\n", (int)(ARRAY_SIZE(tests) - 1)); - + setenv("MQTT_C_CLIENT_TRACE", "ON", 1); setenv("MQTT_C_CLIENT_TRACE_LEVEL", "ERROR", 0); getopts(argc, argv); @@ -1539,7 +1532,7 @@ int main(int argc, char** argv) } else rc = tests[options.test_no](options); /* run just the selected test */ - + MyLog(LOGA_INFO, "Total tests run: %d", *numtests); if (rc == 0) MyLog(LOGA_INFO, "verdict pass"); @@ -1548,6 +1541,6 @@ int main(int argc, char** argv) fprintf(xml, "\n"); fclose(xml); - + return rc; } diff --git a/test/test4.c b/test/test4.c index be190d35..8ca4c132 100644 --- a/test/test4.c +++ b/test/test4.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -29,19 +29,11 @@ #if !defined(_WINDOWS) #include - #include + #include #include - #include + #include #else -#include -#include -#define MAXHOSTNAMELEN 256 -#define EAGAIN WSAEWOULDBLOCK -#define EINTR WSAEINTR -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ENOTCONN WSAENOTCONN -#define ECONNRESET WSAECONNRESET + #include #endif #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) @@ -73,7 +65,7 @@ struct Options void getopts(int argc, char** argv) { int count = 1; - + while (count < argc) { if (strcmp(argv[count], "--test_no") == 0) @@ -139,7 +131,7 @@ void MyLog(int LOGA_level, char* format, ...) if (LOGA_level == LOGA_DEBUG && options.verbose == 0) return; - + ftime(&ts); timeinfo = localtime(&ts.time); strftime(msg_buf, 80, "%Y%m%d %H%M%S", timeinfo); @@ -226,11 +218,11 @@ void write_test_result(void) { long duration = elapsed(global_start_time); - fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); + fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); if (cur_output != output) { fprintf(xml, "%s", output); - cur_output = output; + cur_output = output; } fprintf(xml, "\n"); } @@ -249,11 +241,11 @@ void myassert(char* filename, int lineno, char* description, int value, char* fo vprintf(format, args); va_end(args); - cur_output += sprintf(cur_output, "file %s, line %d \n", + cur_output += sprintf(cur_output, "file %s, line %d \n", description, filename, lineno); } else - MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); + MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); } volatile int test_finished = 0; @@ -274,7 +266,7 @@ void test1_onUnsubscribe(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_disconnectOptions opts = MQTTAsync_disconnectOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In onUnsubscribe onSuccess callback %p", c); opts.onSuccess = test1_onDisconnect; opts.context = c; @@ -323,7 +315,7 @@ void test1_onSubscribe(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_message pubmsg = MQTTAsync_message_initializer; int rc; - + MyLog(LOGA_DEBUG, "In subscribe onSuccess callback %p granted qos %d", c, response->alt.qos); pubmsg.payload = "a much longer message that we can shorten to the extent that we need to payload up to 11"; @@ -340,7 +332,7 @@ void test1_onConnect(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In connect onSuccess callback, context %p", context); opts.onSuccess = test1_onSubscribe; opts.context = c; @@ -369,9 +361,9 @@ int test1(struct Options options) MyLog(LOGA_INFO, "Starting test 1 - asynchronous connect"); fprintf(xml, "message = "will message"; @@ -410,7 +402,7 @@ int test1(struct Options options) Sleep(100); #else usleep(10000L); - #endif + #endif MQTTAsync_destroy(&c); @@ -461,9 +453,9 @@ int test2(struct Options options) MyLog(LOGA_INFO, "Starting test 2 - connect timeout"); fprintf(xml, "clientid); opts.onSuccess = test3_onDisconnect; opts.context = cd; @@ -609,7 +601,7 @@ void test3_onSubscribe(void* context, MQTTAsync_successData* response) client_data* cd = (client_data*)context; MQTTAsync_message pubmsg = MQTTAsync_message_initializer; int rc; - + MyLog(LOGA_DEBUG, "In subscribe onSuccess callback \"%s\"", cd->clientid); pubmsg.payload = "a much longer message that we can shorten to the extent that we need to payload up to 11"; @@ -627,7 +619,7 @@ void test3_onConnect(void* context, MQTTAsync_successData* response) client_data* cd = (client_data*)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In connect onSuccess callback, \"%s\"", cd->clientid); opts.onSuccess = test3_onSubscribe; opts.context = cd; @@ -643,7 +635,7 @@ void test3_onFailure(void* context, MQTTAsync_failureData* response) { client_data* cd = (client_data*)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; - + assert("Should have connected", 0, "%s failed to connect\n", cd->clientid); MyLog(LOGA_DEBUG, "In connect onFailure callback, \"%s\" rc %d\n", cd->clientid, response ? response->code : -999); if (response && response->message) @@ -672,7 +664,7 @@ int test3(struct Options options) MyLog(LOGA_INFO, "Starting test 3 - multiple connections"); fprintf(xml, "code : -999); @@ -932,7 +924,7 @@ void test5_onConnect(void* context, MQTTAsync_successData* response) { MQTTAsync c = (MQTTAsync)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; - + MyLog(LOGA_DEBUG, "In connect onFailure callback, context %p", context); test_finished = 1; @@ -957,9 +949,9 @@ int test5(struct Options options) MyLog(LOGA_INFO, "Starting test 5 - connack return codes"); fprintf(xml, "\n", (int)(ARRAY_SIZE(tests)) - 1); - + getopts(argc, argv); MQTTAsync_setTraceCallback(trace_callback); @@ -1724,7 +1716,7 @@ int main(int argc, char** argv) { failures = 0; MQTTAsync_setTraceLevel(MQTTASYNC_TRACE_ERROR); - rc += tests[options.test_no](options); /* return number of failures. 0 = test succeeded */ + rc += tests[options.test_no](options); /* return number of failures. 0 = test succeeded */ } } else @@ -1741,6 +1733,6 @@ int main(int argc, char** argv) fprintf(xml, "\n"); fclose(xml); - + return rc; } diff --git a/test/test5.c b/test/test5.c index d96c5262..3371ee44 100644 --- a/test/test5.c +++ b/test/test5.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -37,15 +37,8 @@ #include #include #else -#include -#include +#include #define MAXHOSTNAMELEN 256 -#define EAGAIN WSAEWOULDBLOCK -#define EINTR WSAEINTR -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ENOTCONN WSAENOTCONN -#define ECONNRESET WSAECONNRESET #define snprintf _snprintf #endif @@ -79,7 +72,7 @@ struct Options int test_no; int size; } options = -{ +{ "ssl://m2m.eclipse.org:18883", "ssl://m2m.eclipse.org:18884", "ssl://m2m.eclipse.org:18887", @@ -282,11 +275,11 @@ void write_test_result(void) { long duration = elapsed(global_start_time); - fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); + fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); if (cur_output != output) { fprintf(xml, "%s", output); - cur_output = output; + cur_output = output; } fprintf(xml, "\n"); } @@ -307,7 +300,7 @@ void myassert(char* filename, int lineno, char* description, int value, vprintf(format, args); va_end(args); - cur_output += sprintf(cur_output, "file %s, line %d \n", + cur_output += sprintf(cur_output, "file %s, line %d \n", description, filename, lineno); } else @@ -932,7 +925,7 @@ int test2c(struct Options options) fprintf(xml, " #include #else - #include + #include #endif void usage(void) @@ -332,7 +332,7 @@ int control_send(char* message) MQTTAsync_responseOptions ropts = MQTTAsync_responseOptions_initializer; sprintf(buf, "%s: %s", opts.clientid, message); - rc = MQTTAsync_send(control_client, pub_topic, strlen(buf), + rc = MQTTAsync_send(control_client, pub_topic, (int)strlen(buf), buf, 1, 0, &ropts); MyLog(LOGA_DEBUG, "Control message sent: %s", buf); @@ -636,7 +636,7 @@ void one_iteration(void) sprintf(payload, "message number %d", i); - rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload, + rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload, opts.qos, opts.retained, NULL); while (rc != MQTTASYNC_SUCCESS) { @@ -645,7 +645,7 @@ void one_iteration(void) if (stopping) goto exit; mqsleep(1); - rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload, + rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload, opts.qos, opts.retained, NULL); } } @@ -687,7 +687,7 @@ void one_iteration(void) ropts.onSuccess = messageSent; seqno++; sprintf(payload, "message number %d", seqno); - rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload, + rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload, opts.qos, opts.retained, &ropts); while (rc != MQTTASYNC_SUCCESS) { @@ -697,7 +697,7 @@ void one_iteration(void) if (stopping) goto exit; mqsleep(1); - rc = MQTTAsync_send(client, opts.topic, strlen(payload)+1, payload, + rc = MQTTAsync_send(client, opts.topic, (int)(strlen(payload)+1), payload, opts.qos, opts.retained, &ropts); } //MyLog(LOGA_DEBUG, "Successful publish with payload %s", payload); diff --git a/test/test8.c b/test/test8.c index 6719f107..f1c41a3c 100644 --- a/test/test8.c +++ b/test/test8.c @@ -29,19 +29,11 @@ #if !defined(_WINDOWS) #include - #include + #include #include - #include + #include #else -#include -#include -#define MAXHOSTNAMELEN 256 -#define EAGAIN WSAEWOULDBLOCK -#define EINTR WSAEINTR -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ENOTCONN WSAENOTCONN -#define ECONNRESET WSAECONNRESET + #include #endif #define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) @@ -69,7 +61,7 @@ struct Options void getopts(int argc, char** argv) { int count = 1; - + while (count < argc) { if (strcmp(argv[count], "--test_no") == 0) @@ -118,7 +110,7 @@ void MyLog(int LOGA_level, char* format, ...) if (LOGA_level == LOGA_DEBUG && options.verbose == 0) return; - + ftime(&ts); timeinfo = localtime(&ts.time); strftime(msg_buf, 80, "%Y%m%d %H%M%S", timeinfo); @@ -218,7 +210,7 @@ void myassert(char* filename, int lineno, char* description, int value, char* fo va_end(args); } else - MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); + MyLog(LOGA_DEBUG, "Assertion succeeded, file %s, line %d, description: %s", filename, lineno, description); } volatile int test_finished = 0; @@ -239,7 +231,7 @@ void test1_onUnsubscribe(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_disconnectOptions opts = MQTTAsync_disconnectOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In onUnsubscribe onSuccess callback %p", c); opts.onSuccess = test1_onDisconnect; opts.context = c; @@ -288,7 +280,7 @@ void test1_onSubscribe(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_message pubmsg = MQTTAsync_message_initializer; int rc; - + MyLog(LOGA_DEBUG, "In subscribe onSuccess callback %p granted qos %d", c, response->alt.qos); pubmsg.payload = "a much longer message that we can shorten to the extent that we need to payload up to 11"; @@ -305,7 +297,7 @@ void test1_onConnect(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In connect onSuccess callback, context %p", context); opts.onSuccess = test1_onSubscribe; opts.context = c; @@ -321,8 +313,7 @@ void test1_onConnectFailure(void* context, MQTTAsync_failureData* response) { MQTTAsync c = (MQTTAsync)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; - int rc; - + MyLog(LOGA_DEBUG, "In connect onFailure callback, context %p", context); test_finished = 1; @@ -346,9 +337,9 @@ int test1(struct Options options) failures = 0; MyLog(LOGA_INFO, "Starting test 1 - asynchronous connect"); - + rc = MQTTAsync_create(&c, options.connection, "async_test", - MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); + MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d\n", rc); if (rc != MQTTASYNC_SUCCESS) { @@ -388,7 +379,7 @@ int test1(struct Options options) Sleep(100); #else usleep(10000L); - #endif + #endif MQTTAsync_destroy(&c); @@ -437,9 +428,9 @@ int test2(struct Options options) test_finished = 0; MyLog(LOGA_INFO, "Starting test 2 - connect timeout"); - + rc = MQTTAsync_create(&c, "tcp://9.20.96.160:66", "connect timeout", - MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); + MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d\n", rc); if (rc != MQTTASYNC_SUCCESS) { @@ -478,12 +469,12 @@ int test2(struct Options options) Sleep(100); #else usleep(10000L); - #endif + #endif MQTTAsync_destroy(&c); exit: - assert("Connect onFailure should be called once", test2_onFailure_called == 1, + assert("Connect onFailure should be called once", test2_onFailure_called == 1, "connect onFailure was called %d times", test2_onFailure_called); MyLog(LOGA_INFO, "TEST2: test %s. %d tests run, %d failures.", @@ -523,7 +514,7 @@ void test3_onUnsubscribe(void* context, MQTTAsync_successData* response) client_data* cd = (client_data*)context; MQTTAsync_disconnectOptions opts = MQTTAsync_disconnectOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In onUnsubscribe onSuccess callback \"%s\"", cd->clientid); opts.onSuccess = test3_onDisconnect; opts.context = cd; @@ -584,7 +575,7 @@ void test3_onSubscribe(void* context, MQTTAsync_successData* response) client_data* cd = (client_data*)context; MQTTAsync_message pubmsg = MQTTAsync_message_initializer; int rc; - + MyLog(LOGA_DEBUG, "In subscribe onSuccess callback \"%s\"", cd->clientid); pubmsg.payload = "a much longer message that we can shorten to the extent that we need to payload up to 11"; @@ -602,7 +593,7 @@ void test3_onConnect(void* context, MQTTAsync_successData* response) client_data* cd = (client_data*)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In connect onSuccess callback, \"%s\"", cd->clientid); opts.onSuccess = test3_onSubscribe; opts.context = cd; @@ -618,7 +609,7 @@ void test3_onFailure(void* context, MQTTAsync_failureData* response) { client_data* cd = (client_data*)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; - + assert("Should have connected", 0, "failed to connect", NULL); MyLog(LOGA_DEBUG, "In connect onFailure callback, \"%s\" rc %d\n", cd->clientid, response->code); if (response->message) @@ -646,7 +637,7 @@ int test3(struct Options options) test_finished = 0; MyLog(LOGA_INFO, "Starting test 3 - multiple connections"); - + for (i = 0; i < num_clients; ++i) { sprintf(clientdata[i].clientid, "async_test3_num_%d", i); @@ -655,9 +646,9 @@ int test3(struct Options options) clientdata[i].message_count = 0; rc = MQTTAsync_create(&(clientdata[i].c), options.connection, clientdata[i].clientid, - MQTTCLIENT_PERSISTENCE_NONE, NULL); + MQTTCLIENT_PERSISTENCE_NONE, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d\n", rc); - + rc = MQTTAsync_setCallbacks(clientdata[i].c, &clientdata[i], NULL, test3_messageArrived, NULL); assert("Good rc from setCallbacks", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); @@ -687,7 +678,7 @@ int test3(struct Options options) Sleep(100); #else usleep(10000L); - #endif + #endif } MyLog(LOGA_DEBUG, "TEST3: destroying clients"); @@ -695,7 +686,7 @@ int test3(struct Options options) for (i = 0; i < num_clients; ++i) MQTTAsync_destroy(&clientdata[i].c); -exit: +/*exit:*/ MyLog(LOGA_INFO, "TEST3: test %s. %d tests run, %d failures.", (failures == 0) ? "passed" : "failed", tests, failures); @@ -709,7 +700,7 @@ int test4_payloadlen = 0; void test4_onPublish(void* context, MQTTAsync_successData* response) { MQTTAsync c = (MQTTAsync)context; - + MyLog(LOGA_DEBUG, "In publish onSuccess callback, context %p", context); } @@ -783,7 +774,7 @@ void test4_onSubscribe(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_message pubmsg = MQTTAsync_message_initializer; int rc, i; - + MyLog(LOGA_DEBUG, "In subscribe onSuccess callback %p", c); pubmsg.payload = test4_payload = malloc(options.size); @@ -792,7 +783,7 @@ void test4_onSubscribe(void* context, MQTTAsync_successData* response) srand(33); for (i = 0; i < options.size; ++i) ((char*)pubmsg.payload)[i] = rand() % 256; - + pubmsg.qos = 2; pubmsg.retained = 0; @@ -805,7 +796,7 @@ void test4_onConnect(void* context, MQTTAsync_successData* response) MQTTAsync c = (MQTTAsync)context; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; int rc; - + MyLog(LOGA_DEBUG, "In connect onSuccess callback, context %p", context); opts.onSuccess = test4_onSubscribe; opts.context = c; @@ -833,9 +824,9 @@ int test4(struct Options options) test_finished = failures = 0; MyLog(LOGA_INFO, "Starting test 4 - big messages"); - + rc = MQTTAsync_create(&c, options.connection, "async_test_4", - MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); + MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d\n", rc); if (rc != MQTTASYNC_SUCCESS) { @@ -873,7 +864,7 @@ int test4(struct Options options) Sleep(100); #else usleep(1000L); - #endif + #endif MQTTAsync_destroy(&c); @@ -897,18 +888,18 @@ int main(int argc, char** argv) int rc = 0; int (*tests[])() = {NULL, test1, test2, test3, test4}; /* indexed starting from 1 */ MQTTAsync_nameValue* info; - + getopts(argc, argv); MQTTAsync_setTraceCallback(trace_callback); info = MQTTAsync_getVersionInfo(); - + while (info->name) { MyLog(LOGA_INFO, "%s: %s", info->name, info->value); info++; - } + } if (options.test_no == -1) { /* run all the tests */ @@ -916,7 +907,7 @@ int main(int argc, char** argv) { failures = 0; MQTTAsync_setTraceLevel(MQTTASYNC_TRACE_ERROR); - rc += tests[options.test_no](options); /* return number of failures. 0 = test succeeded */ + rc += tests[options.test_no](options); /* return number of failures. 0 = test succeeded */ } } else @@ -929,6 +920,6 @@ int main(int argc, char** argv) MyLog(LOGA_INFO, "verdict pass"); else MyLog(LOGA_INFO, "verdict fail"); - + return rc; } diff --git a/test/test9.c b/test/test9.c index 9e67b6c6..568bec8e 100644 --- a/test/test9.c +++ b/test/test9.c @@ -3,11 +3,11 @@ * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 - * and Eclipse Distribution License v1.0 which accompany this distribution. + * and Eclipse Distribution License v1.0 which accompany this distribution. * - * The Eclipse Public License is available at + * The Eclipse Public License is available at * http://www.eclipse.org/legal/epl-v10.html - * and the Eclipse Distribution License is available at + * and the Eclipse Distribution License is available at * http://www.eclipse.org/org/documents/edl-v10.php. * * Contributors: @@ -30,19 +30,11 @@ #if !defined(_WINDOWS) #include - #include + #include #include - #include + #include #else -#include -#include -#define MAXHOSTNAMELEN 256 -#define EAGAIN WSAEWOULDBLOCK -#define EINTR WSAEINTR -#define EINPROGRESS WSAEINPROGRESS -#define EWOULDBLOCK WSAEWOULDBLOCK -#define ENOTCONN WSAENOTCONN -#define ECONNRESET WSAECONNRESET + #include #endif char unique[50]; // unique suffix/prefix to add to clientid/topic etc @@ -72,7 +64,7 @@ struct Options void getopts(int argc, char** argv) { int count = 1; - + while (count < argc) { if (strcmp(argv[count], "--test_no") == 0) @@ -212,11 +204,11 @@ void write_test_result(void) { long duration = elapsed(global_start_time); - fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); + fprintf(xml, " time=\"%ld.%.3ld\" >\n", duration / 1000, duration % 1000); if (cur_output != output) { fprintf(xml, "%s", output); - cur_output = output; + cur_output = output; } fprintf(xml, "\n"); } @@ -237,7 +229,7 @@ void myassert(char* filename, int lineno, char* description, int value, vprintf(format, args); va_end(args); - cur_output += sprintf(cur_output, "file %s, line %d \n", + cur_output += sprintf(cur_output, "file %s, line %d \n", description, filename, lineno); } else @@ -248,46 +240,46 @@ void myassert(char* filename, int lineno, char* description, int value, /********************************************************************* Tests: offline buffering - sending messages while disconnected - + 1. send some messages while disconnected, check that they are sent 2. repeat test 1 using serverURIs 3. repeat test 1 using auto reconnect 4. repeat test 2 using auto reconnect 5. check max-buffered 6. check auto-reconnect parms alter behaviour as expected - + Tests: automatic reconnect - - - check that connected() is called + + - check that connected() is called - check that reconnect() causes reconnect attempt - check that reconnect() fails if no connect has been previously attempted *********************************************************************/ - + /********************************************************************* Test1: offline buffering - sending messages while disconnected - + 1. call connect - 2. use proxy to disconnect the client + 2. use proxy to disconnect the client 3. while the client is disconnected, send more messages 4. when the client reconnects, check that those messages are sent *********************************************************************/ - -int test1_will_message_received = 0; + +int test1_will_message_received = 0; int test1_messages_received = 0; - + int test1_messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* message) { MQTTAsync c = (MQTTAsync)context; static int message_count = 0; MyLog(LOGA_DEBUG, "Message received on topic %s, \"%.*s\"", topicName, message->payloadlen, message->payload); - + if (memcmp(message->payload, "will message", message->payloadlen) == 0) test1_will_message_received = 1; else @@ -325,10 +317,10 @@ void test1cOnConnect(void* context, MQTTAsync_successData* response) MyLog(LOGA_DEBUG, "In connect onSuccess callback for client d, context %p\n", context); MQTTAsync c = (MQTTAsync)context; int rc; - + /* send a message to the proxy to break the connection */ pubmsg.payload = "TERMINATE"; - pubmsg.payloadlen = strlen(pubmsg.payload); + pubmsg.payloadlen = (int)strlen(pubmsg.payload); pubmsg.qos = 0; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL); @@ -391,7 +383,7 @@ int test1(struct Options options) char clientidd[50]; int i = 0; MQTTAsync_token *tokens; - + sprintf(willTopic, "paho-test9-1-%s", unique); sprintf(clientidc, "paho-test9-1-c-%s", unique); sprintf(clientidd, "paho-test9-1-d-%s", unique); @@ -404,7 +396,7 @@ int test1(struct Options options) global_start_time = start_clock(); createOptions.sendWhileDisconnected = 1; - rc = MQTTAsync_createWithOptions(&c, options.proxy_connection, clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, + rc = MQTTAsync_createWithOptions(&c, options.proxy_connection, clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL, &createOptions); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -412,7 +404,7 @@ int test1(struct Options options) MQTTAsync_destroy(&c); goto exit; } - + rc = MQTTAsync_create(&d, options.connection, clientidd, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -425,7 +417,7 @@ int test1(struct Options options) opts.cleansession = 1; //opts.username = "testuser"; //opts.password = "testpassword"; - + rc = MQTTAsync_setCallbacks(d, d, NULL, test1_messageArrived, NULL); assert("Good rc from setCallbacks", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); @@ -441,16 +433,16 @@ int test1(struct Options options) failures++; goto exit; } - + /* wait until d is ready: connected and subscribed */ count = 0; while (!test1dReady && ++count < 10000) MySleep(100); assert("Count should be less than 10000", count < 10000, "count was %d", count); /* wrong */ - + rc = MQTTAsync_setConnected(c, c, test1cConnected); assert("Good rc from setConnectedCallback", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); - + /* let client c go: connect, and send disconnect command to proxy */ opts.will = &wopts; opts.will->message = "will message"; @@ -470,24 +462,24 @@ int test1(struct Options options) failures++; goto exit; } - + /* wait for will message */ while (!test1_will_message_received && ++count < 10000) MySleep(100); - + MyLog(LOGA_DEBUG, "Now we can send some messages to be buffered"); - + test1c_connected = 0; /* send some messages. Then reconnect (check connected callback), and check that those messages are received */ for (i = 0; i < 3; ++i) { char buf[50]; - + MQTTAsync_message pubmsg = MQTTAsync_message_initializer; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; sprintf(buf, "QoS %d message", i); pubmsg.payload = buf; - pubmsg.payloadlen = strlen(pubmsg.payload) + 1; + pubmsg.payloadlen = (int)strlen(pubmsg.payload) + 1; pubmsg.qos = i; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts); @@ -504,14 +496,14 @@ int test1(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 3", i == 3, "i was %d ", i); - + rc = MQTTAsync_reconnect(c); assert("Good rc from reconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + /* wait for client to be reconnected */ while (!test1c_connected && ++count < 10000) MySleep(100); - + /* wait for success or failure callback */ while (test1_messages_received < 3 && ++count < 10000) MySleep(100); @@ -526,10 +518,10 @@ int test1(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 0", i == 0, "i was %d ", i); - + rc = MQTTAsync_disconnect(c, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + rc = MQTTAsync_disconnect(d, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); @@ -546,24 +538,24 @@ exit: /********************************************************************* Test2: offline buffering - sending messages while disconnected - + 1. call connect - 2. use proxy to disconnect the client + 2. use proxy to disconnect the client 3. while the client is disconnected, send more messages 4. when the client reconnects, check that those messages are sent *********************************************************************/ - -int test2_will_message_received = 0; + +int test2_will_message_received = 0; int test2_messages_received = 0; - + int test2_messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* message) { MQTTAsync c = (MQTTAsync)context; static int message_count = 0; MyLog(LOGA_DEBUG, "Message received on topic %s, \"%.*s\"", topicName, message->payloadlen, message->payload); - + if (memcmp(message->payload, "will message", message->payloadlen) == 0) test2_will_message_received = 1; else @@ -601,10 +593,10 @@ void test2cOnConnect(void* context, MQTTAsync_successData* response) MyLog(LOGA_DEBUG, "In connect onSuccess callback for client d, context %p\n", context); MQTTAsync c = (MQTTAsync)context; int rc; - + /* send a message to the proxy to break the connection */ pubmsg.payload = "TERMINATE"; - pubmsg.payloadlen = strlen(pubmsg.payload); + pubmsg.payloadlen = (int)strlen(pubmsg.payload); pubmsg.qos = 0; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL); @@ -668,7 +660,7 @@ int test2(struct Options options) int i = 0; MQTTAsync_token *tokens; char *URIs[2] = {"rubbish", options.proxy_connection}; - + sprintf(willTopic, "paho-test9-2-%s", unique); sprintf(clientidc, "paho-test9-2-c-%s", unique); sprintf(clientidd, "paho-test9-2-d-%s", unique); @@ -681,7 +673,7 @@ int test2(struct Options options) global_start_time = start_clock(); createOptions.sendWhileDisconnected = 1; - rc = MQTTAsync_createWithOptions(&c, "not used", clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, + rc = MQTTAsync_createWithOptions(&c, "not used", clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL, &createOptions); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -689,7 +681,7 @@ int test2(struct Options options) MQTTAsync_destroy(&c); goto exit; } - + rc = MQTTAsync_create(&d, options.connection, clientidd, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -700,7 +692,7 @@ int test2(struct Options options) opts.keepAliveInterval = 20; opts.cleansession = 1; - + rc = MQTTAsync_setCallbacks(d, d, NULL, test2_messageArrived, NULL); assert("Good rc from setCallbacks", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); @@ -716,16 +708,16 @@ int test2(struct Options options) failures++; goto exit; } - + /* wait until d is ready: connected and subscribed */ count = 0; while (!test2dReady && ++count < 10000) MySleep(100); assert("Count should be less than 10000", count < 10000, "count was %d", count); /* wrong */ - + rc = MQTTAsync_setConnected(c, c, test2cConnected); assert("Good rc from setConnectedCallback", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); - + /* let client c go: connect, and send disconnect command to proxy */ opts.will = &wopts; opts.will->message = "will message"; @@ -747,24 +739,24 @@ int test2(struct Options options) failures++; goto exit; } - + /* wait for will message */ while (!test2_will_message_received && ++count < 10000) MySleep(100); - + MyLog(LOGA_DEBUG, "Now we can send some messages to be buffered"); - + test2c_connected = 0; /* send some messages. Then reconnect (check connected callback), and check that those messages are received */ for (i = 0; i < 3; ++i) { char buf[50]; - + MQTTAsync_message pubmsg = MQTTAsync_message_initializer; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; sprintf(buf, "QoS %d message", i); pubmsg.payload = buf; - pubmsg.payloadlen = strlen(pubmsg.payload) + 1; + pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1); pubmsg.qos = i; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts); @@ -781,14 +773,14 @@ int test2(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 3", i == 3, "i was %d ", i); - + rc = MQTTAsync_reconnect(c); assert("Good rc from reconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + /* wait for client to be reconnected */ while (!test2c_connected && ++count < 10000) MySleep(100); - + /* wait for success or failure callback */ while (test2_messages_received < 3 && ++count < 10000) MySleep(100); @@ -803,10 +795,10 @@ int test2(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 0", i == 0, "i was %d ", i); - + rc = MQTTAsync_disconnect(c, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + rc = MQTTAsync_disconnect(d, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); @@ -822,24 +814,24 @@ exit: /********************************************************************* test3: offline buffering - sending messages while disconnected - + 1. call connect - 2. use proxy to disconnect the client + 2. use proxy to disconnect the client 3. while the client is disconnected, send more messages 4. when the client auto reconnects, check that those messages are sent *********************************************************************/ - -int test3_will_message_received = 0; + +int test3_will_message_received = 0; int test3_messages_received = 0; - + int test3_messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* message) { MQTTAsync c = (MQTTAsync)context; static int message_count = 0; MyLog(LOGA_DEBUG, "Message received on topic %s, \"%.*s\"", topicName, message->payloadlen, message->payload); - + if (memcmp(message->payload, "will message", message->payloadlen) == 0) test3_will_message_received = 1; else @@ -877,10 +869,10 @@ void test3cOnConnect(void* context, MQTTAsync_successData* response) MyLog(LOGA_DEBUG, "In connect onSuccess callback for client d, context %p\n", context); MQTTAsync c = (MQTTAsync)context; int rc; - + /* send a message to the proxy to break the connection */ pubmsg.payload = "TERMINATE"; - pubmsg.payloadlen = strlen(pubmsg.payload); + pubmsg.payloadlen = (int)strlen(pubmsg.payload); pubmsg.qos = 0; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL); @@ -943,7 +935,7 @@ int test3(struct Options options) char clientidd[50]; int i = 0; MQTTAsync_token *tokens; - + sprintf(willTopic, "paho-test9-3-%s", unique); sprintf(clientidc, "paho-test9-3-c-%s", unique); sprintf(clientidd, "paho-test9-3-d-%s", unique); @@ -956,7 +948,7 @@ int test3(struct Options options) global_start_time = start_clock(); createOptions.sendWhileDisconnected = 1; - rc = MQTTAsync_createWithOptions(&c, options.proxy_connection, clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, + rc = MQTTAsync_createWithOptions(&c, options.proxy_connection, clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL, &createOptions); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -964,7 +956,7 @@ int test3(struct Options options) MQTTAsync_destroy(&c); goto exit; } - + rc = MQTTAsync_create(&d, options.connection, clientidd, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -977,7 +969,7 @@ int test3(struct Options options) opts.cleansession = 1; //opts.username = "testuser"; //opts.password = "testpassword"; - + rc = MQTTAsync_setCallbacks(d, d, NULL, test3_messageArrived, NULL); assert("Good rc from setCallbacks", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); @@ -993,16 +985,16 @@ int test3(struct Options options) failures++; goto exit; } - + /* wait until d is ready: connected and subscribed */ count = 0; while (!test3dReady && ++count < 10000) MySleep(100); assert("Count should be less than 10000", count < 10000, "count was %d", count); /* wrong */ - + rc = MQTTAsync_setConnected(c, c, test3cConnected); assert("Good rc from setConnectedCallback", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); - + /* let client c go: connect, and send disconnect command to proxy */ opts.will = &wopts; opts.will->message = "will message"; @@ -1023,24 +1015,24 @@ int test3(struct Options options) failures++; goto exit; } - + /* wait for will message */ while (!test3_will_message_received && ++count < 10000) MySleep(100); - + MyLog(LOGA_DEBUG, "Now we can send some messages to be buffered"); - + test3c_connected = 0; /* send some messages. Then reconnect (check connected callback), and check that those messages are received */ for (i = 0; i < 3; ++i) { char buf[50]; - + MQTTAsync_message pubmsg = MQTTAsync_message_initializer; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; sprintf(buf, "QoS %d message", i); pubmsg.payload = buf; - pubmsg.payloadlen = strlen(pubmsg.payload) + 1; + pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1); pubmsg.qos = i; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts); @@ -1057,11 +1049,11 @@ int test3(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 3", i == 3, "i was %d ", i); - + /* wait for client to be reconnected */ while (!test3c_connected && ++count < 10000) MySleep(100); - + /* wait for success or failure callback */ while (test3_messages_received < 3 && ++count < 10000) MySleep(100); @@ -1076,11 +1068,11 @@ int test3(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 0", i == 0, "i was %d ", i); - - + + rc = MQTTAsync_disconnect(c, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + rc = MQTTAsync_disconnect(d, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); @@ -1096,24 +1088,24 @@ exit: /********************************************************************* test4: offline buffering - sending messages while disconnected - + 1. call connect - 2. use proxy to disconnect the client + 2. use proxy to disconnect the client 3. while the client is disconnected, send more messages 4. when the client auto reconnects, check that those messages are sent *********************************************************************/ - -int test4_will_message_received = 0; + +int test4_will_message_received = 0; int test4_messages_received = 0; - + int test4_messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* message) { MQTTAsync c = (MQTTAsync)context; static int message_count = 0; MyLog(LOGA_DEBUG, "Message received on topic %s, \"%.*s\"", topicName, message->payloadlen, message->payload); - + if (memcmp(message->payload, "will message", message->payloadlen) == 0) test4_will_message_received = 1; else @@ -1151,10 +1143,10 @@ void test4cOnConnect(void* context, MQTTAsync_successData* response) MyLog(LOGA_DEBUG, "In connect onSuccess callback for client d, context %p\n", context); MQTTAsync c = (MQTTAsync)context; int rc; - + /* send a message to the proxy to break the connection */ pubmsg.payload = "TERMINATE"; - pubmsg.payloadlen = strlen(pubmsg.payload); + pubmsg.payloadlen = (int)strlen(pubmsg.payload); pubmsg.qos = 0; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL); @@ -1218,7 +1210,7 @@ int test4(struct Options options) int i = 0; MQTTAsync_token *tokens; char *URIs[2] = {"rubbish", options.proxy_connection}; - + sprintf(willTopic, "paho-test9-4-%s", unique); sprintf(clientidc, "paho-test9-4-c-%s", unique); sprintf(clientidd, "paho-test9-4-d-%s", unique); @@ -1231,7 +1223,7 @@ int test4(struct Options options) global_start_time = start_clock(); createOptions.sendWhileDisconnected = 1; - rc = MQTTAsync_createWithOptions(&c, "not used", clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, + rc = MQTTAsync_createWithOptions(&c, "not used", clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL, &createOptions); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -1239,7 +1231,7 @@ int test4(struct Options options) MQTTAsync_destroy(&c); goto exit; } - + rc = MQTTAsync_create(&d, options.connection, clientidd, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -1250,7 +1242,7 @@ int test4(struct Options options) opts.keepAliveInterval = 20; opts.cleansession = 1; - + rc = MQTTAsync_setCallbacks(d, d, NULL, test4_messageArrived, NULL); assert("Good rc from setCallbacks", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); @@ -1266,16 +1258,16 @@ int test4(struct Options options) failures++; goto exit; } - + /* wait until d is ready: connected and subscribed */ count = 0; while (!test4dReady && ++count < 10000) MySleep(100); assert("Count should be less than 10000", count < 10000, "count was %d", count); /* wrong */ - + rc = MQTTAsync_setConnected(c, c, test4cConnected); assert("Good rc from setConnectedCallback", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); - + /* let client c go: connect, and send disconnect command to proxy */ opts.will = &wopts; opts.will->message = "will message"; @@ -1298,24 +1290,24 @@ int test4(struct Options options) failures++; goto exit; } - + /* wait for will message */ while (!test4_will_message_received && ++count < 10000) MySleep(100); - + MyLog(LOGA_DEBUG, "Now we can send some messages to be buffered"); - + test4c_connected = 0; /* send some messages. Then reconnect (check connected callback), and check that those messages are received */ for (i = 0; i < 3; ++i) { char buf[50]; - + MQTTAsync_message pubmsg = MQTTAsync_message_initializer; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; sprintf(buf, "QoS %d message", i); pubmsg.payload = buf; - pubmsg.payloadlen = strlen(pubmsg.payload) + 1; + pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1); pubmsg.qos = i; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts); @@ -1332,11 +1324,11 @@ int test4(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 3", i == 3, "i was %d ", i); - + /* wait for client to be reconnected */ while (!test4c_connected && ++count < 10000) MySleep(100); - + /* wait for success or failure callback */ while (test4_messages_received < 3 && ++count < 10000) MySleep(100); @@ -1351,10 +1343,10 @@ int test4(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 0", i == 0, "i was %d ", i); - + rc = MQTTAsync_disconnect(c, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + rc = MQTTAsync_disconnect(d, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); @@ -1371,24 +1363,24 @@ exit: /********************************************************************* test5: offline buffering - check max buffered - + 1. call connect - 2. use proxy to disconnect the client + 2. use proxy to disconnect the client 3. while the client is disconnected, send more messages 4. when the client reconnects, check that those messages are sent *********************************************************************/ - -int test5_will_message_received = 0; + +int test5_will_message_received = 0; int test5_messages_received = 0; - + int test5_messageArrived(void* context, char* topicName, int topicLen, MQTTAsync_message* message) { MQTTAsync c = (MQTTAsync)context; static int message_count = 0; MyLog(LOGA_DEBUG, "Message received on topic %s, \"%.*s\"", topicName, message->payloadlen, message->payload); - + if (memcmp(message->payload, "will message", message->payloadlen) == 0) test5_will_message_received = 1; else @@ -1426,10 +1418,10 @@ void test5cOnConnect(void* context, MQTTAsync_successData* response) MyLog(LOGA_DEBUG, "In connect onSuccess callback for client d, context %p\n", context); MQTTAsync c = (MQTTAsync)context; int rc; - + /* send a message to the proxy to break the connection */ pubmsg.payload = "TERMINATE"; - pubmsg.payloadlen = strlen(pubmsg.payload); + pubmsg.payloadlen = (int)strlen(pubmsg.payload); pubmsg.qos = 0; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, "MQTTSAS topic", &pubmsg, NULL); @@ -1492,7 +1484,7 @@ int test5(struct Options options) char clientidd[50]; int i = 0; MQTTAsync_token *tokens; - + sprintf(willTopic, "paho-test9-5-%s", unique); sprintf(clientidc, "paho-test9-5-c-%s", unique); sprintf(clientidd, "paho-test9-5-d-%s", unique); @@ -1506,7 +1498,7 @@ int test5(struct Options options) createOptions.sendWhileDisconnected = 1; createOptions.maxBufferedMessages = 3; - rc = MQTTAsync_createWithOptions(&c, options.proxy_connection, clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, + rc = MQTTAsync_createWithOptions(&c, options.proxy_connection, clientidc, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL, &createOptions); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -1514,7 +1506,7 @@ int test5(struct Options options) MQTTAsync_destroy(&c); goto exit; } - + rc = MQTTAsync_create(&d, options.connection, clientidd, MQTTCLIENT_PERSISTENCE_DEFAULT, NULL); assert("good rc from create", rc == MQTTASYNC_SUCCESS, "rc was %d \n", rc); if (rc != MQTTASYNC_SUCCESS) @@ -1527,7 +1519,7 @@ int test5(struct Options options) opts.cleansession = 1; //opts.username = "testuser"; //opts.password = "testpassword"; - + rc = MQTTAsync_setCallbacks(d, d, NULL, test5_messageArrived, NULL); assert("Good rc from setCallbacks", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); @@ -1543,16 +1535,16 @@ int test5(struct Options options) failures++; goto exit; } - + /* wait until d is ready: connected and subscribed */ count = 0; while (!test5dReady && ++count < 10000) MySleep(100); assert("Count should be less than 10000", count < 10000, "count was %d", count); /* wrong */ - + rc = MQTTAsync_setConnected(c, c, test5cConnected); assert("Good rc from setConnectedCallback", rc == MQTTASYNC_SUCCESS, "rc was %d", rc); - + /* let client c go: connect, and send disconnect command to proxy */ opts.will = &wopts; opts.will->message = "will message"; @@ -1572,24 +1564,24 @@ int test5(struct Options options) failures++; goto exit; } - + /* wait for will message */ while (!test5_will_message_received && ++count < 10000) MySleep(100); - + MyLog(LOGA_DEBUG, "Now we can send some messages to be buffered"); - + test5c_connected = 0; /* send some messages. Then reconnect (check connected callback), and check that those messages are received */ for (i = 0; i < 5; ++i) { char buf[50]; - + MQTTAsync_message pubmsg = MQTTAsync_message_initializer; MQTTAsync_responseOptions opts = MQTTAsync_responseOptions_initializer; sprintf(buf, "QoS %d message", i); pubmsg.payload = buf; - pubmsg.payloadlen = strlen(pubmsg.payload) + 1; + pubmsg.payloadlen = (int)(strlen(pubmsg.payload) + 1); pubmsg.qos = i % 3; pubmsg.retained = 0; rc = MQTTAsync_sendMessage(c, test_topic, &pubmsg, &opts); @@ -1609,14 +1601,14 @@ int test5(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 3", i == 3, "i was %d ", i); - + rc = MQTTAsync_reconnect(c); assert("Good rc from reconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + /* wait for client to be reconnected */ while (!test5c_connected && ++count < 10000) MySleep(100); - + /* wait for success or failure callback */ while (test5_messages_received < 3 && ++count < 10000) MySleep(100); @@ -1631,10 +1623,10 @@ int test5(struct Options options) MQTTAsync_free(tokens); } assert("Number of getPendingTokens should be 0", i == 0, "i was %d ", i); - + rc = MQTTAsync_disconnect(c, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); - + rc = MQTTAsync_disconnect(d, NULL); assert("Good rc from disconnect", rc == MQTTASYNC_SUCCESS, "rc was %d ", rc); @@ -1659,12 +1651,12 @@ int main(int argc, char** argv) int* numtests = &tests; int rc = 0; int (*tests[])() = { NULL, test1, test2, test3, test4, test5}; - + sprintf(unique, "%u", rand()); MyLog(LOGA_INFO, "Random prefix/suffix is %s", unique); xml = fopen("TEST-test9.xml", "w"); - fprintf(xml, "\n", ARRAY_SIZE(tests) - 1); + fprintf(xml, "\n", (int)(ARRAY_SIZE(tests) - 1)); MQTTAsync_setTraceCallback(handleTrace); getopts(argc, argv); @@ -1695,4 +1687,3 @@ int main(int argc, char** argv) return rc; } -