Library for MQTT

Committer:
pavleradojkovic
Date:
Mon Jun 20 16:24:43 2022 +0000
Revision:
0:ba7e439238ab
Inital commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pavleradojkovic 0:ba7e439238ab 1 /*
pavleradojkovic 0:ba7e439238ab 2 * Copyright (c) 2019, ARM Limited, All Rights Reserved
pavleradojkovic 0:ba7e439238ab 3 * SPDX-License-Identifier: Apache-2.0
pavleradojkovic 0:ba7e439238ab 4 *
pavleradojkovic 0:ba7e439238ab 5 * Licensed under the Apache License, Version 2.0 (the "License"); you may
pavleradojkovic 0:ba7e439238ab 6 * not use this file except in compliance with the License.
pavleradojkovic 0:ba7e439238ab 7 * You may obtain a copy of the License at
pavleradojkovic 0:ba7e439238ab 8 *
pavleradojkovic 0:ba7e439238ab 9 * http://www.apache.org/licenses/LICENSE-2.0
pavleradojkovic 0:ba7e439238ab 10 *
pavleradojkovic 0:ba7e439238ab 11 * Unless required by applicable law or agreed to in writing, software
pavleradojkovic 0:ba7e439238ab 12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
pavleradojkovic 0:ba7e439238ab 13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
pavleradojkovic 0:ba7e439238ab 14 * See the License for the specific language governing permissions and
pavleradojkovic 0:ba7e439238ab 15 * limitations under the License.
pavleradojkovic 0:ba7e439238ab 16 */
pavleradojkovic 0:ba7e439238ab 17
pavleradojkovic 0:ba7e439238ab 18 #include "mbed.h"
pavleradojkovic 0:ba7e439238ab 19 #include "mqtt_tests.h"
pavleradojkovic 0:ba7e439238ab 20 #include "greentea-client/test_env.h"
pavleradojkovic 0:ba7e439238ab 21 #include "utest.h"
pavleradojkovic 0:ba7e439238ab 22
pavleradojkovic 0:ba7e439238ab 23 using namespace utest::v1;
pavleradojkovic 0:ba7e439238ab 24
pavleradojkovic 0:ba7e439238ab 25 #if !defined(MBEDTLS_SSL_CLI_C) && MBED_CONF_MBED_MQTT_TESTS_TLS_ENABLE
pavleradojkovic 0:ba7e439238ab 26 #warning "Cannot run TLS tests (MBED_CONF_MBED_MQTT_TESTS_TLS_ENABLE) with TLS disabled (no MBEDTLS_SSL_CLI_C)"
pavleradojkovic 0:ba7e439238ab 27 #define MBED_CONF_MBED_MQTT_TESTS_TLS_ENABLE false
pavleradojkovic 0:ba7e439238ab 28 #endif
pavleradojkovic 0:ba7e439238ab 29
pavleradojkovic 0:ba7e439238ab 30 const char *mqtt_global::SSL_CA_PEM =
pavleradojkovic 0:ba7e439238ab 31
pavleradojkovic 0:ba7e439238ab 32 #ifdef MQTT_TESTS_CA_CERT_FLESPI
pavleradojkovic 0:ba7e439238ab 33
pavleradojkovic 0:ba7e439238ab 34 /* mqtt.flespi.io - requires token as username! */
pavleradojkovic 0:ba7e439238ab 35 "-----BEGIN CERTIFICATE-----\n"
pavleradojkovic 0:ba7e439238ab 36 "MIIGzDCCBbSgAwIBAgIMPFEC2JrizEiAhCVqMA0GCSqGSIb3DQEBCwUAMEwxCzAJ\n"
pavleradojkovic 0:ba7e439238ab 37 "BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMSIwIAYDVQQDExlB\n"
pavleradojkovic 0:ba7e439238ab 38 "bHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcyMB4XDTE3MTIxMTEyMjgzN1oXDTIwMTIx\n"
pavleradojkovic 0:ba7e439238ab 39 "MTEyMjgzN1owOTEhMB8GA1UECxMYRG9tYWluIENvbnRyb2wgVmFsaWRhdGVkMRQw\n"
pavleradojkovic 0:ba7e439238ab 40 "EgYDVQQDDAsqLmZsZXNwaS5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC\n"
pavleradojkovic 0:ba7e439238ab 41 "ggEBAMVsit1Mh2Ytyym51hFaMcryuiJxl56TFCaeBeppimNw9Fc43xFrWd9yyEp3\n"
pavleradojkovic 0:ba7e439238ab 42 "BuWHjd29srtOBrThImXoCfbcSy7NpzlOSJlShhBfpyNiodE6N6DkHOisUibhWwj2\n"
pavleradojkovic 0:ba7e439238ab 43 "otR5VYmP7AQPzpfaKhM0CRcAB733X5Yd/stvbCVQB9069Zyd+lHteL+zKR73muFA\n"
pavleradojkovic 0:ba7e439238ab 44 "DYZp8angPB9m6fJwbW6LMsFjt19cB31HrDbFg8VXxkgJ/7F988dyHcuReEJTyI+C\n"
pavleradojkovic 0:ba7e439238ab 45 "XbW9vFyF+/RYm0Gjha3FZcXEV+W1VwP/ZIjiZzlYCxUM72yr96Pfw2X3HG+D3v0t\n"
pavleradojkovic 0:ba7e439238ab 46 "/uOoCZGXUm7hJtjPXirhFwV0o7UCAwEAAaOCA78wggO7MA4GA1UdDwEB/wQEAwIF\n"
pavleradojkovic 0:ba7e439238ab 47 "oDCBiQYIKwYBBQUHAQEEfTB7MEIGCCsGAQUFBzAChjZodHRwOi8vc2VjdXJlMi5h\n"
pavleradojkovic 0:ba7e439238ab 48 "bHBoYXNzbC5jb20vY2FjZXJ0L2dzYWxwaGFzaGEyZzJyMS5jcnQwNQYIKwYBBQUH\n"
pavleradojkovic 0:ba7e439238ab 49 "MAGGKWh0dHA6Ly9vY3NwMi5nbG9iYWxzaWduLmNvbS9nc2FscGhhc2hhMmcyMFcG\n"
pavleradojkovic 0:ba7e439238ab 50 "A1UdIARQME4wQgYKKwYBBAGgMgEKCjA0MDIGCCsGAQUFBwIBFiZodHRwczovL3d3\n"
pavleradojkovic 0:ba7e439238ab 51 "dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAIBgZngQwBAgEwCQYDVR0TBAIw\n"
pavleradojkovic 0:ba7e439238ab 52 "ADA+BgNVHR8ENzA1MDOgMaAvhi1odHRwOi8vY3JsMi5hbHBoYXNzbC5jb20vZ3Mv\n"
pavleradojkovic 0:ba7e439238ab 53 "Z3NhbHBoYXNoYTJnMi5jcmwwIQYDVR0RBBowGIILKi5mbGVzcGkuaW+CCWZsZXNw\n"
pavleradojkovic 0:ba7e439238ab 54 "aS5pbzAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHQYDVR0OBBYEFOKx\n"
pavleradojkovic 0:ba7e439238ab 55 "KLsJ/+eKGfPhv553Hwwh43cMMB8GA1UdIwQYMBaAFPXN1TwIUPlqTzq3l9pWg+Zp\n"
pavleradojkovic 0:ba7e439238ab 56 "0mj3MIIB9QYKKwYBBAHWeQIEAgSCAeUEggHhAd8AdgDd6x0reg1PpiCLga2BaHB+\n"
pavleradojkovic 0:ba7e439238ab 57 "Lo6dAdVciI09EcTNtuy+zAAAAWBFjG/AAAAEAwBHMEUCIQDRPNudq8fp8HvpMFDN\n"
pavleradojkovic 0:ba7e439238ab 58 "pvxiMRhYqgVTUhTYr7KJc30dBQIgZRgSp3ytL9kfGtJmGDfXYp6ffyZO1JJnbSd3\n"
pavleradojkovic 0:ba7e439238ab 59 "BF2GSC4AdQBWFAaaL9fC7NP14b1Esj7HRna5vJkRXMDvlJhV1onQ3QAAAWBFjHAY\n"
pavleradojkovic 0:ba7e439238ab 60 "AAAEAwBGMEQCICIqW+E4s6O2FbiNqh7li0kMLo1zOKrfmEitnSKIx2DbAiBhtxsd\n"
pavleradojkovic 0:ba7e439238ab 61 "3e97ravHoGAW3yXRF3jwezfEwyRQ3xXHA98BNAB2AKS5CZC0GFgUh7sTosxncAo8\n"
pavleradojkovic 0:ba7e439238ab 62 "NZgE+RvfuON3zQ7IDdwQAAABYEWMcpQAAAQDAEcwRQIgJ0EiJuYsYOeyziLXrN+C\n"
pavleradojkovic 0:ba7e439238ab 63 "dFmaDNyPGbLFWm5VqCi1OpcCIQDTM7TyakLFmBXrEkeJXuOH+ECJ2l4ZVIcoGrdM\n"
pavleradojkovic 0:ba7e439238ab 64 "UahOCgB2ALvZ37wfinG1k5Qjl6qSe0c4V5UKq1LoGpCWZDaOHtGFAAABYEWMc0wA\n"
pavleradojkovic 0:ba7e439238ab 65 "AAQDAEcwRQIhAN5+7KD0MrK4d7rbkwHf9fZh0yERoD4F+eEijXiqCruTAiBpIHOb\n"
pavleradojkovic 0:ba7e439238ab 66 "eEK5xp1IQV7dZQw/eknxyGffqHI6ctYNDpe5DjANBgkqhkiG9w0BAQsFAAOCAQEA\n"
pavleradojkovic 0:ba7e439238ab 67 "U9yjiRzpDp+Alz68X4K7EbyrGJQJRma5Bkm0IaCwv2gNnOsqRVQPMLz69ft42SbK\n"
pavleradojkovic 0:ba7e439238ab 68 "ECMGipkiz9VilRmMX82TGuKLuxgZEfYkWr31A7EYjzZ+iFyYMilbI+DA+pi7zcAA\n"
pavleradojkovic 0:ba7e439238ab 69 "a9wa2D9DT7IC0e9pv1gqiWjA92KJcy+LZt9+xeQCpmdBefxIRZ2g1oKXrUSnlfCt\n"
pavleradojkovic 0:ba7e439238ab 70 "jZ153YD11Lqrq5ZMS2fedkzNHmasKYJdipXoXcpTywGn6QEDFe22V+HCdDsLWw3d\n"
pavleradojkovic 0:ba7e439238ab 71 "1MHKVCc+vNcDG0FkrItWjB857pwdZN36VqVVvGuio4oeGOmTHMNzLahN6mA4tABN\n"
pavleradojkovic 0:ba7e439238ab 72 "Ht7LDqFUSy2ZL4yTyCqEnA==\n"
pavleradojkovic 0:ba7e439238ab 73 "-----END CERTIFICATE-----"
pavleradojkovic 0:ba7e439238ab 74 "-----BEGIN CERTIFICATE-----\n"
pavleradojkovic 0:ba7e439238ab 75 "MIIETTCCAzWgAwIBAgILBAAAAAABRE7wNjEwDQYJKoZIhvcNAQELBQAwVzELMAkG\n"
pavleradojkovic 0:ba7e439238ab 76 "A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv\n"
pavleradojkovic 0:ba7e439238ab 77 "b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw0xNDAyMjAxMDAw\n"
pavleradojkovic 0:ba7e439238ab 78 "MDBaFw0yNDAyMjAxMDAwMDBaMEwxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i\n"
pavleradojkovic 0:ba7e439238ab 79 "YWxTaWduIG52LXNhMSIwIAYDVQQDExlBbHBoYVNTTCBDQSAtIFNIQTI1NiAtIEcy\n"
pavleradojkovic 0:ba7e439238ab 80 "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gHs5OxzYPt+j2q3xhfj\n"
pavleradojkovic 0:ba7e439238ab 81 "kmQy1KwA2aIPue3ua4qGypJn2XTXXUcCPI9A1p5tFM3D2ik5pw8FCmiiZhoexLKL\n"
pavleradojkovic 0:ba7e439238ab 82 "dljlq10dj0CzOYvvHoN9ItDjqQAu7FPPYhmFRChMwCfLew7sEGQAEKQFzKByvkFs\n"
pavleradojkovic 0:ba7e439238ab 83 "MVtI5LHsuSPrVU3QfWJKpbSlpFmFxSWRpv6mCZ8GEG2PgQxkQF5zAJrgLmWYVBAA\n"
pavleradojkovic 0:ba7e439238ab 84 "cJjI4e00X9icxw3A1iNZRfz+VXqG7pRgIvGu0eZVRvaZxRsIdF+ssGSEj4k4HKGn\n"
pavleradojkovic 0:ba7e439238ab 85 "kCFPAm694GFn1PhChw8K98kEbSqpL+9Cpd/do1PbmB6B+Zpye1reTz5/olig4het\n"
pavleradojkovic 0:ba7e439238ab 86 "ZwIDAQABo4IBIzCCAR8wDgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8C\n"
pavleradojkovic 0:ba7e439238ab 87 "AQAwHQYDVR0OBBYEFPXN1TwIUPlqTzq3l9pWg+Zp0mj3MEUGA1UdIAQ+MDwwOgYE\n"
pavleradojkovic 0:ba7e439238ab 88 "VR0gADAyMDAGCCsGAQUFBwIBFiRodHRwczovL3d3dy5hbHBoYXNzbC5jb20vcmVw\n"
pavleradojkovic 0:ba7e439238ab 89 "b3NpdG9yeS8wMwYDVR0fBCwwKjAooCagJIYiaHR0cDovL2NybC5nbG9iYWxzaWdu\n"
pavleradojkovic 0:ba7e439238ab 90 "Lm5ldC9yb290LmNybDA9BggrBgEFBQcBAQQxMC8wLQYIKwYBBQUHMAGGIWh0dHA6\n"
pavleradojkovic 0:ba7e439238ab 91 "Ly9vY3NwLmdsb2JhbHNpZ24uY29tL3Jvb3RyMTAfBgNVHSMEGDAWgBRge2YaRQ2X\n"
pavleradojkovic 0:ba7e439238ab 92 "yolQL30EzTSo//z9SzANBgkqhkiG9w0BAQsFAAOCAQEAYEBoFkfnFo3bXKFWKsv0\n"
pavleradojkovic 0:ba7e439238ab 93 "XJuwHqJL9csCP/gLofKnQtS3TOvjZoDzJUN4LhsXVgdSGMvRqOzm+3M+pGKMgLTS\n"
pavleradojkovic 0:ba7e439238ab 94 "xRJzo9P6Aji+Yz2EuJnB8br3n8NA0VgYU8Fi3a8YQn80TsVD1XGwMADH45CuP1eG\n"
pavleradojkovic 0:ba7e439238ab 95 "l87qDBKOInDjZqdUfy4oy9RU0LMeYmcI+Sfhy+NmuCQbiWqJRGXy2UzSWByMTsCV\n"
pavleradojkovic 0:ba7e439238ab 96 "odTvZy84IOgu/5ZR8LrYPZJwR2UcnnNytGAMXOLRc3bgr07i5TelRS+KIz6HxzDm\n"
pavleradojkovic 0:ba7e439238ab 97 "MTh89N1SyvNTBCVXVmaU6Avu5gMUTu79bZRknl7OedSyps9AsUSoPocZXun4IRZZ\n"
pavleradojkovic 0:ba7e439238ab 98 "Uw==\n"
pavleradojkovic 0:ba7e439238ab 99 "-----END CERTIFICATE-----\n";
pavleradojkovic 0:ba7e439238ab 100
pavleradojkovic 0:ba7e439238ab 101 #elif defined(MQTT_TESTS_CA_CERT_MOSQUITTO)
pavleradojkovic 0:ba7e439238ab 102
pavleradojkovic 0:ba7e439238ab 103 /* test.mosquitto.org */
pavleradojkovic 0:ba7e439238ab 104 "-----BEGIN CERTIFICATE-----\n"
pavleradojkovic 0:ba7e439238ab 105 "MIIC8DCCAlmgAwIBAgIJAOD63PlXjJi8MA0GCSqGSIb3DQEBBQUAMIGQMQswCQYD\n"
pavleradojkovic 0:ba7e439238ab 106 "VQQGEwJHQjEXMBUGA1UECAwOVW5pdGVkIEtpbmdkb20xDjAMBgNVBAcMBURlcmJ5\n"
pavleradojkovic 0:ba7e439238ab 107 "MRIwEAYDVQQKDAlNb3NxdWl0dG8xCzAJBgNVBAsMAkNBMRYwFAYDVQQDDA1tb3Nx\n"
pavleradojkovic 0:ba7e439238ab 108 "dWl0dG8ub3JnMR8wHQYJKoZIhvcNAQkBFhByb2dlckBhdGNob28ub3JnMB4XDTEy\n"
pavleradojkovic 0:ba7e439238ab 109 "MDYyOTIyMTE1OVoXDTIyMDYyNzIyMTE1OVowgZAxCzAJBgNVBAYTAkdCMRcwFQYD\n"
pavleradojkovic 0:ba7e439238ab 110 "VQQIDA5Vbml0ZWQgS2luZ2RvbTEOMAwGA1UEBwwFRGVyYnkxEjAQBgNVBAoMCU1v\n"
pavleradojkovic 0:ba7e439238ab 111 "c3F1aXR0bzELMAkGA1UECwwCQ0ExFjAUBgNVBAMMDW1vc3F1aXR0by5vcmcxHzAd\n"
pavleradojkovic 0:ba7e439238ab 112 "BgkqhkiG9w0BCQEWEHJvZ2VyQGF0Y2hvby5vcmcwgZ8wDQYJKoZIhvcNAQEBBQAD\n"
pavleradojkovic 0:ba7e439238ab 113 "gY0AMIGJAoGBAMYkLmX7SqOT/jJCZoQ1NWdCrr/pq47m3xxyXcI+FLEmwbE3R9vM\n"
pavleradojkovic 0:ba7e439238ab 114 "rE6sRbP2S89pfrCt7iuITXPKycpUcIU0mtcT1OqxGBV2lb6RaOT2gC5pxyGaFJ+h\n"
pavleradojkovic 0:ba7e439238ab 115 "A+GIbdYKO3JprPxSBoRponZJvDGEZuM3N7p3S/lRoi7G5wG5mvUmaE5RAgMBAAGj\n"
pavleradojkovic 0:ba7e439238ab 116 "UDBOMB0GA1UdDgQWBBTad2QneVztIPQzRRGj6ZHKqJTv5jAfBgNVHSMEGDAWgBTa\n"
pavleradojkovic 0:ba7e439238ab 117 "d2QneVztIPQzRRGj6ZHKqJTv5jAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUA\n"
pavleradojkovic 0:ba7e439238ab 118 "A4GBAAqw1rK4NlRUCUBLhEFUQasjP7xfFqlVbE2cRy0Rs4o3KS0JwzQVBwG85xge\n"
pavleradojkovic 0:ba7e439238ab 119 "REyPOFdGdhBY2P1FNRy0MDr6xr+D2ZOwxs63dG1nnAnWZg7qwoLgpZ4fESPD3PkA\n"
pavleradojkovic 0:ba7e439238ab 120 "1ZgKJc2zbSQ9fCPxt2W3mdVav66c6fsb7els2W2Iz7gERJSX\n"
pavleradojkovic 0:ba7e439238ab 121 "-----END CERTIFICATE-----";
pavleradojkovic 0:ba7e439238ab 122
pavleradojkovic 0:ba7e439238ab 123 #else
pavleradojkovic 0:ba7e439238ab 124
pavleradojkovic 0:ba7e439238ab 125 /* Local mosquitto server certificate */
pavleradojkovic 0:ba7e439238ab 126 "-----BEGIN CERTIFICATE-----\n"
pavleradojkovic 0:ba7e439238ab 127 "MIIDzzCCAregAwIBAgIJAJF6EpVf4OtEMA0GCSqGSIb3DQEBCwUAMH4xCzAJBgNV\n"
pavleradojkovic 0:ba7e439238ab 128 "BAYTAlBMMRAwDgYDVQQIDAdtYXNvdmlhMREwDwYDVQQHDAhXYXJzemF3YTENMAsG\n"
pavleradojkovic 0:ba7e439238ab 129 "A1UECgwEbW9iaTEMMAoGA1UECwwDc2lsMRUwEwYDVQQDDAwxOTIuMTY4LjguNTIx\n"
pavleradojkovic 0:ba7e439238ab 130 "FjAUBgkqhkiG9w0BCQEWB21AbS5jb20wHhcNMTkwNTIxMDkzNjQ4WhcNMjQwNTIw\n"
pavleradojkovic 0:ba7e439238ab 131 "MDkzNjQ4WjB+MQswCQYDVQQGEwJQTDEQMA4GA1UECAwHbWFzb3ZpYTERMA8GA1UE\n"
pavleradojkovic 0:ba7e439238ab 132 "BwwIV2Fyc3phd2ExDTALBgNVBAoMBG1vYmkxDDAKBgNVBAsMA3NpbDEVMBMGA1UE\n"
pavleradojkovic 0:ba7e439238ab 133 "AwwMMTkyLjE2OC44LjUyMRYwFAYJKoZIhvcNAQkBFgdtQG0uY29tMIIBIjANBgkq\n"
pavleradojkovic 0:ba7e439238ab 134 "hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAz9+wntWYYOeDrd4EdUXF09OG54LbRyCY\n"
pavleradojkovic 0:ba7e439238ab 135 "nB+hzjVaPZM36RLE1ea/S04sb3T5MT5QzGi987B9KtAcDQMY9sSjv7XC8wqCv9wd\n"
pavleradojkovic 0:ba7e439238ab 136 "HDeSf3zRyiVFSbhjWBi4i7BcEHLEjXUinWowwE7QV8UpAKJUsWBX1w8vbe7ooYvX\n"
pavleradojkovic 0:ba7e439238ab 137 "y3JNPMfhtwGSVtqY0PeAHviLo6Lg8oFJFocFHeDh08W9p5J51SdRh4/CK+eVRpLd\n"
pavleradojkovic 0:ba7e439238ab 138 "N1vtEePNuemZyM2HT839rPO53j9/Vvbl2nEfDCn3+jSPCcNSwiBsz0ErxZgW76fV\n"
pavleradojkovic 0:ba7e439238ab 139 "wJnhcBSStMVrd1KhAcf1Um56jSIXMT0sMDk4j8sr/7ROJ72HjXSntwIDAQABo1Aw\n"
pavleradojkovic 0:ba7e439238ab 140 "TjAdBgNVHQ4EFgQUhOGXTz5aztPFKmEV2g/tKwA8NMswHwYDVR0jBBgwFoAUhOGX\n"
pavleradojkovic 0:ba7e439238ab 141 "Tz5aztPFKmEV2g/tKwA8NMswDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOC\n"
pavleradojkovic 0:ba7e439238ab 142 "AQEATnQzWf+MYEwtKDZfrxR5SJnBHc5H4Frq2wNVY+h+p/dOUxpshfa0/2AgDGzX\n"
pavleradojkovic 0:ba7e439238ab 143 "+pIQpA9o5Zo00sX6Fa7gazheWw0iytSEIlFy9vvEm9EG2iH/Bsoki4E6GM334xUF\n"
pavleradojkovic 0:ba7e439238ab 144 "1o+LH6vVm0J3DIGOAUup6gLs2efGME59hFJefooEAzVhVqgSgPVV09ZCSMo8M6no\n"
pavleradojkovic 0:ba7e439238ab 145 "qlUfl2sGOJ5mchA3bdGuF2YlWACngwgf/cOUunkoZixz2Nou6ma8antAKTGl9fkK\n"
pavleradojkovic 0:ba7e439238ab 146 "320LiO6s7tnQ13B9fjd9sZMnIZVZVO962oGm7KaLWAQPrLNX5hypIpo3iHqdepbG\n"
pavleradojkovic 0:ba7e439238ab 147 "cOTba8KCydjqsOaXl/nYT+1ULQ==\n"
pavleradojkovic 0:ba7e439238ab 148 "-----END CERTIFICATE-----";
pavleradojkovic 0:ba7e439238ab 149 #endif
pavleradojkovic 0:ba7e439238ab 150 /*
pavleradojkovic 0:ba7e439238ab 151 * (optional) Client certificate here in PEM format.
pavleradojkovic 0:ba7e439238ab 152 * Set NULL if you don't use.
pavleradojkovic 0:ba7e439238ab 153 * "-----BEGIN CERTIFICATE-----\n"
pavleradojkovic 0:ba7e439238ab 154 * ...
pavleradojkovic 0:ba7e439238ab 155 * "-----END CERTIFICATE-----\n";
pavleradojkovic 0:ba7e439238ab 156 */
pavleradojkovic 0:ba7e439238ab 157 const char *mqtt_global::SSL_CLIENT_CERT_PEM = NULL;
pavleradojkovic 0:ba7e439238ab 158
pavleradojkovic 0:ba7e439238ab 159 /*
pavleradojkovic 0:ba7e439238ab 160 * (optional) Client private key here in PEM format.
pavleradojkovic 0:ba7e439238ab 161 * Set NULL if you don't use.
pavleradojkovic 0:ba7e439238ab 162 * "-----BEGIN RSA PRIVATE KEY-----\n"
pavleradojkovic 0:ba7e439238ab 163 * ...
pavleradojkovic 0:ba7e439238ab 164 * "-----END RSA PRIVATE KEY-----\n";
pavleradojkovic 0:ba7e439238ab 165 */
pavleradojkovic 0:ba7e439238ab 166 const char *mqtt_global::SSL_CLIENT_PRIVATE_KEY_PEM = NULL;
pavleradojkovic 0:ba7e439238ab 167
pavleradojkovic 0:ba7e439238ab 168 #define MQTT_MBED_PASSWORD_PROTECTION_AVAILABLE
pavleradojkovic 0:ba7e439238ab 169
pavleradojkovic 0:ba7e439238ab 170 MQTT::Message mqtt_global::default_message;
pavleradojkovic 0:ba7e439238ab 171 MQTTSN::Message mqtt_global::default_message_sn;
pavleradojkovic 0:ba7e439238ab 172
pavleradojkovic 0:ba7e439238ab 173 Case cases[] = {
pavleradojkovic 0:ba7e439238ab 174
pavleradojkovic 0:ba7e439238ab 175 // Legacy API
pavleradojkovic 0:ba7e439238ab 176 Case("MQTT_LEGACY_CONNECT", MQTT_LEGACY_CONNECT),
pavleradojkovic 0:ba7e439238ab 177 Case("MQTT_LEGACY_CONNECT_NOT_CONNECTED", MQTT_LEGACY_CONNECT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 178 Case("MQTT_LEGACY_SUBSCRIBE", MQTT_LEGACY_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 179 Case("MQTT_LEGACY_SUBSCRIBE_NETWORK_NOT_CONNECTED", MQTT_LEGACY_SUBSCRIBE_NETWORK_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 180 Case("MQTT_LEGACY_SUBSCRIBE_CLIENT_NOT_CONNECTED", MQTT_LEGACY_SUBSCRIBE_CLIENT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 181 Case("MQTT_LEGACY_SUBSCRIBE_TOPIC_TOO_LONG", MQTT_LEGACY_SUBSCRIBE_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 182 Case("MQTT_LEGACY_SUBSCRIBE_INVALID_MESSAGE_HANDLER", MQTT_LEGACY_SUBSCRIBE_INVALID_MESSAGE_HANDLER),
pavleradojkovic 0:ba7e439238ab 183 #if MBED_CONF_MBED_MQTT_TESTS_PUBLIC_TOPIC_ENABLE
pavleradojkovic 0:ba7e439238ab 184 Case("MQTT_LEGACY_SUBSCRIBE_RECEIVE", MQTT_LEGACY_SUBSCRIBE_RECEIVE),
pavleradojkovic 0:ba7e439238ab 185 #endif
pavleradojkovic 0:ba7e439238ab 186 Case("MQTT_LEGACY_UNSUBSCRIBE_WITHOUT_SUBSCRIBE", MQTT_LEGACY_UNSUBSCRIBE_WITHOUT_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 187 Case("MQTT_LEGACY_UNSUBSCRIBE_INVALID", MQTT_LEGACY_UNSUBSCRIBE_INVALID),
pavleradojkovic 0:ba7e439238ab 188 Case("MQTT_LEGACY_PUBLISH", MQTT_LEGACY_PUBLISH),
pavleradojkovic 0:ba7e439238ab 189 Case("MQTT_LEGACY_PUBLISH_NOT_CONNECTED", MQTT_LEGACY_PUBLISH_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 190 Case("MQTT_LEGACY_PUBLISH_TOPIC_TOO_LONG", MQTT_LEGACY_PUBLISH_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 191 #if MBED_CONF_MBED_MQTT_TESTS_USERNAME_PASSWORD_PROTECTION_ENABLE
pavleradojkovic 0:ba7e439238ab 192 Case("MQTT_LEGACY_CONNECT_USER_PASSWORD_INCORRECT", MQTT_LEGACY_CONNECT_USER_PASSWORD_INCORRECT),
pavleradojkovic 0:ba7e439238ab 193 #endif
pavleradojkovic 0:ba7e439238ab 194 #if MBED_CONF_MBED_MQTT_TESTS_USERNAME_PASSWORD_PROTECTION_ENABLE
pavleradojkovic 0:ba7e439238ab 195 Case("MQTT_LEGACY_CONNECT_SUBSCRIBE_PUBLISH_USER_PASSWORD", MQTT_LEGACY_CONNECT_SUBSCRIBE_PUBLISH_USER_PASSWORD),
pavleradojkovic 0:ba7e439238ab 196 #endif
pavleradojkovic 0:ba7e439238ab 197 Case("MQTT_LEGACY_CONNECT_SUBSCRIBE_PUBLISH", MQTT_LEGACY_CONNECT_SUBSCRIBE_PUBLISH),
pavleradojkovic 0:ba7e439238ab 198 #if MBED_CONF_MBED_MQTT_TESTS_TLS_ENABLE
pavleradojkovic 0:ba7e439238ab 199 Case("MQTT_LEGACY_TLS_CONNECT_SUBSCRIBE_PUBLISH", MQTT_LEGACY_TLS_CONNECT_SUBSCRIBE_PUBLISH),
pavleradojkovic 0:ba7e439238ab 200 #endif
pavleradojkovic 0:ba7e439238ab 201
pavleradojkovic 0:ba7e439238ab 202 #if MBED_CONF_MBED_MQTT_TESTS_MQTT_SN_ENABLE
pavleradojkovic 0:ba7e439238ab 203 // MQTT-SN
pavleradojkovic 0:ba7e439238ab 204 Case("MQTTSN_LEGACY_CONNECT", MQTTSN_LEGACY_CONNECT),
pavleradojkovic 0:ba7e439238ab 205 Case("MQTTSN_LEGACY_CONNECT_NOT_CONNECTED", MQTTSN_LEGACY_CONNECT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 206 Case("MQTTSN_LEGACY_SUBSCRIBE", MQTTSN_LEGACY_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 207 Case("MQTTSN_LEGACY_SUBSCRIBE_NETWORK_NOT_CONNECTED", MQTTSN_LEGACY_SUBSCRIBE_NETWORK_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 208 // Case("MQTTSN_LEGACY_SUBSCRIBE_CLIENT_NOT_CONNECTED", MQTTSN_LEGACY_SUBSCRIBE_CLIENT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 209 Case("MQTTSN_LEGACY_SUBSCRIBE_TOPIC_TOO_LONG", MQTTSN_LEGACY_SUBSCRIBE_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 210 Case("MQTTSN_LEGACY_SUBSCRIBE_INVALID_MESSAGE_HANDLER", MQTTSN_LEGACY_SUBSCRIBE_INVALID_MESSAGE_HANDLER),
pavleradojkovic 0:ba7e439238ab 211 #if MBED_CONF_MBED_MQTT_TESTS_PUBLIC_TOPIC_ENABLE
pavleradojkovic 0:ba7e439238ab 212 Case("MQTTSN_LEGACY_SUBSCRIBE_RECEIVE", MQTTSN_LEGACY_SUBSCRIBE_RECEIVE),
pavleradojkovic 0:ba7e439238ab 213 #endif
pavleradojkovic 0:ba7e439238ab 214 Case("MQTTSN_LEGACY_UNSUBSCRIBE_WITHOUT_SUBSCRIBE", MQTTSN_LEGACY_UNSUBSCRIBE_WITHOUT_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 215 Case("MQTTSN_LEGACY_UNSUBSCRIBE_INVALID", MQTTSN_LEGACY_UNSUBSCRIBE_INVALID),
pavleradojkovic 0:ba7e439238ab 216 Case("MQTTSN_LEGACY_PUBLISH", MQTTSN_LEGACY_PUBLISH),
pavleradojkovic 0:ba7e439238ab 217 Case("MQTTSN_LEGACY_PUBLISH_NOT_CONNECTED", MQTTSN_LEGACY_PUBLISH_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 218 Case("MQTTSN_LEGACY_PUBLISH_TOPIC_TOO_LONG", MQTTSN_LEGACY_PUBLISH_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 219 Case("MQTTSN_LEGACY_UDP_CONNECT_SUBSCRIBE_PUBLISH", MQTTSN_LEGACY_UDP_CONNECT_SUBSCRIBE_PUBLISH),
pavleradojkovic 0:ba7e439238ab 220 Case("MQTTSN_LEGACY_IS_CONNECTED", MQTTSN_LEGACY_IS_CONNECTED),
pavleradojkovic 0:ba7e439238ab 221 Case("MQTTSN_LEGACY_IS_CONNECTED_CLIENT_NOT_CONNECTED", MQTTSN_LEGACY_IS_CONNECTED_CLIENT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 222 Case("MQTTSN_LEGACY_IS_CONNECTED_NETWORK_NOT_CONNECTED", MQTTSN_LEGACY_IS_CONNECTED_NETWORK_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 223 #endif
pavleradojkovic 0:ba7e439238ab 224
pavleradojkovic 0:ba7e439238ab 225 // New mbed-os API
pavleradojkovic 0:ba7e439238ab 226 Case("MQTT_CONNECT", MQTT_CONNECT),
pavleradojkovic 0:ba7e439238ab 227 Case("MQTT_CONNECT_NOT_CONNECTED", MQTT_CONNECT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 228 Case("MQTT_SUBSCRIBE", MQTT_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 229 Case("MQTT_SUBSCRIBE_NETWORK_NOT_CONNECTED", MQTT_SUBSCRIBE_NETWORK_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 230 Case("MQTT_SUBSCRIBE_CLIENT_NOT_CONNECTED", MQTT_SUBSCRIBE_CLIENT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 231 Case("MQTT_SUBSCRIBE_TOPIC_TOO_LONG", MQTT_SUBSCRIBE_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 232 Case("MQTT_SUBSCRIBE_INVALID_MESSAGE_HANDLER", MQTT_SUBSCRIBE_INVALID_MESSAGE_HANDLER),
pavleradojkovic 0:ba7e439238ab 233 #if MBED_CONF_MBED_MQTT_TESTS_PUBLIC_TOPIC_ENABLE
pavleradojkovic 0:ba7e439238ab 234 Case("MQTT_SUBSCRIBE_RECEIVE", MQTT_SUBSCRIBE_RECEIVE),
pavleradojkovic 0:ba7e439238ab 235 #endif
pavleradojkovic 0:ba7e439238ab 236 Case("MQTT_UNSUBSCRIBE_WITHOUT_SUBSCRIBE", MQTT_UNSUBSCRIBE_WITHOUT_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 237 Case("MQTT_UNSUBSCRIBE_INVALID", MQTT_UNSUBSCRIBE_INVALID),
pavleradojkovic 0:ba7e439238ab 238 Case("MQTT_PUBLISH", MQTT_PUBLISH),
pavleradojkovic 0:ba7e439238ab 239 Case("MQTT_PUBLISH_NOT_CONNECTED", MQTT_PUBLISH_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 240 Case("MQTT_PUBLISH_TOPIC_TOO_LONG", MQTT_PUBLISH_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 241 #if MBED_CONF_MBED_MQTT_TESTS_USERNAME_PASSWORD_PROTECTION_ENABLE
pavleradojkovic 0:ba7e439238ab 242 Case("MQTT_CONNECT_USER_PASSWORD_INCORRECT", MQTT_CONNECT_USER_PASSWORD_INCORRECT),
pavleradojkovic 0:ba7e439238ab 243 #endif
pavleradojkovic 0:ba7e439238ab 244 #if MBED_CONF_MBED_MQTT_TESTS_USERNAME_PASSWORD_PROTECTION_ENABLE
pavleradojkovic 0:ba7e439238ab 245 Case("MQTT_CONNECT_SUBSCRIBE_PUBLISH_USER_PASSWORD", MQTT_CONNECT_SUBSCRIBE_PUBLISH_USER_PASSWORD),
pavleradojkovic 0:ba7e439238ab 246 #endif
pavleradojkovic 0:ba7e439238ab 247 Case("MQTT_CONNECT_SUBSCRIBE_PUBLISH", MQTT_CONNECT_SUBSCRIBE_PUBLISH),
pavleradojkovic 0:ba7e439238ab 248 #if MBED_CONF_MBED_MQTT_TESTS_TLS_ENABLE
pavleradojkovic 0:ba7e439238ab 249 Case("MQTT_TLS_CONNECT_SUBSCRIBE_PUBLISH", MQTT_TLS_CONNECT_SUBSCRIBE_PUBLISH),
pavleradojkovic 0:ba7e439238ab 250 #endif
pavleradojkovic 0:ba7e439238ab 251
pavleradojkovic 0:ba7e439238ab 252 #if MBED_CONF_MBED_MQTT_TESTS_MQTT_SN_ENABLE
pavleradojkovic 0:ba7e439238ab 253 // MQTT-SN new API
pavleradojkovic 0:ba7e439238ab 254 Case("MQTTSN_TEST_CONNECT", MQTTSN_TEST_CONNECT),
pavleradojkovic 0:ba7e439238ab 255 Case("MQTTSN_CONNECT_NOT_CONNECTED", MQTTSN_CONNECT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 256 Case("MQTTSN_TEST_SUBSCRIBE", MQTTSN_TEST_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 257 Case("MQTTSN_SUBSCRIBE_NETWORK_NOT_CONNECTED", MQTTSN_SUBSCRIBE_NETWORK_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 258 // Case("MQTTSN_SUBSCRIBE_CLIENT_NOT_CONNECTED", MQTTSN_SUBSCRIBE_CLIENT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 259 Case("MQTTSN_SUBSCRIBE_TOPIC_TOO_LONG", MQTTSN_SUBSCRIBE_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 260 Case("MQTTSN_SUBSCRIBE_INVALID_MESSAGE_HANDLER", MQTTSN_SUBSCRIBE_INVALID_MESSAGE_HANDLER),
pavleradojkovic 0:ba7e439238ab 261 #if MBED_CONF_MBED_MQTT_TESTS_PUBLIC_TOPIC_ENABLE
pavleradojkovic 0:ba7e439238ab 262 Case("MQTTSN_SUBSCRIBE_RECEIVE", MQTTSN_SUBSCRIBE_RECEIVE),
pavleradojkovic 0:ba7e439238ab 263 #endif
pavleradojkovic 0:ba7e439238ab 264 Case("MQTTSN_UNSUBSCRIBE_WITHOUT_SUBSCRIBE", MQTTSN_UNSUBSCRIBE_WITHOUT_SUBSCRIBE),
pavleradojkovic 0:ba7e439238ab 265 Case("MQTTSN_UNSUBSCRIBE_INVALID", MQTTSN_UNSUBSCRIBE_INVALID),
pavleradojkovic 0:ba7e439238ab 266 Case("MQTTSN_TEST_PUBLISH", MQTTSN_TEST_PUBLISH),
pavleradojkovic 0:ba7e439238ab 267 Case("MQTTSN_PUBLISH_NOT_CONNECTED", MQTTSN_PUBLISH_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 268 Case("MQTTSN_PUBLISH_TOPIC_TOO_LONG", MQTTSN_PUBLISH_TOPIC_TOO_LONG),
pavleradojkovic 0:ba7e439238ab 269 Case("MQTTSN_UDP_CONNECT_SUBSCRIBE_PUBLISH", MQTTSN_UDP_CONNECT_SUBSCRIBE_PUBLISH),
pavleradojkovic 0:ba7e439238ab 270 #if MBED_CONF_MBED_MQTT_TESTS_TLS_ENABLE
pavleradojkovic 0:ba7e439238ab 271 Case("MQTTSN_DTLS_CONNECT_SUBSCRIBE_PUBLISH", MQTTSN_DTLS_CONNECT_SUBSCRIBE_PUBLISH),
pavleradojkovic 0:ba7e439238ab 272 #endif
pavleradojkovic 0:ba7e439238ab 273 Case("MQTTSN_IS_CONNECTED", MQTTSN_IS_CONNECTED),
pavleradojkovic 0:ba7e439238ab 274 Case("MQTTSN_IS_CONNECTED_CLIENT_NOT_CONNECTED", MQTTSN_IS_CONNECTED_CLIENT_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 275 Case("MQTTSN_IS_CONNECTED_NETWORK_NOT_CONNECTED", MQTTSN_IS_CONNECTED_NETWORK_NOT_CONNECTED),
pavleradojkovic 0:ba7e439238ab 276 #endif
pavleradojkovic 0:ba7e439238ab 277 };
pavleradojkovic 0:ba7e439238ab 278
pavleradojkovic 0:ba7e439238ab 279 int arrivedcount = 0;
pavleradojkovic 0:ba7e439238ab 280 int arrivedcountSN = 0;
pavleradojkovic 0:ba7e439238ab 281
pavleradojkovic 0:ba7e439238ab 282 void messageArrived(MQTT::MessageData &md)
pavleradojkovic 0:ba7e439238ab 283 {
pavleradojkovic 0:ba7e439238ab 284 MQTT::Message &message = md.message;
pavleradojkovic 0:ba7e439238ab 285 printf("Message arrived: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
pavleradojkovic 0:ba7e439238ab 286 printf("Payload %.*s\r\n", message.payloadlen, (char *)message.payload);
pavleradojkovic 0:ba7e439238ab 287 ++arrivedcount;
pavleradojkovic 0:ba7e439238ab 288 printf("arrived msg: %d\n", arrivedcount);
pavleradojkovic 0:ba7e439238ab 289 }
pavleradojkovic 0:ba7e439238ab 290
pavleradojkovic 0:ba7e439238ab 291 void messageArrivedSN(MQTTSN::MessageData &md)
pavleradojkovic 0:ba7e439238ab 292 {
pavleradojkovic 0:ba7e439238ab 293 MQTTSN::Message &message = md.message;
pavleradojkovic 0:ba7e439238ab 294 printf("Message arrived SN: qos %d, retained %d, dup %d, packetid %d\r\n", message.qos, message.retained, message.dup, message.id);
pavleradojkovic 0:ba7e439238ab 295 printf("Payload %.*s\r\n", message.payloadlen, (char *)message.payload);
pavleradojkovic 0:ba7e439238ab 296 ++arrivedcountSN;
pavleradojkovic 0:ba7e439238ab 297 printf("arrived msg: %d\n", arrivedcountSN);
pavleradojkovic 0:ba7e439238ab 298 }
pavleradojkovic 0:ba7e439238ab 299
pavleradojkovic 0:ba7e439238ab 300 void init_topic_sn(MQTTSN_topicid &topic_sn)
pavleradojkovic 0:ba7e439238ab 301 {
pavleradojkovic 0:ba7e439238ab 302 topic_sn.type = MQTTSN_TOPIC_TYPE_NORMAL;
pavleradojkovic 0:ba7e439238ab 303 topic_sn.data.long_.len = strlen(mqtt_global::topic);
pavleradojkovic 0:ba7e439238ab 304 topic_sn.data.long_.name = const_cast<char *>(mqtt_global::topic);
pavleradojkovic 0:ba7e439238ab 305 }
pavleradojkovic 0:ba7e439238ab 306
pavleradojkovic 0:ba7e439238ab 307 void init_topic_sn_too_long(MQTTSN_topicid &topic_sn)
pavleradojkovic 0:ba7e439238ab 308 {
pavleradojkovic 0:ba7e439238ab 309 topic_sn.type = MQTTSN_TOPIC_TYPE_NORMAL;
pavleradojkovic 0:ba7e439238ab 310 topic_sn.data.long_.len = strlen(mqtt_global::topic_too_long);
pavleradojkovic 0:ba7e439238ab 311 topic_sn.data.long_.name = const_cast<char *>(mqtt_global::topic_too_long);
pavleradojkovic 0:ba7e439238ab 312 }
pavleradojkovic 0:ba7e439238ab 313
pavleradojkovic 0:ba7e439238ab 314 // Test setup
pavleradojkovic 0:ba7e439238ab 315 utest::v1::status_t test_setup(const size_t number_of_cases)
pavleradojkovic 0:ba7e439238ab 316 {
pavleradojkovic 0:ba7e439238ab 317 #ifdef MBED_GREENTEA_TEST_INTERFACE_TIMEOUT_S
pavleradojkovic 0:ba7e439238ab 318 GREENTEA_SETUP(MBED_GREENTEA_TEST_INTERFACE_TIMEOUT_S, "default_auto");
pavleradojkovic 0:ba7e439238ab 319 #else
pavleradojkovic 0:ba7e439238ab 320 GREENTEA_SETUP(480, "default_auto");
pavleradojkovic 0:ba7e439238ab 321 #endif
pavleradojkovic 0:ba7e439238ab 322
pavleradojkovic 0:ba7e439238ab 323 NetworkInterface *net = NetworkInterface::get_default_instance();
pavleradojkovic 0:ba7e439238ab 324 nsapi_error_t err = net->connect();
pavleradojkovic 0:ba7e439238ab 325 TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err);
pavleradojkovic 0:ba7e439238ab 326
pavleradojkovic 0:ba7e439238ab 327 SocketAddress addr;
pavleradojkovic 0:ba7e439238ab 328 err = net->get_ip_address(&addr);
pavleradojkovic 0:ba7e439238ab 329 TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err);
pavleradojkovic 0:ba7e439238ab 330
pavleradojkovic 0:ba7e439238ab 331 printf("MBED: TCPClient IP address is '%s'\n", addr.get_ip_address());
pavleradojkovic 0:ba7e439238ab 332
pavleradojkovic 0:ba7e439238ab 333 // Generate an string of length MAX_MQTT_PACKET_SIZE+1 with alphabet letters.
pavleradojkovic 0:ba7e439238ab 334 char c = 'a';
pavleradojkovic 0:ba7e439238ab 335 for (int i = 0; i < MBED_CONF_MBED_MQTT_MAX_PACKET_SIZE + 1; i++) {
pavleradojkovic 0:ba7e439238ab 336 mqtt_global::topic_too_long[i] = c;
pavleradojkovic 0:ba7e439238ab 337 if (c < 'z') {
pavleradojkovic 0:ba7e439238ab 338 c++;
pavleradojkovic 0:ba7e439238ab 339 } else {
pavleradojkovic 0:ba7e439238ab 340 c = 'a';
pavleradojkovic 0:ba7e439238ab 341 }
pavleradojkovic 0:ba7e439238ab 342 }
pavleradojkovic 0:ba7e439238ab 343
pavleradojkovic 0:ba7e439238ab 344 // Prepare a default message, to avoid code duplication at a later stage.
pavleradojkovic 0:ba7e439238ab 345 sprintf(mqtt_global::message_buffer, "%s", "MQTT_MBED_OS_TEST_MESSAGE");
pavleradojkovic 0:ba7e439238ab 346 mqtt_global::default_message.qos = MQTT::QOS0;
pavleradojkovic 0:ba7e439238ab 347 mqtt_global::default_message.retained = false;
pavleradojkovic 0:ba7e439238ab 348 mqtt_global::default_message.dup = false;
pavleradojkovic 0:ba7e439238ab 349 mqtt_global::default_message.payload = (void *)mqtt_global::message_buffer;
pavleradojkovic 0:ba7e439238ab 350 mqtt_global::default_message.payloadlen = strlen(mqtt_global::message_buffer) + 1;
pavleradojkovic 0:ba7e439238ab 351
pavleradojkovic 0:ba7e439238ab 352 sprintf(mqtt_global::message_buffer, "%s", "MQTTSN_MBED_OS_TEST_MESSAGE");
pavleradojkovic 0:ba7e439238ab 353 mqtt_global::default_message_sn.qos = MQTTSN::QOS0;
pavleradojkovic 0:ba7e439238ab 354 mqtt_global::default_message_sn.retained = false;
pavleradojkovic 0:ba7e439238ab 355 mqtt_global::default_message_sn.dup = false;
pavleradojkovic 0:ba7e439238ab 356 mqtt_global::default_message_sn.payload = (void *)mqtt_global::message_buffer;
pavleradojkovic 0:ba7e439238ab 357 mqtt_global::default_message_sn.payloadlen = strlen(mqtt_global::message_buffer) + 1;
pavleradojkovic 0:ba7e439238ab 358
pavleradojkovic 0:ba7e439238ab 359 mqtt_global::mbed_public_test_topic_sn.type = MQTTSN_TOPIC_TYPE_NORMAL;
pavleradojkovic 0:ba7e439238ab 360 mqtt_global::mbed_public_test_topic_sn.data.long_.len = strlen(mqtt_global::mbed_public_test_topic) + 1;
pavleradojkovic 0:ba7e439238ab 361 mqtt_global::mbed_public_test_topic_sn.data.long_.name = const_cast<char *>(mqtt_global::mbed_public_test_topic);
pavleradojkovic 0:ba7e439238ab 362
pavleradojkovic 0:ba7e439238ab 363 return verbose_test_setup_handler(number_of_cases);
pavleradojkovic 0:ba7e439238ab 364 }
pavleradojkovic 0:ba7e439238ab 365
pavleradojkovic 0:ba7e439238ab 366 void greentea_teardown(const size_t passed, const size_t failed, const failure_t failure)
pavleradojkovic 0:ba7e439238ab 367 {
pavleradojkovic 0:ba7e439238ab 368 NetworkInterface::get_default_instance()->disconnect();
pavleradojkovic 0:ba7e439238ab 369 return greentea_test_teardown_handler(passed, failed, failure);
pavleradojkovic 0:ba7e439238ab 370 }
pavleradojkovic 0:ba7e439238ab 371
pavleradojkovic 0:ba7e439238ab 372 Specification specification(test_setup, cases);
pavleradojkovic 0:ba7e439238ab 373
pavleradojkovic 0:ba7e439238ab 374 int main()
pavleradojkovic 0:ba7e439238ab 375 {
pavleradojkovic 0:ba7e439238ab 376 return !Harness::run(specification);
pavleradojkovic 0:ba7e439238ab 377 }