33
33
34
34
using namespace utest ::v1;
35
35
36
+ namespace {
37
+ Timer tc_bucket; // Timer to limit a test cases run time
38
+ }
39
+
36
40
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
37
41
mbed_stats_socket_t udp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT];
38
42
#endif
39
43
44
+ void drop_bad_packets (UDPSocket &sock, int orig_timeout)
45
+ {
46
+ nsapi_error_t err;
47
+ sock.set_timeout (0 );
48
+ while (true ) {
49
+ err = sock.recv (NULL , 0 );
50
+ if (err == NSAPI_ERROR_WOULD_BLOCK) {
51
+ break ;
52
+ }
53
+ }
54
+ sock.set_timeout (orig_timeout);
55
+ }
40
56
static void _ifup ()
41
57
{
42
58
NetworkInterface *net = NetworkInterface::get_default_instance ();
@@ -51,18 +67,6 @@ static void _ifdown()
51
67
printf (" MBED: ifdown\n " );
52
68
}
53
69
54
- void drop_bad_packets (UDPSocket &sock, int orig_timeout)
55
- {
56
- nsapi_error_t err;
57
- sock.set_timeout (0 );
58
- while (true ) {
59
- err = sock.recvfrom (NULL , 0 , 0 );
60
- if (err == NSAPI_ERROR_WOULD_BLOCK) {
61
- break ;
62
- }
63
- }
64
- sock.set_timeout (orig_timeout);
65
- }
66
70
67
71
nsapi_version_t get_ip_version ()
68
72
{
@@ -80,6 +84,11 @@ void fill_tx_buffer_ascii(char *buff, size_t len)
80
84
}
81
85
}
82
86
87
+ int split2half_rmng_udp_test_time ()
88
+ {
89
+ return (udp_global::TESTS_TIMEOUT - tc_bucket.read ()) / 2 ;
90
+ }
91
+
83
92
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
84
93
int fetch_stats ()
85
94
{
@@ -90,20 +99,20 @@ int fetch_stats()
90
99
// Test setup
91
100
utest::v1::status_t greentea_setup (const size_t number_of_cases)
92
101
{
93
- GREENTEA_SETUP (480 , " default_auto" );
102
+ GREENTEA_SETUP (udp_global::TESTS_TIMEOUT , " default_auto" );
94
103
_ifup ();
104
+ tc_bucket.start ();
95
105
return greentea_test_setup_handler (number_of_cases);
96
106
}
97
107
98
108
void greentea_teardown (const size_t passed, const size_t failed, const failure_t failure)
99
109
{
110
+ tc_bucket.stop ();
100
111
_ifdown ();
101
112
return greentea_test_teardown_handler (passed, failed, failure);
102
113
}
103
114
104
115
Case cases[] = {
105
- Case (" UDPSOCKET_ECHOTEST" , UDPSOCKET_ECHOTEST),
106
- Case (" UDPSOCKET_ECHOTEST_NONBLOCK" , UDPSOCKET_ECHOTEST_NONBLOCK),
107
116
Case (" UDPSOCKET_OPEN_CLOSE_REPEAT" , UDPSOCKET_OPEN_CLOSE_REPEAT),
108
117
Case (" UDPSOCKET_OPEN_LIMIT" , UDPSOCKET_OPEN_LIMIT),
109
118
Case (" UDPSOCKET_RECV_TIMEOUT" , UDPSOCKET_RECV_TIMEOUT),
@@ -119,10 +128,11 @@ Case cases[] = {
119
128
Case (" UDPSOCKET_BIND_WRONG_TYPE" , UDPSOCKET_BIND_WRONG_TYPE),
120
129
Case (" UDPSOCKET_BIND_UNOPENED" , UDPSOCKET_BIND_UNOPENED),
121
130
Case (" UDPSOCKET_SENDTO_INVALID" , UDPSOCKET_SENDTO_INVALID),
122
- Case (" UDPSOCKET_ECHOTEST" , UDPSOCKET_ECHOTEST),
123
- Case (" UDPSOCKET_ECHOTEST_BURST" , UDPSOCKET_ECHOTEST_BURST),
131
+ Case (" UDPSOCKET_ECHOTEST_NONBLOCK" , UDPSOCKET_ECHOTEST_NONBLOCK),
124
132
Case (" UDPSOCKET_ECHOTEST_BURST_NONBLOCK" , UDPSOCKET_ECHOTEST_BURST_NONBLOCK),
125
133
Case (" UDPSOCKET_SENDTO_REPEAT" , UDPSOCKET_SENDTO_REPEAT),
134
+ Case (" UDPSOCKET_ECHOTEST" , UDPSOCKET_ECHOTEST),
135
+ Case (" UDPSOCKET_ECHOTEST_BURST" , UDPSOCKET_ECHOTEST_BURST),
126
136
};
127
137
128
138
Specification specification (greentea_setup, cases, greentea_teardown, greentea_continue_handlers);
0 commit comments