Refactored UDP echo server

pull/900/head
Przemek Wirkus 2015-01-28 16:43:40 +00:00
parent 111b55784e
commit f81509c933
4 changed files with 18 additions and 16 deletions

View File

@ -1,4 +1,5 @@
#include "mbed.h"
#include "test_env.h"
#include "EthernetInterface.h"
namespace {
@ -7,6 +8,11 @@ namespace {
}
int main (void) {
TEST_TIMEOUT(20);
TEST_HOSTTEST(udpecho_server_auto);
TEST_DESCRIPTION(UDP echo server);
TEST_START("NET_5");
EthernetInterface eth;
eth.init(); //Use DHCP
eth.connect();

View File

@ -25,6 +25,7 @@ from rtc_auto import RTCTest
from echo import EchoTest
from detect_auto import DetectPlatformTest
from tcpecho_server_auto import TCPEchoServerTest
from udpecho_server_auto import UDPEchoServerTest
HOSTREGISTRY = HostRegistry()
@ -38,6 +39,7 @@ HOSTREGISTRY.register_host_test("rtc_auto", RTCTest())
HOSTREGISTRY.register_host_test("echo", EchoTest())
HOSTREGISTRY.register_host_test("detect_auto", DetectPlatformTest())
HOSTREGISTRY.register_host_test("tcpecho_server_auto", TCPEchoServerTest())
HOSTREGISTRY.register_host_test("udpecho_server_auto", UDPEchoServerTest())
###############################################################################
# Functional interface for test supervisor registry

View File

@ -19,11 +19,9 @@ import re
import sys
import uuid
from sys import stdout
from host_test import DefaultTest
from socket import socket, AF_INET, SOCK_DGRAM
class UDPEchoServerTest(DefaultTest):
class UDPEchoServerTest():
ECHO_SERVER_ADDRESS = ""
ECHO_PORT = 0
s = None # Socket
@ -31,26 +29,26 @@ class UDPEchoServerTest(DefaultTest):
PATTERN_SERVER_IP = "Server IP Address is (\d+).(\d+).(\d+).(\d+):(\d+)"
re_detect_server_ip = re.compile(PATTERN_SERVER_IP)
def test(self):
def test(self, selftest):
result = True
serial_ip_msg = self.mbed.serial_readline()
serial_ip_msg = selftest.mbed.serial_readline()
if serial_ip_msg is None:
return self.RESULT_IO_SERIAL
self.notify(serial_ip_msg)
return selftest.RESULT_IO_SERIAL
selftest.notify(serial_ip_msg)
# Searching for IP address and port prompted by server
m = self.re_detect_server_ip.search(serial_ip_msg)
if m and len(m.groups()):
self.ECHO_SERVER_ADDRESS = ".".join(m.groups()[:4])
self.ECHO_PORT = int(m.groups()[4]) # must be integer for socket.connect method
self.notify("HOST: UDP Server found at: " + self.ECHO_SERVER_ADDRESS + ":" + str(self.ECHO_PORT))
selftest.notify("HOST: UDP Server found at: " + self.ECHO_SERVER_ADDRESS + ":" + str(self.ECHO_PORT))
# We assume this test fails so can't send 'error' message to server
try:
self.s = socket(AF_INET, SOCK_DGRAM)
except Exception, e:
self.s = None
self.notify("HOST: Socket error: %s"% e)
return self.RESULT_ERROR
selftest.notify("HOST: Socket error: %s"% e)
return selftest.RESULT_ERROR
for i in range(0, 100):
TEST_STRING = str(uuid.uuid4())
@ -67,8 +65,4 @@ class UDPEchoServerTest(DefaultTest):
if self.s is not None:
self.s.close()
return self.RESULT_SUCCESS if result else self.RESULT_FAILURE
if __name__ == '__main__':
UDPEchoServerTest().run()
return selftest.RESULT_SUCCESS if result else selftest.RESULT_FAILURE

View File

@ -698,7 +698,7 @@ TESTS = [
"source_dir": join(TEST_DIR, "net", "echo", "udp_server"),
"dependencies": [MBED_LIBRARIES, RTOS_LIBRARIES, ETH_LIBRARY, TEST_MBED_LIB],
"automated": True,
"host_test" : "udpecho_server_auto",
#"host_test" : "udpecho_server_auto",
"peripherals": ["ethernet"]
},
{