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
void fill_tx_buffer_ascii (char *buff, size_t len)
68
72
{
@@ -71,6 +75,11 @@ void fill_tx_buffer_ascii(char *buff, size_t len)
71
75
}
72
76
}
73
77
78
+ int split2half_rmng_udp_test_time ()
79
+ {
80
+ return (udp_global::TESTS_TIMEOUT - tc_bucket.read ()) / 2 ;
81
+ }
82
+
74
83
#if MBED_CONF_NSAPI_SOCKET_STATS_ENABLE
75
84
int fetch_stats ()
76
85
{
@@ -81,20 +90,20 @@ int fetch_stats()
81
90
// Test setup
82
91
utest::v1::status_t greentea_setup (const size_t number_of_cases)
83
92
{
84
- GREENTEA_SETUP (480 , " default_auto" );
93
+ GREENTEA_SETUP (udp_global::TESTS_TIMEOUT , " default_auto" );
85
94
_ifup ();
95
+ tc_bucket.start ();
86
96
return greentea_test_setup_handler (number_of_cases);
87
97
}
88
98
89
99
void greentea_teardown (const size_t passed, const size_t failed, const failure_t failure)
90
100
{
101
+ tc_bucket.stop ();
91
102
_ifdown ();
92
103
return greentea_test_teardown_handler (passed, failed, failure);
93
104
}
94
105
95
106
Case cases[] = {
96
- Case (" UDPSOCKET_ECHOTEST" , UDPSOCKET_ECHOTEST),
97
- Case (" UDPSOCKET_ECHOTEST_NONBLOCK" , UDPSOCKET_ECHOTEST_NONBLOCK),
98
107
Case (" UDPSOCKET_OPEN_CLOSE_REPEAT" , UDPSOCKET_OPEN_CLOSE_REPEAT),
99
108
Case (" UDPSOCKET_OPEN_LIMIT" , UDPSOCKET_OPEN_LIMIT),
100
109
Case (" UDPSOCKET_RECV_TIMEOUT" , UDPSOCKET_RECV_TIMEOUT),
@@ -110,10 +119,11 @@ Case cases[] = {
110
119
Case (" UDPSOCKET_BIND_WRONG_TYPE" , UDPSOCKET_BIND_WRONG_TYPE),
111
120
Case (" UDPSOCKET_BIND_UNOPENED" , UDPSOCKET_BIND_UNOPENED),
112
121
Case (" UDPSOCKET_SENDTO_INVALID" , UDPSOCKET_SENDTO_INVALID),
113
- Case (" UDPSOCKET_ECHOTEST" , UDPSOCKET_ECHOTEST),
114
- Case (" UDPSOCKET_ECHOTEST_BURST" , UDPSOCKET_ECHOTEST_BURST),
122
+ Case (" UDPSOCKET_ECHOTEST_NONBLOCK" , UDPSOCKET_ECHOTEST_NONBLOCK),
115
123
Case (" UDPSOCKET_ECHOTEST_BURST_NONBLOCK" , UDPSOCKET_ECHOTEST_BURST_NONBLOCK),
116
124
Case (" UDPSOCKET_SENDTO_REPEAT" , UDPSOCKET_SENDTO_REPEAT),
125
+ Case (" UDPSOCKET_ECHOTEST" , UDPSOCKET_ECHOTEST),
126
+ Case (" UDPSOCKET_ECHOTEST_BURST" , UDPSOCKET_ECHOTEST_BURST),
117
127
};
118
128
119
129
Specification specification (greentea_setup, cases, greentea_teardown, greentea_continue_handlers);
0 commit comments