mirror of https://github.com/ARMmbed/mbed-os.git
Add TLSSocket greentea tests.
TLSSocket tests based on existing TCPSocket greentea tests and TLSSocket icetea tests.pull/9283/head
parent
31579fe4bb
commit
d568e2160b
|
@ -17,7 +17,7 @@ The target for this plan is to test:
|
|||
- [Socket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/Socket.h).
|
||||
- [UDPSocket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/UDPSocket.h).
|
||||
- [TCPSocket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/TCPSocket.h).
|
||||
- [TCPServer](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/TCPServer.h).
|
||||
- [TLSSocket](https://github.com/ARMmbed/mbed-os/blob/master/features/netsocket/TLSSocket.h).
|
||||
|
||||
Reference documentation: https://os.mbed.com/docs/latest/reference/network-socket.html
|
||||
|
||||
|
@ -102,35 +102,41 @@ time stream tcp6 nowait root internal
|
|||
You can connect to the test server with an NMAP tool like this:
|
||||
|
||||
```.sh
|
||||
$ nmap -sT -p7,9,13,37 echo.mbedcloudtesting.com
|
||||
$ nmap -sT -p7,9,13,37,2007,2009,2013 echo.mbedcloudtesting.com
|
||||
|
||||
Starting Nmap 7.12 ( https://nmap.org ) at 2018-04-05 16:17 EEST
|
||||
Starting Nmap 7.01 ( https://nmap.org ) at 2019-01-07 16:45 CET
|
||||
Nmap scan report for echo.mbedcloudtesting.com (52.215.34.155)
|
||||
Host is up (0.065s latency).
|
||||
Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:8584:60f8:bc9f:e614
|
||||
Host is up (0.027s latency).
|
||||
Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:3164:2a5c:75b3:970b
|
||||
rDNS record for 52.215.34.155: ec2-52-215-34-155.eu-west-1.compute.amazonaws.com
|
||||
PORT STATE SERVICE
|
||||
7/tcp open echo
|
||||
9/tcp open discard
|
||||
13/tcp open daytime
|
||||
37/tcp open time
|
||||
PORT STATE SERVICE
|
||||
7/tcp open echo
|
||||
9/tcp open discard
|
||||
13/tcp open daytime
|
||||
37/tcp open time
|
||||
2007/tcp open dectalk
|
||||
2009/tcp open news
|
||||
2013/tcp open raid-am
|
||||
|
||||
Nmap done: 1 IP address (1 host up) scanned in 0.17 seconds
|
||||
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds
|
||||
|
||||
$ sudo nmap -sT -p7,9,13,37 echo.mbedcloudtesting.com
|
||||
$ sudo nmap -sU -p7,9,13,37,2007,2009,2013 echo.mbedcloudtesting.com
|
||||
|
||||
Starting Nmap 7.12 ( https://nmap.org ) at 2018-04-05 16:16 EEST
|
||||
Starting Nmap 7.01 ( https://nmap.org ) at 2019-01-08 15:05 CET
|
||||
Nmap scan report for echo.mbedcloudtesting.com (52.215.34.155)
|
||||
Host is up (0.068s latency).
|
||||
Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:8584:60f8:bc9f:e614
|
||||
Host is up (0.044s latency).
|
||||
Other addresses for echo.mbedcloudtesting.com (not scanned): 2a05:d018:21f:3800:3164:2a5c:75b3:970b
|
||||
rDNS record for 52.215.34.155: ec2-52-215-34-155.eu-west-1.compute.amazonaws.com
|
||||
PORT STATE SERVICE
|
||||
7/tcp open echo
|
||||
9/tcp open discard
|
||||
13/tcp open daytime
|
||||
37/tcp open time
|
||||
PORT STATE SERVICE
|
||||
7/udp open echo
|
||||
9/udp open|filtered discard
|
||||
13/udp closed daytime
|
||||
37/udp closed time
|
||||
2007/udp closed raid-am
|
||||
2009/udp closed whosockami
|
||||
2013/udp closed raid-cd
|
||||
|
||||
Nmap done: 1 IP address (1 host up) scanned in 0.20 seconds
|
||||
Nmap done: 1 IP address (1 host up) scanned in 1.78 seconds
|
||||
```
|
||||
|
||||
### Ethernet test environment
|
||||
|
@ -242,10 +248,18 @@ content at minimum:
|
|||
"echo-server-port" : {
|
||||
"help" : "Port of echo server",
|
||||
"value" : "7"
|
||||
}
|
||||
},
|
||||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Echo port of echo server",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "2009"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -301,6 +315,10 @@ the `mbed_app.json` might look like this:
|
|||
"help" : "Port of echo server",
|
||||
"value" : "7"
|
||||
}
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server TLS",
|
||||
"value" : "2007"
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
"*": {
|
||||
|
@ -1651,8 +1669,6 @@ Subset for driver test
|
|||
|
||||
### For physical layer driver (emac, PPP):
|
||||
|
||||
- TCPSERVER_ACCEPT
|
||||
- TCPSERVER_LISTEN
|
||||
- TCPSOCKET_ECHOTEST
|
||||
- TCPSOCKET_ECHOTEST_BURST
|
||||
- TCPSOCKET_ECHOTEST_BURST_NONBLOCK
|
||||
|
@ -1671,4 +1687,4 @@ Subset for driver test
|
|||
|
||||
### For socket layer driver (AT-driven, external IP stack):
|
||||
|
||||
All Socket, UDPSocket, TCPSocket and TCPServer testcases.
|
||||
All Socket, UDPSocket, TCPSocket and TLSSocket testcases.
|
||||
|
|
|
@ -0,0 +1,214 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#define WIFI 2
|
||||
#if !defined(MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE) || \
|
||||
(MBED_CONF_TARGET_NETWORK_DEFAULT_INTERFACE_TYPE == WIFI && !defined(MBED_CONF_NSAPI_DEFAULT_WIFI_SSID))
|
||||
#error [NOT_SUPPORTED] No network configuration found for this target.
|
||||
#endif
|
||||
#ifndef MBED_CONF_APP_ECHO_SERVER_ADDR
|
||||
#error [NOT_SUPPORTED] Requires parameters from mbed_app.json
|
||||
#endif
|
||||
|
||||
#include "mbed.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "utest/utest_stack_trace.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
namespace {
|
||||
Timer tc_bucket; // Timer to limit a test cases run time
|
||||
}
|
||||
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
mbed_stats_socket_t tls_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT];
|
||||
#endif
|
||||
|
||||
char tls_global::rx_buffer[RX_BUFF_SIZE];
|
||||
char tls_global::tx_buffer[TX_BUFF_SIZE];
|
||||
|
||||
const char *tls_global::cert = \
|
||||
"-----BEGIN CERTIFICATE-----\n"
|
||||
"MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/\n"
|
||||
"MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT\n"
|
||||
"DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow\n"
|
||||
"SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT\n"
|
||||
"GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC\n"
|
||||
"AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF\n"
|
||||
"q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8\n"
|
||||
"SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0\n"
|
||||
"Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA\n"
|
||||
"a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj\n"
|
||||
"/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T\n"
|
||||
"AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG\n"
|
||||
"CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv\n"
|
||||
"bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k\n"
|
||||
"c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw\n"
|
||||
"VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC\n"
|
||||
"ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz\n"
|
||||
"MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu\n"
|
||||
"Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF\n"
|
||||
"AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo\n"
|
||||
"uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/\n"
|
||||
"wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu\n"
|
||||
"X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG\n"
|
||||
"PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6\n"
|
||||
"KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==\n"
|
||||
"-----END CERTIFICATE-----\n";
|
||||
|
||||
void drop_bad_packets(TLSSocket &sock, int orig_timeout)
|
||||
{
|
||||
nsapi_error_t err;
|
||||
sock.set_timeout(0);
|
||||
while (true) {
|
||||
err = sock.recv(NULL, 0);
|
||||
if (err == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
sock.set_timeout(orig_timeout);
|
||||
}
|
||||
|
||||
static void _ifup()
|
||||
{
|
||||
NetworkInterface *net = NetworkInterface::get_default_instance();
|
||||
nsapi_error_t err = net->connect();
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err);
|
||||
printf("MBED: TLSClient IP address is '%s'\n", net->get_ip_address());
|
||||
}
|
||||
|
||||
static void _ifdown()
|
||||
{
|
||||
NetworkInterface::get_default_instance()->disconnect();
|
||||
printf("MBED: ifdown\n");
|
||||
}
|
||||
|
||||
nsapi_error_t tlssocket_connect_to_srv(TLSSocket &sock, uint16_t port)
|
||||
{
|
||||
SocketAddress tls_addr;
|
||||
|
||||
NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tls_addr);
|
||||
tls_addr.set_port(port);
|
||||
|
||||
printf("MBED: Server '%s', port %d\n", tls_addr.get_ip_address(), tls_addr.get_port());
|
||||
|
||||
nsapi_error_t err = sock.set_root_ca_cert(tls_global::cert);
|
||||
if (err != NSAPI_ERROR_OK) {
|
||||
printf("Error from sock.set_root_ca_cert: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = sock.open(NetworkInterface::get_default_instance());
|
||||
if (err != NSAPI_ERROR_OK) {
|
||||
printf("Error from sock.open: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
err = sock.connect(tls_addr);
|
||||
if (err != NSAPI_ERROR_OK) {
|
||||
printf("Error from sock.connect: %d\n", err);
|
||||
return err;
|
||||
}
|
||||
|
||||
return NSAPI_ERROR_OK;
|
||||
}
|
||||
|
||||
nsapi_error_t tlssocket_connect_to_echo_srv(TLSSocket &sock)
|
||||
{
|
||||
return tlssocket_connect_to_srv(sock, MBED_CONF_APP_ECHO_SERVER_PORT_TLS);
|
||||
}
|
||||
|
||||
nsapi_error_t tlssocket_connect_to_discard_srv(TLSSocket &sock)
|
||||
{
|
||||
return tlssocket_connect_to_srv(sock, MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS);
|
||||
}
|
||||
|
||||
void fill_tx_buffer_ascii(char *buff, size_t len)
|
||||
{
|
||||
for (size_t i = 0; i < len; ++i) {
|
||||
buff[i] = (rand() % 43) + '0';
|
||||
}
|
||||
}
|
||||
|
||||
int split2half_rmng_tls_test_time()
|
||||
{
|
||||
return (tls_global::TESTS_TIMEOUT - tc_bucket.read()) / 2;
|
||||
}
|
||||
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
int fetch_stats()
|
||||
{
|
||||
return SocketStats::mbed_stats_socket_get_each(&tls_stats[0], MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT);
|
||||
}
|
||||
#endif
|
||||
|
||||
// Test setup
|
||||
utest::v1::status_t greentea_setup(const size_t number_of_cases)
|
||||
{
|
||||
GREENTEA_SETUP(tls_global::TESTS_TIMEOUT, "default_auto");
|
||||
_ifup();
|
||||
tc_bucket.start();
|
||||
return greentea_test_setup_handler(number_of_cases);
|
||||
}
|
||||
|
||||
void greentea_teardown(const size_t passed, const size_t failed, const failure_t failure)
|
||||
{
|
||||
tc_bucket.stop();
|
||||
_ifdown();
|
||||
return greentea_test_teardown_handler(passed, failed, failure);
|
||||
}
|
||||
|
||||
|
||||
Case cases[] = {
|
||||
Case("TLSSOCKET_ECHOTEST", TLSSOCKET_ECHOTEST),
|
||||
Case("TLSSOCKET_ECHOTEST_NONBLOCK", TLSSOCKET_ECHOTEST_NONBLOCK),
|
||||
Case("TLSSOCKET_CONNECT_INVALID", TLSSOCKET_CONNECT_INVALID),
|
||||
Case("TLSSOCKET_ECHOTEST_BURST", TLSSOCKET_ECHOTEST_BURST),
|
||||
Case("TLSSOCKET_ECHOTEST_BURST_NONBLOCK", TLSSOCKET_ECHOTEST_BURST_NONBLOCK),
|
||||
Case("TLSSOCKET_RECV_TIMEOUT", TLSSOCKET_RECV_TIMEOUT),
|
||||
Case("TLSSOCKET_ENDPOINT_CLOSE", TLSSOCKET_ENDPOINT_CLOSE),
|
||||
Case("TLSSOCKET_HANDSHAKE_INVALID", TLSSOCKET_HANDSHAKE_INVALID),
|
||||
Case("TLSSOCKET_OPEN_TWICE", TLSSOCKET_OPEN_TWICE),
|
||||
Case("TLSSOCKET_OPEN_LIMIT", TLSSOCKET_OPEN_LIMIT),
|
||||
Case("TLSSOCKET_OPEN_DESTRUCT", TLSSOCKET_OPEN_DESTRUCT),
|
||||
Case("TLSSOCKET_SEND_UNCONNECTED", TLSSOCKET_SEND_UNCONNECTED),
|
||||
Case("TLSSOCKET_SEND_CLOSED", TLSSOCKET_SEND_CLOSED),
|
||||
Case("TLSSOCKET_SEND_REPEAT", TLSSOCKET_SEND_REPEAT),
|
||||
Case("TLSSOCKET_SEND_TIMEOUT", TLSSOCKET_SEND_TIMEOUT),
|
||||
Case("TLSSOCKET_NO_CERT", TLSSOCKET_NO_CERT),
|
||||
Case("TLSSOCKET_SIMULTANEOUS", TLSSOCKET_SIMULTANEOUS)
|
||||
};
|
||||
|
||||
Specification specification(greentea_setup, cases, greentea_teardown, greentea_continue_handlers);
|
||||
|
||||
int retval;
|
||||
void run_test(void)
|
||||
{
|
||||
retval = !Harness::run(specification);
|
||||
}
|
||||
|
||||
static unsigned char stack_mem[8192];
|
||||
int main()
|
||||
{
|
||||
Thread *th = new Thread(osPriorityNormal, 8192, stack_mem, "tls_gt_thread");
|
||||
th->start(callback(run_test));
|
||||
th->join();
|
||||
return retval;
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef TLS_TESTS_H
|
||||
#define TLS_TESTS_H
|
||||
|
||||
NetworkInterface *get_interface();
|
||||
void drop_bad_packets(TLSSocket &sock, int orig_timeout);
|
||||
void fill_tx_buffer_ascii(char *buff, size_t len);
|
||||
nsapi_error_t tlssocket_connect_to_echo_srv(TLSSocket &sock);
|
||||
nsapi_error_t tlssocket_connect_to_discard_srv(TLSSocket &sock);
|
||||
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
extern mbed_stats_socket_t tls_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT];
|
||||
int fetch_stats(void);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Single testcase might take only half of the remaining execution time
|
||||
*/
|
||||
int split2half_rmng_tls_test_time(); // [s]
|
||||
|
||||
namespace tls_global {
|
||||
static const int TESTS_TIMEOUT = 480;
|
||||
static const int TLS_OS_STACK_SIZE = 2048;
|
||||
|
||||
static const int RX_BUFF_SIZE = 1220;
|
||||
static const int TX_BUFF_SIZE = 1220;
|
||||
|
||||
extern char rx_buffer[RX_BUFF_SIZE];
|
||||
extern char tx_buffer[TX_BUFF_SIZE];
|
||||
extern const char *cert;
|
||||
}
|
||||
|
||||
/*
|
||||
* Test cases
|
||||
*/
|
||||
void TLSSOCKET_CONNECT_INVALID();
|
||||
void TLSSOCKET_HANDSHAKE_INVALID();
|
||||
void TLSSOCKET_ECHOTEST();
|
||||
void TLSSOCKET_ECHOTEST_NONBLOCK();
|
||||
void TLSSOCKET_ECHOTEST_BURST();
|
||||
void TLSSOCKET_ECHOTEST_BURST_NONBLOCK();
|
||||
void TLSSOCKET_ENDPOINT_CLOSE();
|
||||
void TLSSOCKET_RECV_TIMEOUT();
|
||||
void TLSSOCKET_OPEN_TWICE();
|
||||
void TLSSOCKET_OPEN_LIMIT();
|
||||
void TLSSOCKET_OPEN_DESTRUCT();
|
||||
void TLSSOCKET_SEND_UNCONNECTED();
|
||||
void TLSSOCKET_SEND_CLOSED();
|
||||
void TLSSOCKET_SEND_REPEAT();
|
||||
void TLSSOCKET_NO_CERT();
|
||||
void TLSSOCKET_SIMULTANEOUS();
|
||||
void TLSSOCKET_SEND_TIMEOUT();
|
||||
|
||||
#endif //TLS_TESTS_H
|
|
@ -0,0 +1,41 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_CONNECT_INVALID()
|
||||
{
|
||||
TLSSocket sock;
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance()));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
|
||||
|
||||
TEST_ASSERT(sock.connect(NULL, MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS) < 0);
|
||||
TEST_ASSERT(sock.connect("", MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS) < 0);
|
||||
TEST_ASSERT(sock.connect("", 0) < 0);
|
||||
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK,
|
||||
sock.connect(MBED_CONF_APP_ECHO_SERVER_ADDR, MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS));
|
||||
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,209 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
namespace {
|
||||
static const int SIGNAL_SIGIO = 0x1;
|
||||
static const int SIGIO_TIMEOUT = 20000; //[ms]
|
||||
|
||||
static const int BUFF_SIZE = 1200;
|
||||
static const int PKTS = 22;
|
||||
static const int pkt_sizes[PKTS] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, \
|
||||
100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, \
|
||||
1100, 1200
|
||||
};
|
||||
TLSSocket *sock;
|
||||
Semaphore tx_sem(0, 1);
|
||||
events::EventQueue *event_queue;
|
||||
int bytes2recv;
|
||||
int bytes2recv_total;
|
||||
|
||||
Timer tc_exec_time;
|
||||
int time_allotted;
|
||||
bool receive_error;
|
||||
}
|
||||
|
||||
void tlssocket_echotest_nonblock_receive();
|
||||
|
||||
static void _sigio_handler(osThreadId id)
|
||||
{
|
||||
osSignalSet(id, SIGNAL_SIGIO);
|
||||
if (event_queue != NULL) {
|
||||
event_queue->call(tlssocket_echotest_nonblock_receive);
|
||||
}
|
||||
}
|
||||
|
||||
void TLSSOCKET_ECHOTEST()
|
||||
{
|
||||
sock = new TLSSocket;
|
||||
if (tlssocket_connect_to_echo_srv(*sock) != NSAPI_ERROR_OK) {
|
||||
printf("Error from tlssocket_connect_to_echo_srv\n");
|
||||
TEST_FAIL();
|
||||
return;
|
||||
delete sock;
|
||||
}
|
||||
|
||||
int recvd;
|
||||
int sent;
|
||||
int x = 0;
|
||||
for (int pkt_s = pkt_sizes[x]; x < PKTS; pkt_s = pkt_sizes[x++]) {
|
||||
fill_tx_buffer_ascii(tls_global::tx_buffer, BUFF_SIZE);
|
||||
|
||||
sent = sock->send(tls_global::tx_buffer, pkt_s);
|
||||
if (sent < 0) {
|
||||
printf("[Round#%02d] network error %d\n", x, sent);
|
||||
TEST_FAIL();
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close());
|
||||
delete sock;
|
||||
return;
|
||||
}
|
||||
|
||||
int bytes2recv = sent;
|
||||
while (bytes2recv) {
|
||||
recvd = sock->recv(&(tls_global::rx_buffer[sent - bytes2recv]), bytes2recv);
|
||||
if (recvd < 0) {
|
||||
printf("[Round#%02d] network error %d\n", x, recvd);
|
||||
TEST_FAIL();
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close());
|
||||
delete sock;
|
||||
return;
|
||||
}
|
||||
bytes2recv -= recvd;
|
||||
}
|
||||
TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, sent));
|
||||
}
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close());
|
||||
delete sock;
|
||||
}
|
||||
|
||||
void tlssocket_echotest_nonblock_receive()
|
||||
{
|
||||
int recvd = sock->recv(&(tls_global::rx_buffer[bytes2recv_total - bytes2recv]), bytes2recv);
|
||||
if (recvd == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
if (tc_exec_time.read() >= time_allotted) {
|
||||
receive_error = true;
|
||||
}
|
||||
return;
|
||||
} else if (recvd < 0) {
|
||||
receive_error = true;
|
||||
} else {
|
||||
bytes2recv -= recvd;
|
||||
}
|
||||
|
||||
if (bytes2recv == 0) {
|
||||
TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, bytes2recv_total));
|
||||
|
||||
static int round = 0;
|
||||
printf("[Recevr#%02d] bytes received: %d\n", round++, bytes2recv_total);
|
||||
tx_sem.release();
|
||||
}
|
||||
else if (receive_error || bytes2recv < 0) {
|
||||
TEST_FAIL();
|
||||
tx_sem.release();
|
||||
}
|
||||
// else - no error, not all bytes were received yet.
|
||||
}
|
||||
|
||||
void TLSSOCKET_ECHOTEST_NONBLOCK()
|
||||
{
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
int j = 0;
|
||||
int count = fetch_stats();
|
||||
for (; j < count; j++) {
|
||||
TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state);
|
||||
}
|
||||
#endif
|
||||
sock = new TLSSocket;
|
||||
tc_exec_time.start();
|
||||
time_allotted = split2half_rmng_tls_test_time(); // [s]
|
||||
|
||||
tlssocket_connect_to_echo_srv(*sock);
|
||||
sock->set_blocking(false);
|
||||
sock->sigio(callback(_sigio_handler, ThisThread::get_id()));
|
||||
|
||||
int bytes2send;
|
||||
int sent;
|
||||
int s_idx = 0;
|
||||
receive_error = false;
|
||||
unsigned char *stack_mem = (unsigned char *)malloc(tls_global::TLS_OS_STACK_SIZE);
|
||||
TEST_ASSERT_NOT_NULL(stack_mem);
|
||||
Thread *receiver_thread = new Thread(osPriorityNormal,
|
||||
tls_global::TLS_OS_STACK_SIZE,
|
||||
stack_mem,
|
||||
"receiver");
|
||||
EventQueue queue(2 * EVENTS_EVENT_SIZE);
|
||||
event_queue = &queue;
|
||||
TEST_ASSERT_EQUAL(osOK, receiver_thread->start(callback(&queue, &EventQueue::dispatch_forever)));
|
||||
|
||||
for (int pkt_s = pkt_sizes[s_idx]; s_idx < PKTS; ++s_idx) {
|
||||
pkt_s = pkt_sizes[s_idx];
|
||||
bytes2recv = pkt_s;
|
||||
bytes2recv_total = pkt_s;
|
||||
|
||||
fill_tx_buffer_ascii(tls_global::tx_buffer, pkt_s);
|
||||
|
||||
bytes2send = pkt_s;
|
||||
while (bytes2send > 0) {
|
||||
sent = sock->send(&(tls_global::tx_buffer[pkt_s - bytes2send]), bytes2send);
|
||||
if (sent == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
if (tc_exec_time.read() >= time_allotted ||
|
||||
osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) {
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
continue;
|
||||
} else if (sent <= 0) {
|
||||
printf("[Sender#%02d] network error %d\n", s_idx, sent);
|
||||
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
bytes2send -= sent;
|
||||
}
|
||||
printf("[Sender#%02d] bytes sent: %d\n", s_idx, pkt_s);
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
count = fetch_stats();
|
||||
for (j = 0; j < count; j++) {
|
||||
if ((tls_stats[j].state == SOCK_OPEN) && (tls_stats[j].proto == NSAPI_TLS)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
TEST_ASSERT_EQUAL(bytes2send, tls_stats[j].sent_bytes);
|
||||
#endif
|
||||
tx_sem.wait();
|
||||
if (receive_error) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
END:
|
||||
sock->sigio(NULL);
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close());
|
||||
receiver_thread->terminate();
|
||||
delete receiver_thread;
|
||||
receiver_thread = NULL;
|
||||
tc_exec_time.stop();
|
||||
free(stack_mem);
|
||||
delete sock;
|
||||
}
|
|
@ -0,0 +1,154 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
namespace {
|
||||
static const int SIGNAL_SIGIO = 0x1;
|
||||
static const int SIGIO_TIMEOUT = 20000; //[ms]
|
||||
|
||||
static const int BURST_CNT = 100;
|
||||
static const int BURST_SIZE = 1220;
|
||||
}
|
||||
|
||||
static void _sigio_handler(osThreadId id)
|
||||
{
|
||||
osSignalSet(id, SIGNAL_SIGIO);
|
||||
}
|
||||
|
||||
void TLSSOCKET_ECHOTEST_BURST()
|
||||
{
|
||||
TLSSocket *sock = new TLSSocket;
|
||||
tlssocket_connect_to_echo_srv(*sock);
|
||||
sock->sigio(callback(_sigio_handler, ThisThread::get_id()));
|
||||
|
||||
// TX buffer to be preserved for comparison
|
||||
fill_tx_buffer_ascii(tls_global::tx_buffer, BURST_SIZE);
|
||||
|
||||
int recvd;
|
||||
int bt_left;
|
||||
int sent;
|
||||
for (int i = 0; i < BURST_CNT; i++) {
|
||||
bt_left = BURST_SIZE;
|
||||
while (bt_left > 0) {
|
||||
sent = sock->send(&(tls_global::tx_buffer[BURST_SIZE - bt_left]), bt_left);
|
||||
if (sent == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) {
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
continue;
|
||||
} else if (sent < 0) {
|
||||
printf("[%02d] network error %d\n", i, sent);
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
bt_left -= sent;
|
||||
}
|
||||
|
||||
bt_left = BURST_SIZE;
|
||||
while (bt_left > 0) {
|
||||
recvd = sock->recv(&(tls_global::rx_buffer[BURST_SIZE - bt_left]), BURST_SIZE);
|
||||
if (recvd < 0) {
|
||||
printf("[%02d] network error %d\n", i, recvd);
|
||||
break;
|
||||
}
|
||||
bt_left -= recvd;
|
||||
}
|
||||
|
||||
if (bt_left != 0) {
|
||||
TEST_FAIL_MESSAGE("bt_left != 0");
|
||||
goto END;
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, BURST_SIZE));
|
||||
}
|
||||
END:
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close());
|
||||
delete sock;
|
||||
}
|
||||
|
||||
void TLSSOCKET_ECHOTEST_BURST_NONBLOCK()
|
||||
{
|
||||
TLSSocket *sock = new TLSSocket;
|
||||
tlssocket_connect_to_echo_srv(*sock);
|
||||
sock->set_blocking(false);
|
||||
sock->sigio(callback(_sigio_handler, ThisThread::get_id()));
|
||||
|
||||
// TX buffer to be preserved for comparison
|
||||
fill_tx_buffer_ascii(tls_global::tx_buffer, BURST_SIZE);
|
||||
|
||||
int sent;
|
||||
int recvd;
|
||||
int bt_left = 0;
|
||||
for (int i = 0; i < BURST_CNT; i++) {
|
||||
bt_left = BURST_SIZE;
|
||||
while (bt_left > 0) {
|
||||
sent = sock->send(&(tls_global::tx_buffer[BURST_SIZE - bt_left]), bt_left);
|
||||
if (sent == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) {
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
continue;
|
||||
} else if (sent < 0) {
|
||||
printf("[%02d] network error %d\n", i, sent);
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
bt_left -= sent;
|
||||
}
|
||||
if (bt_left != 0) {
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
|
||||
bt_left = BURST_SIZE;
|
||||
while (bt_left > 0) {
|
||||
recvd = sock->recv(&(tls_global::rx_buffer[BURST_SIZE - bt_left]), BURST_SIZE);
|
||||
if (recvd == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
if (osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) {
|
||||
printf("[bt#%02d] packet timeout...", i);
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
} else if (recvd < 0) {
|
||||
printf("[%02d] network error %d\n", i, recvd);
|
||||
break;
|
||||
}
|
||||
bt_left -= recvd;
|
||||
}
|
||||
|
||||
if (bt_left != 0) {
|
||||
printf("network error %d, missing %d bytes from a burst\n", recvd, bt_left);
|
||||
TEST_FAIL();
|
||||
goto END;
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL(0, memcmp(tls_global::tx_buffer, tls_global::rx_buffer, BURST_SIZE));
|
||||
}
|
||||
END:
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->close());
|
||||
delete sock;
|
||||
}
|
|
@ -0,0 +1,91 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
namespace {
|
||||
static const int SIGNAL_SIGIO = 0x1;
|
||||
static const int SIGIO_TIMEOUT = 20000; //[ms]
|
||||
}
|
||||
|
||||
static void _sigio_handler(osThreadId id)
|
||||
{
|
||||
osSignalSet(id, SIGNAL_SIGIO);
|
||||
}
|
||||
|
||||
static nsapi_error_t _tlssocket_connect_to_daytime_srv(TLSSocket &sock)
|
||||
{
|
||||
SocketAddress tls_addr;
|
||||
|
||||
NetworkInterface::get_default_instance()->gethostbyname(MBED_CONF_APP_ECHO_SERVER_ADDR, &tls_addr);
|
||||
tls_addr.set_port(2013);
|
||||
|
||||
nsapi_error_t err = sock.open(NetworkInterface::get_default_instance());
|
||||
if (err != NSAPI_ERROR_OK) {
|
||||
return err;
|
||||
}
|
||||
|
||||
return sock.connect(tls_addr);
|
||||
}
|
||||
|
||||
|
||||
void TLSSOCKET_ENDPOINT_CLOSE()
|
||||
{
|
||||
static const int MORE_THAN_AVAILABLE = 30;
|
||||
char buff[MORE_THAN_AVAILABLE];
|
||||
int time_allotted = split2half_rmng_tls_test_time(); // [s]
|
||||
Timer tc_exec_time;
|
||||
tc_exec_time.start();
|
||||
|
||||
TLSSocket sock;
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
|
||||
if (_tlssocket_connect_to_daytime_srv(sock) != NSAPI_ERROR_OK) {
|
||||
TEST_FAIL();
|
||||
return;
|
||||
}
|
||||
sock.sigio(callback(_sigio_handler, ThisThread::get_id()));
|
||||
|
||||
int recvd = 0;
|
||||
int recvd_total = 0;
|
||||
while (true) {
|
||||
recvd = sock.recv(&(buff[recvd_total]), MORE_THAN_AVAILABLE);
|
||||
if (recvd_total > 0 && recvd == 0) {
|
||||
break; // Endpoint closed socket, success
|
||||
} else if (recvd <= 0) {
|
||||
TEST_FAIL();
|
||||
break;
|
||||
} else if (recvd == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
if (tc_exec_time.read() >= time_allotted ||
|
||||
osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout) {
|
||||
TEST_FAIL();
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
recvd_total += recvd;
|
||||
TEST_ASSERT(recvd_total < MORE_THAN_AVAILABLE);
|
||||
}
|
||||
tc_exec_time.stop();
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_HANDSHAKE_INVALID()
|
||||
{
|
||||
TLSSocket sock;
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance()));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_CONNECTION,
|
||||
sock.connect("os.mbed.com", MBED_CONF_APP_ECHO_SERVER_DISCARD_PORT_TLS));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_NO_CERT()
|
||||
{
|
||||
TLSSocket sock;
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance()));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_AUTH_FAILURE,
|
||||
sock.connect(MBED_CONF_APP_ECHO_SERVER_ADDR, MBED_CONF_APP_ECHO_SERVER_PORT_TLS));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_OPEN_DESTRUCT()
|
||||
{
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
int count = fetch_stats();
|
||||
for (int j = 0; j < count; j++) {
|
||||
TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
TLSSocket *sock = new TLSSocket;
|
||||
if (!sock) {
|
||||
TEST_FAIL();
|
||||
}
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance()));
|
||||
delete sock;
|
||||
}
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
count = fetch_stats();
|
||||
for (int j = 0; j < count; j++) {
|
||||
TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state);
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
namespace {
|
||||
typedef struct TLSSocketItem {
|
||||
TLSSocket *sock;
|
||||
TLSSocketItem *next;
|
||||
} SocketItem;
|
||||
}
|
||||
|
||||
void TLSSOCKET_OPEN_LIMIT()
|
||||
{
|
||||
int open_sockets[2] = {0};
|
||||
|
||||
for (int i = 0; i < 2; i++) {
|
||||
TLSSocketItem *socket_list_head = NULL;
|
||||
TLSSocketItem *it;
|
||||
|
||||
TLSSocket *sock;
|
||||
int ret;
|
||||
while (true) {
|
||||
sock = new TLSSocket;
|
||||
if (!sock) {
|
||||
break;
|
||||
}
|
||||
ret = sock->open(NetworkInterface::get_default_instance());
|
||||
if (ret == NSAPI_ERROR_NO_MEMORY || ret == NSAPI_ERROR_NO_SOCKET) {
|
||||
printf("[round#%02d] unable to open new socket, error: %d\n", i, ret);
|
||||
delete sock;
|
||||
break;
|
||||
}
|
||||
|
||||
// Hopefully this doesn't interfere when trying to allocate more sockets
|
||||
it = new TLSSocketItem;
|
||||
if (!it) {
|
||||
delete sock;
|
||||
break;
|
||||
}
|
||||
|
||||
it->sock = sock;
|
||||
// Order of items in the list doesn't matter
|
||||
it->next = socket_list_head;
|
||||
socket_list_head = it;
|
||||
}
|
||||
|
||||
if (!socket_list_head) {
|
||||
break;
|
||||
}
|
||||
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
int count = fetch_stats();
|
||||
int open_count = 0;
|
||||
for (int j = 0; j < count; j++) {
|
||||
if ((tls_stats[j].state == SOCK_OPEN) && (tls_stats[j].proto == NSAPI_TLS)) {
|
||||
open_count++;
|
||||
}
|
||||
}
|
||||
TEST_ASSERT(open_count >= 4);
|
||||
#endif
|
||||
|
||||
TLSSocketItem *tmp;
|
||||
for (TLSSocketItem *it = socket_list_head; it;) {
|
||||
++open_sockets[i];
|
||||
tmp = it;
|
||||
it = it->next;
|
||||
socket_list_head = it;
|
||||
delete tmp->sock;
|
||||
delete tmp;
|
||||
}
|
||||
printf("[round#%02d] %d sockets opened\n", i, open_sockets[i]);
|
||||
}
|
||||
TEST_ASSERT_EQUAL(open_sockets[0], open_sockets[1]);
|
||||
TEST_ASSERT(open_sockets[0] >= 4);
|
||||
}
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_OPEN_TWICE()
|
||||
{
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
int count = fetch_stats();
|
||||
for (int j = 0; j < count; j++) {
|
||||
TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state);
|
||||
}
|
||||
#endif
|
||||
TLSSocket *sock = new TLSSocket;
|
||||
if (!sock) {
|
||||
TEST_FAIL();
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock->open(NetworkInterface::get_default_instance()));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_PARAMETER, sock->open(NetworkInterface::get_default_instance()));
|
||||
|
||||
delete sock;
|
||||
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
|
||||
count = fetch_stats();
|
||||
for (int j = 0; j < count; j++) {
|
||||
TEST_ASSERT_EQUAL(SOCK_CLOSED, tls_stats[j].state);
|
||||
}
|
||||
#endif
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
namespace {
|
||||
static const int SIGNAL_SIGIO = 0x1;
|
||||
static const int SIGIO_TIMEOUT = 20000; //[ms]
|
||||
}
|
||||
|
||||
static void _sigio_handler(osThreadId id)
|
||||
{
|
||||
osSignalSet(id, SIGNAL_SIGIO);
|
||||
}
|
||||
|
||||
void TLSSOCKET_RECV_TIMEOUT()
|
||||
{
|
||||
static const int DATA_LEN = 100;
|
||||
char buff[DATA_LEN] = {0};
|
||||
int time_allotted = split2half_rmng_tls_test_time(); // [s]
|
||||
Timer tc_exec_time;
|
||||
tc_exec_time.start();
|
||||
|
||||
TLSSocket sock;
|
||||
tlssocket_connect_to_echo_srv(sock);
|
||||
sock.set_timeout(100);
|
||||
sock.sigio(callback(_sigio_handler, ThisThread::get_id()));
|
||||
|
||||
int recvd = 0;
|
||||
int pkt_unrecvd;
|
||||
Timer timer;
|
||||
for (int i = 0; i < 5; i++) {
|
||||
pkt_unrecvd = DATA_LEN;
|
||||
TEST_ASSERT_EQUAL(DATA_LEN, sock.send(buff, DATA_LEN));
|
||||
|
||||
while (pkt_unrecvd) {
|
||||
timer.reset();
|
||||
timer.start();
|
||||
recvd = sock.recv(&(buff[DATA_LEN - pkt_unrecvd]), pkt_unrecvd);
|
||||
timer.stop();
|
||||
|
||||
if (recvd == NSAPI_ERROR_WOULD_BLOCK) {
|
||||
if (tc_exec_time.read() >= time_allotted ||
|
||||
(osSignalWait(SIGNAL_SIGIO, SIGIO_TIMEOUT).status == osEventTimeout)) {
|
||||
TEST_FAIL();
|
||||
goto CLEANUP;
|
||||
}
|
||||
printf("MBED: recv() took: %dus\n", timer.read_us());
|
||||
TEST_ASSERT_INT_WITHIN(51, 150, (timer.read_us() + 500) / 1000);
|
||||
continue;
|
||||
} else if (recvd < 0) {
|
||||
printf("[pkt#%02d] network error %d\n", i, recvd);
|
||||
TEST_FAIL();
|
||||
goto CLEANUP;
|
||||
}
|
||||
pkt_unrecvd -= recvd;
|
||||
}
|
||||
}
|
||||
|
||||
CLEANUP:
|
||||
tc_exec_time.stop();
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_SEND_CLOSED()
|
||||
{
|
||||
TLSSocket sock;
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance()));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK,
|
||||
sock.connect(MBED_CONF_APP_ECHO_SERVER_ADDR, MBED_CONF_APP_ECHO_SERVER_PORT_TLS));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_SOCKET, sock.send("12345", 5));
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_SEND_REPEAT()
|
||||
{
|
||||
TLSSocket sock;
|
||||
tlssocket_connect_to_discard_srv(sock);
|
||||
|
||||
int snd;
|
||||
Timer timer;
|
||||
static const char tx_buffer[] = {'h', 'e', 'l', 'l', 'o'};
|
||||
for (int i = 0; i < 1000; i++) {
|
||||
snd = sock.send(tx_buffer, sizeof(tx_buffer));
|
||||
if (snd != sizeof(tx_buffer)) {
|
||||
TEST_FAIL();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (c) 2018, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_SEND_TIMEOUT()
|
||||
{
|
||||
TLSSocket sock;
|
||||
if (tlssocket_connect_to_discard_srv(sock) != NSAPI_ERROR_OK) {
|
||||
TEST_FAIL();
|
||||
return;
|
||||
}
|
||||
|
||||
int err;
|
||||
Timer timer;
|
||||
static const char tx_buffer[] = {'h', 'e', 'l', 'l', 'o'};
|
||||
for (int i = 0; i < 10; i++) {
|
||||
timer.reset();
|
||||
timer.start();
|
||||
err = sock.send(tx_buffer, sizeof(tx_buffer));
|
||||
timer.stop();
|
||||
if ((err == sizeof(tx_buffer)) &&
|
||||
(timer.read_ms() <= 800)) {
|
||||
continue;
|
||||
}
|
||||
TEST_FAIL();
|
||||
break;
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_SEND_UNCONNECTED()
|
||||
{
|
||||
TLSSocket sock;
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.open(NetworkInterface::get_default_instance()));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.set_root_ca_cert(tls_global::cert));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_NO_CONNECTION, sock.send("12345", 5));
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock.close());
|
||||
}
|
|
@ -0,0 +1,66 @@
|
|||
/*
|
||||
* Copyright (c) 2019, ARM Limited, All Rights Reserved
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||
* not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
#include "mbed.h"
|
||||
#include "TLSSocket.h"
|
||||
#include "greentea-client/test_env.h"
|
||||
#include "unity/unity.h"
|
||||
#include "utest.h"
|
||||
#include "tls_tests.h"
|
||||
|
||||
using namespace utest::v1;
|
||||
|
||||
void TLSSOCKET_SIMULTANEOUS()
|
||||
{
|
||||
TLSSocket sock1;
|
||||
TLSSocket sock2;
|
||||
tlssocket_connect_to_echo_srv(sock1);
|
||||
tlssocket_connect_to_echo_srv(sock2);
|
||||
|
||||
int snd;
|
||||
int rcvd;
|
||||
static const char tx_buffer1[] = {'h', 'e', 'l', 'l', 'o', '1'};
|
||||
static const char tx_buffer2[] = {'h', 'e', 'l', 'l', 'o', '2'};
|
||||
char rx_buffer1[6];
|
||||
char rx_buffer2[6];
|
||||
for (int i = 0; i < 10; i++) {
|
||||
snd = sock1.send(tx_buffer1, sizeof(tx_buffer1));
|
||||
if (snd != sizeof(tx_buffer1)) {
|
||||
TEST_FAIL();
|
||||
break;
|
||||
}
|
||||
snd = sock2.send(tx_buffer2, sizeof(tx_buffer2));
|
||||
if (snd != sizeof(tx_buffer2)) {
|
||||
TEST_FAIL();
|
||||
break;
|
||||
}
|
||||
|
||||
rcvd = sock1.recv(&rx_buffer1, 6);
|
||||
if ((rcvd != 6) || (memcmp(tx_buffer1, rx_buffer1, 6) != 0)) {
|
||||
TEST_FAIL();
|
||||
break;
|
||||
}
|
||||
rcvd = sock2.recv(&rx_buffer2, 6);
|
||||
if ((rcvd != 6) || (memcmp(tx_buffer2, rx_buffer2, 6) != 0)) {
|
||||
TEST_FAIL();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock1.close());
|
||||
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, sock2.close());
|
||||
}
|
|
@ -11,6 +11,14 @@
|
|||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
|
|
|
@ -11,6 +11,14 @@
|
|||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
|
|
|
@ -11,6 +11,14 @@
|
|||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
|
|
|
@ -11,6 +11,14 @@
|
|||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
},
|
||||
"sim-blockdevice": {
|
||||
"help": "Simulated block device, requires sufficient heap",
|
||||
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
},
|
||||
"sim-blockdevice": {
|
||||
"help": "Simulated block device, requires sufficient heap",
|
||||
"macro_name": "MBED_TEST_SIM_BLOCKDEVICE",
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
},
|
||||
"wifi-secure-ssid": {
|
||||
"help": "WiFi SSID for WPA2 secured network",
|
||||
"value": "\"SSID-SECURE\""
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
},
|
||||
"WIFI-TX" : {
|
||||
"help" : "Wifi TX pin",
|
||||
"value" : "D8"
|
||||
|
|
|
@ -11,6 +11,14 @@
|
|||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
|
|
|
@ -11,6 +11,14 @@
|
|||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : "9"
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : "2007"
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : "2009"
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
|
|
|
@ -11,6 +11,14 @@
|
|||
"echo-server-discard-port" : {
|
||||
"help" : "Discard port of echo server",
|
||||
"value" : null
|
||||
},
|
||||
"echo-server-port-tls" : {
|
||||
"help" : "Port of echo server for TLS",
|
||||
"value" : null
|
||||
},
|
||||
"echo-server-discard-port-tls" : {
|
||||
"help" : "Discard port of echo server for TLS",
|
||||
"value" : null
|
||||
}
|
||||
},
|
||||
"target_overrides": {
|
||||
|
|
Loading…
Reference in New Issue