-set socket options before “socket.bind” -listen for incoming SOCK_STREAM connections only before “socket.accept” resolves ubuntu errors.
Fork of NSAPITests by
NSAPITests.cpp@7:444bc156318f, 2016-03-03 (annotated)
- Committer:
- Brian Daniels
- Date:
- Thu Mar 03 14:19:34 2016 -0600
- Revision:
- 7:444bc156318f
- Parent:
- 6:d847da0dbf4f
- Child:
- 8:5a5c498e1fa0
Adding different packet sizes for socket tests. Also making sure non-blocking recv is non-blocking
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Christopher Haster |
1:796ba8b082b1 | 1 | #include "NetworkInterface.h" |
Brian Daniels |
2:41bf867fedd2 | 2 | #include "TCPSocket.h" |
Brian Daniels |
3:8b595ee6219d | 3 | #include "UDPSocket.h" |
Brian Daniels |
2:41bf867fedd2 | 4 | #include <stdio.h> |
Brian Daniels |
2:41bf867fedd2 | 5 | #include "string.h" |
Brian Daniels |
2:41bf867fedd2 | 6 | |
Brian Daniels |
7:444bc156318f | 7 | #define NSAPI_MAX_DATA_SIZE 1000 |
Brian Daniels |
7:444bc156318f | 8 | |
Brian Daniels |
7:444bc156318f | 9 | char expected_data[NSAPI_MAX_DATA_SIZE]; |
Brian Daniels |
7:444bc156318f | 10 | char received_data[NSAPI_MAX_DATA_SIZE]; |
Brian Daniels |
2:41bf867fedd2 | 11 | |
Brian Daniels |
3:8b595ee6219d | 12 | int nsapi_ni_isConnected_test(NetworkInterface *iface) |
Brian Daniels |
2:41bf867fedd2 | 13 | { |
Brian Daniels |
2:41bf867fedd2 | 14 | return !(iface->isConnected()); |
Brian Daniels |
2:41bf867fedd2 | 15 | } |
Brian Daniels |
2:41bf867fedd2 | 16 | |
Brian Daniels |
3:8b595ee6219d | 17 | int nsapi_ni_getIPAddress_test(NetworkInterface *iface) |
Brian Daniels |
2:41bf867fedd2 | 18 | { |
Brian Daniels |
2:41bf867fedd2 | 19 | |
Brian Daniels |
2:41bf867fedd2 | 20 | if (!iface->getIPAddress()[0]) { |
Brian Daniels |
2:41bf867fedd2 | 21 | printf("'getIpAddress' did not return an IP address\r\n"); |
Brian Daniels |
2:41bf867fedd2 | 22 | return -1; |
Brian Daniels |
2:41bf867fedd2 | 23 | } |
Brian Daniels |
2:41bf867fedd2 | 24 | |
Brian Daniels |
2:41bf867fedd2 | 25 | return 0; |
Brian Daniels |
2:41bf867fedd2 | 26 | } |
Brian Daniels |
2:41bf867fedd2 | 27 | |
Brian Daniels |
3:8b595ee6219d | 28 | int nsapi_ni_getMACAddress_test(NetworkInterface *iface) |
Brian Daniels |
2:41bf867fedd2 | 29 | { |
Brian Daniels |
2:41bf867fedd2 | 30 | |
Brian Daniels |
2:41bf867fedd2 | 31 | if (!iface->getMACAddress()[0]) { |
Brian Daniels |
2:41bf867fedd2 | 32 | printf("'getMacAddress' did not return a MAC address\r\n"); |
Brian Daniels |
2:41bf867fedd2 | 33 | return -1; |
Brian Daniels |
2:41bf867fedd2 | 34 | } |
Brian Daniels |
2:41bf867fedd2 | 35 | |
Brian Daniels |
2:41bf867fedd2 | 36 | return 0; |
Brian Daniels |
2:41bf867fedd2 | 37 | } |
Brian Daniels |
2:41bf867fedd2 | 38 | |
Brian Daniels |
3:8b595ee6219d | 39 | int nsapi_ni_getHostByName_test(NetworkInterface *iface) |
Brian Daniels |
2:41bf867fedd2 | 40 | { |
Brian Daniels |
2:41bf867fedd2 | 41 | char ip_address[NS_IP_SIZE] = "\0"; |
Brian Daniels |
2:41bf867fedd2 | 42 | |
Brian Daniels |
3:8b595ee6219d | 43 | int32_t ret = iface->getHostByName("developer.mbed.org", ip_address); |
Brian Daniels |
2:41bf867fedd2 | 44 | |
Brian Daniels |
2:41bf867fedd2 | 45 | if (ret) { |
Brian Daniels |
3:8b595ee6219d | 46 | printf("'getHostByName' failed with code %d\r\n", ret); |
Brian Daniels |
2:41bf867fedd2 | 47 | return -1; |
Brian Daniels |
2:41bf867fedd2 | 48 | } else if (!ip_address[0]) { |
Brian Daniels |
2:41bf867fedd2 | 49 | printf("Returned IP address was null\r\n"); |
Brian Daniels |
2:41bf867fedd2 | 50 | return -2; |
Brian Daniels |
2:41bf867fedd2 | 51 | } else { |
Brian Daniels |
2:41bf867fedd2 | 52 | return 0; |
Brian Daniels |
2:41bf867fedd2 | 53 | } |
Brian Daniels |
2:41bf867fedd2 | 54 | } |
Brian Daniels |
2:41bf867fedd2 | 55 | |
Brian Daniels |
3:8b595ee6219d | 56 | int nsapi_socket_open_test(Socket *socket, const char *test_address, uint16_t test_port) |
Brian Daniels |
3:8b595ee6219d | 57 | { |
Brian Daniels |
3:8b595ee6219d | 58 | int32_t ret = socket->open(test_address, test_port); |
Brian Daniels |
3:8b595ee6219d | 59 | |
Brian Daniels |
3:8b595ee6219d | 60 | if (ret) { |
Brian Daniels |
3:8b595ee6219d | 61 | printf("'open' failed with code %d\r\n", ret); |
Brian Daniels |
3:8b595ee6219d | 62 | return -1; |
Brian Daniels |
3:8b595ee6219d | 63 | } else { |
Brian Daniels |
3:8b595ee6219d | 64 | return 0; |
Brian Daniels |
3:8b595ee6219d | 65 | } |
Brian Daniels |
3:8b595ee6219d | 66 | } |
Brian Daniels |
3:8b595ee6219d | 67 | |
Brian Daniels |
3:8b595ee6219d | 68 | int nsapi_socket_isConnected_test(Socket *socket, const char *test_address, uint16_t test_port) |
Brian Daniels |
3:8b595ee6219d | 69 | { |
Brian Daniels |
3:8b595ee6219d | 70 | return !socket->isConnected(); |
Brian Daniels |
3:8b595ee6219d | 71 | } |
Brian Daniels |
3:8b595ee6219d | 72 | |
Brian Daniels |
3:8b595ee6219d | 73 | |
Brian Daniels |
3:8b595ee6219d | 74 | int nsapi_socket_getIpAddress_test(Socket *socket, const char *test_address, uint16_t test_port) |
Brian Daniels |
3:8b595ee6219d | 75 | { |
Brian Daniels |
3:8b595ee6219d | 76 | const char *cur_ip_address = socket->getIPAddress(); |
Brian Daniels |
2:41bf867fedd2 | 77 | |
Brian Daniels |
3:8b595ee6219d | 78 | if (!cur_ip_address[0]) { |
Brian Daniels |
3:8b595ee6219d | 79 | printf("'getIpAddress' did not return an IP address\r\n"); |
Brian Daniels |
3:8b595ee6219d | 80 | return -1; |
Brian Daniels |
3:8b595ee6219d | 81 | } else if (strcmp(cur_ip_address, test_address)) { |
Brian Daniels |
3:8b595ee6219d | 82 | printf("'getIpAddress' did not reutrurn the expected IP address\r\n"); |
Brian Daniels |
3:8b595ee6219d | 83 | printf("Expected: %s\r\n", test_address); |
Brian Daniels |
3:8b595ee6219d | 84 | printf("Actual: %s\r\n", cur_ip_address); |
Brian Daniels |
3:8b595ee6219d | 85 | return -2; |
Brian Daniels |
3:8b595ee6219d | 86 | } |
Brian Daniels |
3:8b595ee6219d | 87 | |
Brian Daniels |
3:8b595ee6219d | 88 | return 0; |
Brian Daniels |
3:8b595ee6219d | 89 | } |
Brian Daniels |
3:8b595ee6219d | 90 | |
Brian Daniels |
3:8b595ee6219d | 91 | int nsapi_socket_getPort_test(Socket *socket, const char *test_address, uint16_t test_port) |
Brian Daniels |
3:8b595ee6219d | 92 | { |
Brian Daniels |
3:8b595ee6219d | 93 | uint16_t cur_port = socket->getPort(); |
Brian Daniels |
3:8b595ee6219d | 94 | |
Brian Daniels |
3:8b595ee6219d | 95 | if (cur_port != test_port) { |
Brian Daniels |
3:8b595ee6219d | 96 | printf("'getPort' did not return the expected port\r\n"); |
Brian Daniels |
3:8b595ee6219d | 97 | printf("Expected: %d\r\n", test_port); |
Brian Daniels |
3:8b595ee6219d | 98 | printf("Actual: %d\r\n", cur_port); |
Brian Daniels |
3:8b595ee6219d | 99 | return -1; |
Brian Daniels |
3:8b595ee6219d | 100 | } |
Brian Daniels |
3:8b595ee6219d | 101 | |
Brian Daniels |
3:8b595ee6219d | 102 | return 0; |
Brian Daniels |
3:8b595ee6219d | 103 | } |
Brian Daniels |
2:41bf867fedd2 | 104 | |
Brian Daniels |
7:444bc156318f | 105 | void nsapi_socket_test_setup(char *buffer, int size) |
Brian Daniels |
3:8b595ee6219d | 106 | { |
Brian Daniels |
7:444bc156318f | 107 | int i; |
Brian Daniels |
7:444bc156318f | 108 | for (i = 0; i < size; i++) { |
Brian Daniels |
7:444bc156318f | 109 | buffer[i] = '0' + (i % 10); |
Brian Daniels |
7:444bc156318f | 110 | } |
Brian Daniels |
7:444bc156318f | 111 | } |
Brian Daniels |
3:8b595ee6219d | 112 | |
Brian Daniels |
7:444bc156318f | 113 | int nsapi_socket_blocking_test_helper(Socket *socket, const char *test_address, uint16_t test_port, uint32_t data_size) |
Brian Daniels |
7:444bc156318f | 114 | { |
Brian Daniels |
7:444bc156318f | 115 | nsapi_socket_test_setup(expected_data, data_size); |
Brian Daniels |
7:444bc156318f | 116 | |
Brian Daniels |
7:444bc156318f | 117 | int32_t ret = socket->send(expected_data, data_size); |
Brian Daniels |
3:8b595ee6219d | 118 | |
Brian Daniels |
3:8b595ee6219d | 119 | if (ret) { |
Brian Daniels |
5:03b0570b4c29 | 120 | printf("'send' failed during test with code %d\r\n", ret); |
Brian Daniels |
3:8b595ee6219d | 121 | return -4; |
Brian Daniels |
3:8b595ee6219d | 122 | } |
Brian Daniels |
3:8b595ee6219d | 123 | |
Brian Daniels |
7:444bc156318f | 124 | int32_t bytes_received = socket->recv(received_data, sizeof(received_data)); |
Brian Daniels |
2:41bf867fedd2 | 125 | |
Brian Daniels |
7:444bc156318f | 126 | if (bytes_received >= (int32_t)data_size) { |
Brian Daniels |
7:444bc156318f | 127 | if (strstr(received_data, expected_data) != NULL) { |
Brian Daniels |
3:8b595ee6219d | 128 | return 0; |
Brian Daniels |
3:8b595ee6219d | 129 | } else { |
Brian Daniels |
3:8b595ee6219d | 130 | printf("'recv' returned incorrect data with length %d\r\n", bytes_received); |
Brian Daniels |
3:8b595ee6219d | 131 | return -2; |
Brian Daniels |
3:8b595ee6219d | 132 | } |
Brian Daniels |
3:8b595ee6219d | 133 | } else if (bytes_received < 0) { |
Brian Daniels |
3:8b595ee6219d | 134 | printf("'recv' failed with code %d\r\n", bytes_received); |
Brian Daniels |
3:8b595ee6219d | 135 | return -3; |
Brian Daniels |
2:41bf867fedd2 | 136 | } else { |
Brian Daniels |
5:03b0570b4c29 | 137 | printf("'recv' returned no data\r\n"); |
Brian Daniels |
3:8b595ee6219d | 138 | return -1; |
Brian Daniels |
3:8b595ee6219d | 139 | } |
Brian Daniels |
3:8b595ee6219d | 140 | } |
Brian Daniels |
3:8b595ee6219d | 141 | |
Brian Daniels |
7:444bc156318f | 142 | int nsapi_socket_blocking_test(Socket *socket, const char *test_address, uint16_t test_port) |
Brian Daniels |
7:444bc156318f | 143 | { |
Brian Daniels |
7:444bc156318f | 144 | int32_t result, i; |
Brian Daniels |
7:444bc156318f | 145 | int32_t packet_sizes[] = {10, 100, 1000}; |
Brian Daniels |
7:444bc156318f | 146 | int32_t num_packet_sizes = 3; |
Brian Daniels |
7:444bc156318f | 147 | |
Brian Daniels |
7:444bc156318f | 148 | for (i = 0; i < num_packet_sizes; i++) { |
Brian Daniels |
7:444bc156318f | 149 | result = nsapi_socket_blocking_test_helper(socket, test_address, test_port, packet_sizes[i]); |
Brian Daniels |
7:444bc156318f | 150 | |
Brian Daniels |
7:444bc156318f | 151 | if (result) { |
Brian Daniels |
7:444bc156318f | 152 | printf("nsapi_socket_blocking_test failed with data size %d\r\n", packet_sizes[i]); |
Brian Daniels |
7:444bc156318f | 153 | break; |
Brian Daniels |
7:444bc156318f | 154 | } |
Brian Daniels |
7:444bc156318f | 155 | } |
Brian Daniels |
7:444bc156318f | 156 | |
Brian Daniels |
7:444bc156318f | 157 | if (i >= num_packet_sizes) { |
Brian Daniels |
7:444bc156318f | 158 | return 0; |
Brian Daniels |
7:444bc156318f | 159 | } else { |
Brian Daniels |
7:444bc156318f | 160 | return -num_packet_sizes; |
Brian Daniels |
7:444bc156318f | 161 | } |
Brian Daniels |
7:444bc156318f | 162 | } |
Brian Daniels |
7:444bc156318f | 163 | |
Brian Daniels |
7:444bc156318f | 164 | int nsapi_socket_non_blocking_test_helper(Socket *socket, const char *test_address, uint16_t test_port, uint32_t data_size) |
Brian Daniels |
3:8b595ee6219d | 165 | { |
Brian Daniels |
3:8b595ee6219d | 166 | int32_t bytes_received; |
Brian Daniels |
3:8b595ee6219d | 167 | int result = -1; |
Brian Daniels |
7:444bc156318f | 168 | |
Brian Daniels |
7:444bc156318f | 169 | nsapi_socket_test_setup(expected_data, data_size); |
Brian Daniels |
7:444bc156318f | 170 | |
Brian Daniels |
7:444bc156318f | 171 | // First check to make sure `recv` will not block and return 0 for bytes |
Brian Daniels |
7:444bc156318f | 172 | // received. If the tests do proceed after this test, be sure your `recv` |
Brian Daniels |
7:444bc156318f | 173 | // respects the `blocking` flag |
Brian Daniels |
7:444bc156318f | 174 | bytes_received = socket->recv(received_data, NSAPI_MAX_DATA_SIZE, false); |
Brian Daniels |
3:8b595ee6219d | 175 | |
Brian Daniels |
7:444bc156318f | 176 | if (bytes_received > 0) { |
Brian Daniels |
7:444bc156318f | 177 | printf("'recv' returned data of length %d when no data was expected\r\n", bytes_received); |
Brian Daniels |
7:444bc156318f | 178 | return -5; |
Brian Daniels |
7:444bc156318f | 179 | } else if (bytes_received < 0) { |
Brian Daniels |
7:444bc156318f | 180 | printf("'recv' failed when no data was expected with code %d\r\n", bytes_received); |
Brian Daniels |
7:444bc156318f | 181 | return -5; |
Brian Daniels |
7:444bc156318f | 182 | } |
Brian Daniels |
7:444bc156318f | 183 | |
Brian Daniels |
7:444bc156318f | 184 | int32_t ret = socket->send(expected_data, data_size); |
Brian Daniels |
3:8b595ee6219d | 185 | |
Brian Daniels |
3:8b595ee6219d | 186 | if (ret) { |
Brian Daniels |
5:03b0570b4c29 | 187 | printf("'send' failed during test with code %d\r\n", ret); |
Brian Daniels |
3:8b595ee6219d | 188 | return -4; |
Brian Daniels |
2:41bf867fedd2 | 189 | } |
Brian Daniels |
2:41bf867fedd2 | 190 | |
Brian Daniels |
5:03b0570b4c29 | 191 | // TODO: Create a better way to "wait" for data besides busy-looping |
Brian Daniels |
5:03b0570b4c29 | 192 | for (int i = 0; i < 10000000; i++) { |
Brian Daniels |
7:444bc156318f | 193 | bytes_received = socket->recv(received_data, data_size, false); |
Brian Daniels |
5:03b0570b4c29 | 194 | |
Brian Daniels |
7:444bc156318f | 195 | if (bytes_received >= (int32_t)data_size) { |
Brian Daniels |
7:444bc156318f | 196 | if (strstr(received_data, expected_data) != NULL) { |
Brian Daniels |
3:8b595ee6219d | 197 | result = 0; |
Brian Daniels |
3:8b595ee6219d | 198 | break; |
Brian Daniels |
3:8b595ee6219d | 199 | } else { |
Brian Daniels |
3:8b595ee6219d | 200 | printf("'recv' returned incorrect data\r\n"); |
Brian Daniels |
3:8b595ee6219d | 201 | result = -2; |
Brian Daniels |
3:8b595ee6219d | 202 | break; |
Brian Daniels |
3:8b595ee6219d | 203 | } |
Brian Daniels |
3:8b595ee6219d | 204 | } else if (bytes_received < 0) { |
Brian Daniels |
3:8b595ee6219d | 205 | result = -3; |
Brian Daniels |
3:8b595ee6219d | 206 | break; |
Brian Daniels |
3:8b595ee6219d | 207 | } |
Brian Daniels |
3:8b595ee6219d | 208 | } |
Brian Daniels |
3:8b595ee6219d | 209 | |
Brian Daniels |
3:8b595ee6219d | 210 | if (result == -1) { |
Brian Daniels |
5:03b0570b4c29 | 211 | printf("'recv' returned no data\r\n"); |
Brian Daniels |
3:8b595ee6219d | 212 | } else if (result == -2) { |
Brian Daniels |
3:8b595ee6219d | 213 | printf("'recv' returned incorrect data\r\n"); |
Brian Daniels |
3:8b595ee6219d | 214 | } else if (result == -3) { |
Brian Daniels |
3:8b595ee6219d | 215 | printf("'recv' failed with code %d\r\n", bytes_received); |
Brian Daniels |
3:8b595ee6219d | 216 | } |
Brian Daniels |
3:8b595ee6219d | 217 | |
Brian Daniels |
3:8b595ee6219d | 218 | return result; |
Brian Daniels |
2:41bf867fedd2 | 219 | } |
Christopher Haster |
1:796ba8b082b1 | 220 | |
Brian Daniels |
7:444bc156318f | 221 | int nsapi_socket_non_blocking_test(Socket *socket, const char *test_address, uint16_t test_port) |
Brian Daniels |
7:444bc156318f | 222 | { |
Brian Daniels |
7:444bc156318f | 223 | int32_t result, i; |
Brian Daniels |
7:444bc156318f | 224 | int32_t packet_sizes[] = {10, 100, 1000}; |
Brian Daniels |
7:444bc156318f | 225 | int32_t num_packet_sizes = 3; |
Brian Daniels |
7:444bc156318f | 226 | |
Brian Daniels |
7:444bc156318f | 227 | for (i = 0; i < num_packet_sizes; i++) { |
Brian Daniels |
7:444bc156318f | 228 | result = nsapi_socket_non_blocking_test_helper(socket, test_address, test_port, packet_sizes[i]); |
Brian Daniels |
7:444bc156318f | 229 | |
Brian Daniels |
7:444bc156318f | 230 | if (result) { |
Brian Daniels |
7:444bc156318f | 231 | printf("nsapi_socket_non_blocking_test failed with data size of %d\r\n", packet_sizes[i]); |
Brian Daniels |
7:444bc156318f | 232 | break; |
Brian Daniels |
7:444bc156318f | 233 | } |
Brian Daniels |
7:444bc156318f | 234 | } |
Brian Daniels |
7:444bc156318f | 235 | |
Brian Daniels |
7:444bc156318f | 236 | if (i >= num_packet_sizes) { |
Brian Daniels |
7:444bc156318f | 237 | return 0; |
Brian Daniels |
7:444bc156318f | 238 | } else { |
Brian Daniels |
7:444bc156318f | 239 | return -num_packet_sizes; |
Brian Daniels |
7:444bc156318f | 240 | } |
Brian Daniels |
7:444bc156318f | 241 | } |
Brian Daniels |
7:444bc156318f | 242 | |
Brian Daniels |
3:8b595ee6219d | 243 | int nsapi_socket_close_test(Socket *socket, const char *test_address, uint16_t test_port) |
Christopher Haster |
1:796ba8b082b1 | 244 | { |
Brian Daniels |
3:8b595ee6219d | 245 | int32_t ret = socket->close(); |
Brian Daniels |
3:8b595ee6219d | 246 | |
Brian Daniels |
3:8b595ee6219d | 247 | if (ret) { |
Brian Daniels |
3:8b595ee6219d | 248 | printf("'close' failed with code %d\r\n", ret); |
Brian Daniels |
3:8b595ee6219d | 249 | return -1; |
Brian Daniels |
3:8b595ee6219d | 250 | } else { |
Brian Daniels |
3:8b595ee6219d | 251 | return 0; |
Brian Daniels |
3:8b595ee6219d | 252 | } |
Brian Daniels |
3:8b595ee6219d | 253 | } |
Brian Daniels |
3:8b595ee6219d | 254 | |
Brian Daniels |
3:8b595ee6219d | 255 | void nspai_print_test_header(const char *name) { |
Brian Daniels |
3:8b595ee6219d | 256 | printf("---------------------\r\n"); |
Brian Daniels |
3:8b595ee6219d | 257 | printf("%s: running...\r\n", name); |
Brian Daniels |
3:8b595ee6219d | 258 | } |
Brian Daniels |
3:8b595ee6219d | 259 | |
Brian Daniels |
3:8b595ee6219d | 260 | void nspai_print_test_result(const char *name, int result) { |
Brian Daniels |
3:8b595ee6219d | 261 | printf("%s: ", name); |
Brian Daniels |
3:8b595ee6219d | 262 | |
Brian Daniels |
3:8b595ee6219d | 263 | if (!result) { |
Brian Daniels |
3:8b595ee6219d | 264 | printf("PASS\r\n"); |
Brian Daniels |
3:8b595ee6219d | 265 | } else { |
Brian Daniels |
3:8b595ee6219d | 266 | printf("FAIL (Return code %d)\r\n", result); |
Brian Daniels |
3:8b595ee6219d | 267 | } |
Brian Daniels |
3:8b595ee6219d | 268 | } |
Brian Daniels |
3:8b595ee6219d | 269 | |
Brian Daniels |
3:8b595ee6219d | 270 | int nsapi_ni_run_test(const char *name, NetworkInterface *iface, int (*test)(NetworkInterface*)) { |
Brian Daniels |
3:8b595ee6219d | 271 | int result; |
Brian Daniels |
3:8b595ee6219d | 272 | nspai_print_test_header(name); |
Brian Daniels |
3:8b595ee6219d | 273 | result = test(iface); |
Brian Daniels |
3:8b595ee6219d | 274 | nspai_print_test_result(name, result); |
Brian Daniels |
3:8b595ee6219d | 275 | return result; |
Brian Daniels |
3:8b595ee6219d | 276 | } |
Brian Daniels |
3:8b595ee6219d | 277 | |
Brian Daniels |
3:8b595ee6219d | 278 | int nsapi_socket_run_test(const char *name, Socket *socket, const char *test_address, uint16_t test_port, int (*test)(Socket*, const char*, uint16_t)) { |
Brian Daniels |
3:8b595ee6219d | 279 | int result; |
Brian Daniels |
3:8b595ee6219d | 280 | nspai_print_test_header(name); |
Brian Daniels |
3:8b595ee6219d | 281 | result = test(socket, test_address, test_port); |
Brian Daniels |
3:8b595ee6219d | 282 | nspai_print_test_result(name, result); |
Brian Daniels |
3:8b595ee6219d | 283 | return result; |
Brian Daniels |
3:8b595ee6219d | 284 | } |
Brian Daniels |
3:8b595ee6219d | 285 | |
Brian Daniels |
6:d847da0dbf4f | 286 | int nsapi_tests(const char *name, NetworkInterface *iface, const char *test_address, uint16_t test_port) |
Brian Daniels |
3:8b595ee6219d | 287 | { |
Brian Daniels |
3:8b595ee6219d | 288 | TCPSocket tcp_socket(iface); |
Brian Daniels |
3:8b595ee6219d | 289 | UDPSocket udp_socket(iface); |
Brian Daniels |
7:444bc156318f | 290 | |
Brian Daniels |
2:41bf867fedd2 | 291 | int ret = 0; |
Brian Daniels |
2:41bf867fedd2 | 292 | |
Brian Daniels |
3:8b595ee6219d | 293 | printf("--- Running NetworkInterface Tests ---\r\n\r\n"); |
Brian Daniels |
3:8b595ee6219d | 294 | ret |= nsapi_ni_run_test("nsapi_ni_isConnected_test", iface, &nsapi_ni_isConnected_test); |
Brian Daniels |
3:8b595ee6219d | 295 | ret |= nsapi_ni_run_test("nsapi_ni_getIPAddress_test", iface, &nsapi_ni_getIPAddress_test); |
Brian Daniels |
3:8b595ee6219d | 296 | ret |= nsapi_ni_run_test("nsapi_ni_getMACAddress_test", iface, &nsapi_ni_getMACAddress_test); |
Brian Daniels |
3:8b595ee6219d | 297 | ret |= nsapi_ni_run_test("nsapi_ni_getHostByName_test", iface, &nsapi_ni_getHostByName_test); |
Brian Daniels |
3:8b595ee6219d | 298 | |
Brian Daniels |
3:8b595ee6219d | 299 | printf("\r\n\r\n--- Running TCPSocket Tests ---\r\n\r\n"); |
Brian Daniels |
6:d847da0dbf4f | 300 | ret |= nsapi_socket_run_test("nsapi_socket_open_test", &tcp_socket, test_address, test_port, &nsapi_socket_open_test); |
Brian Daniels |
6:d847da0dbf4f | 301 | ret |= nsapi_socket_run_test("nsapi_socket_getIpAddress_test", &tcp_socket, test_address, test_port, &nsapi_socket_getIpAddress_test); |
Brian Daniels |
6:d847da0dbf4f | 302 | ret |= nsapi_socket_run_test("nsapi_socket_getPort_test", &tcp_socket, test_address, test_port, &nsapi_socket_getPort_test); |
Brian Daniels |
6:d847da0dbf4f | 303 | ret |= nsapi_socket_run_test("nsapi_socket_blocking_test", &tcp_socket, test_address, test_port, &nsapi_socket_blocking_test); |
Brian Daniels |
6:d847da0dbf4f | 304 | ret |= nsapi_socket_run_test("nsapi_socket_non_blocking_test", &tcp_socket, test_address, test_port, &nsapi_socket_non_blocking_test); |
Brian Daniels |
6:d847da0dbf4f | 305 | ret |= nsapi_socket_run_test("nsapi_socket_close_test", &tcp_socket, test_address, test_port, &nsapi_socket_close_test); |
Christopher Haster |
1:796ba8b082b1 | 306 | |
Christopher Haster |
1:796ba8b082b1 | 307 | |
Brian Daniels |
3:8b595ee6219d | 308 | printf("\r\n\r\n--- Running UDPSocket Tests ---\r\n\r\n"); |
Brian Daniels |
6:d847da0dbf4f | 309 | ret |= nsapi_socket_run_test("nsapi_socket_open_test", &udp_socket, test_address, test_port, &nsapi_socket_open_test); |
Brian Daniels |
6:d847da0dbf4f | 310 | ret |= nsapi_socket_run_test("nsapi_socket_getIpAddress_test", &udp_socket, test_address, test_port, &nsapi_socket_getIpAddress_test); |
Brian Daniels |
6:d847da0dbf4f | 311 | ret |= nsapi_socket_run_test("nsapi_socket_getPort_test", &udp_socket, test_address, test_port, &nsapi_socket_getPort_test); |
Brian Daniels |
6:d847da0dbf4f | 312 | ret |= nsapi_socket_run_test("nsapi_socket_blocking_test", &udp_socket, test_address, test_port, &nsapi_socket_blocking_test); |
Brian Daniels |
6:d847da0dbf4f | 313 | ret |= nsapi_socket_run_test("nsapi_socket_non_blocking_test", &udp_socket, test_address, test_port, &nsapi_socket_non_blocking_test); |
Brian Daniels |
6:d847da0dbf4f | 314 | ret |= nsapi_socket_run_test("nsapi_socket_close_test", &udp_socket, test_address, test_port, &nsapi_socket_close_test); |
Brian Daniels |
3:8b595ee6219d | 315 | |
Brian Daniels |
5:03b0570b4c29 | 316 | if (ret == 0) { |
Brian Daniels |
5:03b0570b4c29 | 317 | printf("\r\n\r\n--- ALL TESTS PASSING ---\r\n"); |
Brian Daniels |
5:03b0570b4c29 | 318 | } else { |
Brian Daniels |
5:03b0570b4c29 | 319 | printf("\r\n\r\n--- TEST FAILURES OCCURRED ---\r\n"); |
Brian Daniels |
5:03b0570b4c29 | 320 | } |
Brian Daniels |
5:03b0570b4c29 | 321 | |
Brian Daniels |
3:8b595ee6219d | 322 | return ret != 0; |
Christopher Haster |
1:796ba8b082b1 | 323 | } |
Christopher Haster |
1:796ba8b082b1 | 324 |