Skip to content

Commit f420a55

Browse files
Fix multihoming tests for case of no ethernet device
1 parent 5c24ffe commit f420a55

File tree

5 files changed

+207
-172
lines changed

5 files changed

+207
-172
lines changed

TESTS/network/multihoming/main.cpp

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,12 @@
2424
#error [NOT_SUPPORTED] Requires parameters from mbed_app.json
2525
#endif
2626

27-
#include "mbed.h"
27+
#if !defined(DEVICE_EMAC) || \
28+
(!defined(MBED_CONF_APP_WIFI_SECURE_SSID) && !defined(MBED_CONF_APP_WIFI_UNSECURE_SSID))
29+
#error [NOT_SUPPORTED] Both Wifi and Ethernet devices are required for multihoming tests.
30+
#endif
31+
32+
2833
#include "greentea-client/test_env.h"
2934
#include "unity/unity.h"
3035
#include "utest.h"
@@ -34,7 +39,8 @@
3439
using namespace utest::v1;
3540

3641
namespace {
37-
NetworkInterface *net;
42+
EthInterface *eth;
43+
WiFiInterface *wifi;
3844
}
3945

4046
char interface_name[MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM][INTERFACE_NAME_LEN];
@@ -48,26 +54,27 @@ mbed_stats_socket_t udp_stats[MBED_CONF_NSAPI_SOCKET_STATS_MAX_COUNT];
4854
#define SSID_MAX_LEN 32
4955
#define PWD_MAX_LEN 64
5056

51-
WiFiInterface *wifi;
5257
#endif
5358

54-
NetworkInterface *get_interface()
59+
NetworkInterface *get_interface(int interface_index)
5560
{
56-
return net;
61+
if (interface_index == ETH_INTERFACE) {
62+
return eth;
63+
} else if (interface_index == WIFI_INTERFACE) {
64+
return wifi;
65+
}
66+
return NULL;
5767
}
5868

5969
static void _ifup()
6070
{
61-
62-
#if DEVICE_EMAC
63-
net = EthInterface::get_default_instance();
64-
nsapi_error_t err = net->connect();
65-
net->get_interface_name(interface_name[0]);
66-
interface_num++;
71+
eth = EthInterface::get_default_instance();
72+
nsapi_error_t err = eth->connect();
73+
eth->get_interface_name(interface_name[interface_num]);
6774
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err);
68-
printf("MBED: IP address is '%s' interface name %s\n", net->get_ip_address(), interface_name[0]);
69-
#endif
70-
#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID)
75+
printf("MBED: IP address is '%s' interface name %s\n", eth->get_ip_address(), interface_name[interface_num]);
76+
interface_num++;
77+
7178
wifi = WiFiInterface::get_default_instance();
7279

7380
if (wifi) {
@@ -88,27 +95,29 @@ static void _ifup()
8895
TEST_FAIL_MESSAGE("Wifi connection error!");
8996
return;
9097
}
91-
wifi->get_interface_name(interface_name[1]);
92-
interface_num++;
98+
wifi->get_interface_name(interface_name[interface_num]);
9399
printf("MAC: %s\n", wifi->get_mac_address());
94100
printf("IP: %s\n", wifi->get_ip_address());
95101
printf("Netmask: %s\n", wifi->get_netmask());
96102
printf("Gateway: %s\n", wifi->get_gateway());
97103
printf("RSSI: %d\n\n", wifi->get_rssi());
98-
printf("Wifi interface name: %s\n\n", interface_name[1]);
99-
104+
printf("Wifi interface name: %s\n\n", interface_name[interface_num]);
105+
interface_num++;
100106
} else {
101107
TEST_FAIL_MESSAGE("ERROR: No WiFiInterface found!");
102108
}
103-
#endif
104109
}
105110

106111
static void _ifdown()
107112
{
108113
interface_num = 0;
109-
net->disconnect();
114+
if (eth != NULL) {
115+
eth->disconnect();
116+
}
110117
#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID)
111-
wifi->disconnect();
118+
if (wifi != NULL) {
119+
wifi->disconnect();
120+
}
112121
#endif
113122
printf("MBED: ifdown\n");
114123
}

TESTS/network/multihoming/multihoming_asynchronous_dns.cpp

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -55,35 +55,41 @@ void MULTIHOMING_ASYNCHRONOUS_DNS()
5555

5656
for (unsigned int i = 0; i < MBED_CONF_APP_DNS_TEST_HOSTS_NUM; i++) {
5757

58-
for (unsigned int j = 0; j < interface_num; j++) {
59-
60-
nsapi_error_t err = get_interface()->gethostbyname_async(dns_test_hosts[i],
61-
mbed::Callback<void(nsapi_error_t, SocketAddress *)>(hostbyname_cb, (void *) &data), NSAPI_UNSPEC, interface_name[j]);
62-
TEST_ASSERT(err >= 0);
63-
64-
semaphore.wait();
65-
66-
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, data.result);
67-
printf("DNS: query interface_name %s %d \n", interface_name[j], j);
68-
if (data.result == NSAPI_ERROR_OK) {
69-
result_ok++;
70-
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], data.addr.get_ip_address());
71-
} else if (data.result == NSAPI_ERROR_DNS_FAILURE) {
72-
result_dns_failure++;
73-
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
74-
} else if (data.result == NSAPI_ERROR_TIMEOUT) {
75-
result_exp_timeout++;
76-
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
77-
} else if (data.result == NSAPI_ERROR_NO_MEMORY) {
78-
result_no_mem++;
79-
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
80-
} else {
81-
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], data.result);
82-
TEST_ASSERT(data.result == NSAPI_ERROR_OK || data.result == NSAPI_ERROR_NO_MEMORY || data.result == NSAPI_ERROR_DNS_FAILURE || data.result == NSAPI_ERROR_TIMEOUT);
58+
for (unsigned int interface_index = 0; interface_index < MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM; interface_index++) {
59+
NetworkInterface *interface = get_interface(interface_index);
60+
if (interface == NULL) {
61+
continue;
8362
}
8463

85-
}
64+
for (unsigned int j = 0; j < interface_num; j++) {
65+
66+
nsapi_error_t err = interface->gethostbyname_async(dns_test_hosts[i],
67+
mbed::Callback<void(nsapi_error_t, SocketAddress *)>(hostbyname_cb, (void *) &data), NSAPI_UNSPEC, interface_name[j]);
68+
TEST_ASSERT(err >= 0);
69+
70+
semaphore.wait();
71+
72+
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, data.result);
73+
printf("DNS: query interface_name %s %d \n", interface_name[j], j);
74+
if (data.result == NSAPI_ERROR_OK) {
75+
result_ok++;
76+
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], data.addr.get_ip_address());
77+
} else if (data.result == NSAPI_ERROR_DNS_FAILURE) {
78+
result_dns_failure++;
79+
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
80+
} else if (data.result == NSAPI_ERROR_TIMEOUT) {
81+
result_exp_timeout++;
82+
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
83+
} else if (data.result == NSAPI_ERROR_NO_MEMORY) {
84+
result_no_mem++;
85+
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
86+
} else {
87+
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], data.result);
88+
TEST_ASSERT(data.result == NSAPI_ERROR_OK || data.result == NSAPI_ERROR_NO_MEMORY || data.result == NSAPI_ERROR_DNS_FAILURE || data.result == NSAPI_ERROR_TIMEOUT);
89+
}
8690

91+
}
92+
}
8793

8894

8995

TESTS/network/multihoming/multihoming_synchronous_dns.cpp

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -44,29 +44,35 @@ void MULTIHOMING_SYNCHRONOUS_DNS()
4444

4545
for (unsigned int i = 0; i < MBED_CONF_APP_DNS_TEST_HOSTS_NUM; i++) {
4646
SocketAddress address;
47-
for (unsigned int j = 0; j < interface_num; j++) {
4847

49-
nsapi_error_t err = get_interface()->gethostbyname(dns_test_hosts[i], &address, NSAPI_UNSPEC, interface_name[j]);
50-
printf("DNS: query interface_name %s %d \n", interface_name[j], j);
51-
52-
if (err == NSAPI_ERROR_OK) {
53-
result_ok++;
54-
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], address.get_ip_address());
55-
} else if (err == NSAPI_ERROR_DNS_FAILURE) {
56-
result_dns_failure++;
57-
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
58-
} else if (err == NSAPI_ERROR_TIMEOUT) {
59-
result_exp_timeout++;
60-
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
61-
} else if (err == NSAPI_ERROR_NO_MEMORY) {
62-
result_no_mem++;
63-
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
64-
} else {
65-
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], err);
66-
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_NO_MEMORY || err == NSAPI_ERROR_DNS_FAILURE || err == NSAPI_ERROR_TIMEOUT);
48+
for (unsigned int interface_index = 0; interface_index < MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM; interface_index++) {
49+
NetworkInterface *interface = get_interface(interface_index);
50+
if (interface == NULL) {
51+
continue;
6752
}
6853

54+
for (unsigned int j = 0; j < interface_num; j++) {
55+
56+
nsapi_error_t err = interface->gethostbyname(dns_test_hosts[i], &address, NSAPI_UNSPEC, interface_name[j]);
57+
printf("DNS: query interface_name %s %d \n", interface_name[j], j);
6958

59+
if (err == NSAPI_ERROR_OK) {
60+
result_ok++;
61+
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], address.get_ip_address());
62+
} else if (err == NSAPI_ERROR_DNS_FAILURE) {
63+
result_dns_failure++;
64+
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
65+
} else if (err == NSAPI_ERROR_TIMEOUT) {
66+
result_exp_timeout++;
67+
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
68+
} else if (err == NSAPI_ERROR_NO_MEMORY) {
69+
result_no_mem++;
70+
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
71+
} else {
72+
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], err);
73+
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_NO_MEMORY || err == NSAPI_ERROR_DNS_FAILURE || err == NSAPI_ERROR_TIMEOUT);
74+
}
75+
}
7076
}
7177
}
7278
}

TESTS/network/multihoming/multihoming_tests.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,16 @@
1515
* limitations under the License.
1616
*/
1717

18+
#include "mbed.h"
19+
1820
#ifndef MULTIHOMING_TESTS_H
1921
#define MULTIHOMING_TESTS_H
2022

2123
#define DNS_TEST_HOST_LEN 40
2224
#define INTERFACE_NAME_LEN 6
2325

2426
#ifndef MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM
25-
#define MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM 3
27+
#define MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM 2
2628
#endif
2729

2830
#ifndef MBED_CONF_APP_DNS_TEST_HOSTS_NUM
@@ -36,6 +38,8 @@
3638
#endif
3739

3840

41+
#define ETH_INTERFACE 0
42+
#define WIFI_INTERFACE 1
3943

4044

4145
struct dns_application_data {
@@ -53,7 +57,7 @@ extern int interface_num;
5357
const char dns_test_hosts[MBED_CONF_APP_DNS_TEST_HOSTS_NUM][DNS_TEST_HOST_LEN] = MBED_CONF_APP_DNS_TEST_HOSTS;
5458

5559

56-
NetworkInterface *get_interface();
60+
NetworkInterface *get_interface(int interface_index);
5761
void drop_bad_packets(UDPSocket &sock, int orig_timeout);
5862
void fill_tx_buffer_ascii(char *buff, size_t len);
5963

0 commit comments

Comments
 (0)