Tests for the NetworkSocketAPI
Dependents: BSDInterfaceTests ESP8266InterfaceTests LWIPInterfaceTests SpwfInterface_NSAPI_Tests ... more
Revision 4:b52f17273177, committed 2016-03-02
- Comitter:
- Christopher Haster
- Date:
- Wed Mar 02 18:02:47 2016 -0600
- Parent:
- 3:8b595ee6219d
- Child:
- 5:03b0570b4c29
- Commit message:
- Changed to just an echo server
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/EchoServer.py Wed Mar 02 18:02:47 2016 -0600 @@ -0,0 +1,62 @@ +#!/usr/bin/env python +import socket +import signal +import select + + +def main(port): + port = int(port) + + udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + udp.bind(('', port)) + udp.setblocking(0) + udp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + + tcp = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + tcp.bind(('', port)) + tcp.setblocking(0) + tcp.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + tcp.listen(5) + + print "running on port %d" % port + sockets = [tcp, udp] + clients = [] + + while True: + select.select(sockets, [], []) + + try: + data, addr = udp.recvfrom(1 << 12) + print 'udp %s:%d %d' % (addr[0], addr[1], len(data)) + udp.sendto(data, addr) + except socket.error: + pass + + try: + client, addr = tcp.accept() + print 'tcp %s:%d connect' % (addr[0], addr[1]) + client.setblocking(0) + client.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + sockets.append(client) + clients.append((client, addr)) + except socket.error: + pass + + for client, addr in clients: + try: + data = client.recv(1 << 12) + if data: + print 'tcp %s:%d %d' % (addr[0], addr[1], len(data)) + client.send(data) + else: + print 'tcp %s:%d disconnect' % (addr[0], addr[1]) + sockets.remove(client) + clients.remove((client, addr)) + client.close() + except socket.error: + pass + + +if __name__ == "__main__": + import sys + main(*sys.argv[1:])
--- a/NSAPITestServer.py Wed Mar 02 16:16:25 2016 -0600 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -#!/usr/bin/env python -import socket -import signal -import sys - -runServer = True - -def signal_handler(signal, frame): - global runServer - - print "Handling interrupt" - runServer = False - -def handle_recv(message) : - if message == "{{start}}": - return None - else: - return message - - -def run_tcp_server(port): - global runServer - - host = 'localhost' - backlog = 5 - size = 1024 - tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - tcp_socket.settimeout(1.0) - tcp_socket.bind((host,port)) - tcp_socket.listen(backlog) - - while runServer: - try: - client, address = tcp_socket.accept() - data = client.recv(size) - if data: - print "TCP DATA from %s: %s" % (address, data) - message = handle_recv(data) - if message: - client.send(message) - client.close() - except socket.timeout: - pass - except IOError: - pass - - -def run_udp_server(port): - global runServer - - host = 'localhost' - backlog = 5 - size = 1024 - udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - udp_socket.settimeout(1.0) - udp_socket.bind((host,port)) - - - while runServer: - try: - data, address = udp_socket.recvfrom(size) - if data: - print "UDP DATA from %s: %s" % (addr, data) - message = handle_recv(data) - if message: - udp_socket.sendto(message, address) - except socket.timeout: - pass - except IOError: - pass - - -def main(arguments): - global thread_stop_event - - signal.signal(signal.SIGINT, signal_handler) - - socket_type = arguments[0] - port = int(arguments[1]) - - if socket_type == "TCP": - run_tcp_server(port) - elif socket_type == "UDP": - run_udp_server(port) - else: - print "Invalid socket type, must be 'TCP' or 'UDP'" - sys.exit(1) - - sys.exit(0) - -if __name__ == "__main__": - main(sys.argv[1:]) \ No newline at end of file
--- a/NSAPITests.cpp Wed Mar 02 16:16:25 2016 -0600 +++ b/NSAPITests.cpp Wed Mar 02 18:02:47 2016 -0600 @@ -101,7 +101,7 @@ int nsapi_socket_send_test(Socket *socket, const char *test_address, uint16_t test_port) { char data[] = "{{start}}"; - int32_t ret = socket->send(data, sizeof(data)); + int32_t ret = socket->send(data, strlen(data)); if (ret) { printf("'send' failed with code %d\r\n", ret); @@ -116,7 +116,7 @@ char expected_data[] = "{{data}}"; char data[100] = {0}; - int32_t ret = socket->send(data, sizeof(data)); + int32_t ret = socket->send(expected_data, strlen(expected_data)); if (ret) { printf("'send' failed during 'recv' test with code %d\r\n", ret); @@ -125,7 +125,7 @@ int32_t bytes_received = socket->recv(data, sizeof(data)); - if (bytes_received >= (int32_t)sizeof(expected_data)) { + if (bytes_received >= (int32_t)strlen(expected_data)) { if (strstr(data, expected_data) != NULL) { return 0; } else { @@ -148,7 +148,7 @@ char expected_data[] = "{{data}}"; char data[100] = {0}; - int32_t ret = socket->send(expected_data, sizeof(expected_data)); + int32_t ret = socket->send(expected_data, strlen(expected_data)); if (ret) { printf("'send' failed during 'recv' test with code %d\r\n", ret); @@ -158,7 +158,7 @@ for (int i = 0; i < 100; i++) { bytes_received = socket->recv(data, sizeof(data), false); - if (bytes_received >= (int32_t)sizeof(expected_data)) { + if (bytes_received >= (int32_t)strlen(expected_data)) { if (strstr(data, expected_data) != NULL) { result = 0; break;