Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 30 additions & 21 deletions TESTS/network/multihoming/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,12 @@
#error [NOT_SUPPORTED] Requires parameters from mbed_app.json
#endif

#include "mbed.h"
#if !defined(DEVICE_EMAC) || \
(!defined(MBED_CONF_APP_WIFI_SECURE_SSID) && !defined(MBED_CONF_APP_WIFI_UNSECURE_SSID))
#error [NOT_SUPPORTED] Both Wifi and Ethernet devices are required for multihoming tests.
#endif


#include "greentea-client/test_env.h"
#include "unity/unity.h"
#include "utest.h"
Expand All @@ -34,7 +39,8 @@
using namespace utest::v1;

namespace {
NetworkInterface *net;
EthInterface *eth;
WiFiInterface *wifi;
}

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

WiFiInterface *wifi;
#endif

NetworkInterface *get_interface()
NetworkInterface *get_interface(int interface_index)
{
return net;
if (interface_index == ETH_INTERFACE) {
return eth;
} else if (interface_index == WIFI_INTERFACE) {
return wifi;
}
return NULL;
}

static void _ifup()
{

#if DEVICE_EMAC
net = EthInterface::get_default_instance();
nsapi_error_t err = net->connect();
net->get_interface_name(interface_name[0]);
interface_num++;
eth = EthInterface::get_default_instance();
nsapi_error_t err = eth->connect();
eth->get_interface_name(interface_name[interface_num]);
TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, err);
printf("MBED: IP address is '%s' interface name %s\n", net->get_ip_address(), interface_name[0]);
#endif
#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID)
printf("MBED: IP address is '%s' interface name %s\n", eth->get_ip_address(), interface_name[interface_num]);
interface_num++;

wifi = WiFiInterface::get_default_instance();

if (wifi) {
Expand All @@ -88,27 +95,29 @@ static void _ifup()
TEST_FAIL_MESSAGE("Wifi connection error!");
return;
}
wifi->get_interface_name(interface_name[1]);
interface_num++;
wifi->get_interface_name(interface_name[interface_num]);
printf("MAC: %s\n", wifi->get_mac_address());
printf("IP: %s\n", wifi->get_ip_address());
printf("Netmask: %s\n", wifi->get_netmask());
printf("Gateway: %s\n", wifi->get_gateway());
printf("RSSI: %d\n\n", wifi->get_rssi());
printf("Wifi interface name: %s\n\n", interface_name[1]);

printf("Wifi interface name: %s\n\n", interface_name[interface_num]);
interface_num++;
} else {
TEST_FAIL_MESSAGE("ERROR: No WiFiInterface found!");
}
#endif
}

static void _ifdown()
{
interface_num = 0;
net->disconnect();
if (eth != NULL) {
eth->disconnect();
}
#if defined(MBED_CONF_APP_WIFI_SECURE_SSID) || defined(MBED_CONF_APP_WIFI_UNSECURE_SSID)
wifi->disconnect();
if (wifi != NULL) {
wifi->disconnect();
}
#endif
printf("MBED: ifdown\n");
}
Expand Down
58 changes: 32 additions & 26 deletions TESTS/network/multihoming/multihoming_asynchronous_dns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,35 +55,41 @@ void MULTIHOMING_ASYNCHRONOUS_DNS()

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

for (unsigned int j = 0; j < interface_num; j++) {

nsapi_error_t err = get_interface()->gethostbyname_async(dns_test_hosts[i],
mbed::Callback<void(nsapi_error_t, SocketAddress *)>(hostbyname_cb, (void *) &data), NSAPI_UNSPEC, interface_name[j]);
TEST_ASSERT(err >= 0);

semaphore.wait();

TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, data.result);
printf("DNS: query interface_name %s %d \n", interface_name[j], j);
if (data.result == NSAPI_ERROR_OK) {
result_ok++;
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], data.addr.get_ip_address());
} else if (data.result == NSAPI_ERROR_DNS_FAILURE) {
result_dns_failure++;
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
} else if (data.result == NSAPI_ERROR_TIMEOUT) {
result_exp_timeout++;
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
} else if (data.result == NSAPI_ERROR_NO_MEMORY) {
result_no_mem++;
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
} else {
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], data.result);
TEST_ASSERT(data.result == NSAPI_ERROR_OK || data.result == NSAPI_ERROR_NO_MEMORY || data.result == NSAPI_ERROR_DNS_FAILURE || data.result == NSAPI_ERROR_TIMEOUT);
for (unsigned int interface_index = 0; interface_index < MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM; interface_index++) {
NetworkInterface *interface = get_interface(interface_index);
if (interface == NULL) {
continue;
}

}
for (unsigned int j = 0; j < interface_num; j++) {

nsapi_error_t err = interface->gethostbyname_async(dns_test_hosts[i],
mbed::Callback<void(nsapi_error_t, SocketAddress *)>(hostbyname_cb, (void *) &data), NSAPI_UNSPEC, interface_name[j]);
TEST_ASSERT(err >= 0);

semaphore.wait();

TEST_ASSERT_EQUAL(NSAPI_ERROR_OK, data.result);
printf("DNS: query interface_name %s %d \n", interface_name[j], j);
if (data.result == NSAPI_ERROR_OK) {
result_ok++;
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], data.addr.get_ip_address());
} else if (data.result == NSAPI_ERROR_DNS_FAILURE) {
result_dns_failure++;
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
} else if (data.result == NSAPI_ERROR_TIMEOUT) {
result_exp_timeout++;
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
} else if (data.result == NSAPI_ERROR_NO_MEMORY) {
result_no_mem++;
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
} else {
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], data.result);
TEST_ASSERT(data.result == NSAPI_ERROR_OK || data.result == NSAPI_ERROR_NO_MEMORY || data.result == NSAPI_ERROR_DNS_FAILURE || data.result == NSAPI_ERROR_TIMEOUT);
}

}
}



Expand Down
44 changes: 25 additions & 19 deletions TESTS/network/multihoming/multihoming_synchronous_dns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -44,29 +44,35 @@ void MULTIHOMING_SYNCHRONOUS_DNS()

for (unsigned int i = 0; i < MBED_CONF_APP_DNS_TEST_HOSTS_NUM; i++) {
SocketAddress address;
for (unsigned int j = 0; j < interface_num; j++) {

nsapi_error_t err = get_interface()->gethostbyname(dns_test_hosts[i], &address, NSAPI_UNSPEC, interface_name[j]);
printf("DNS: query interface_name %s %d \n", interface_name[j], j);

if (err == NSAPI_ERROR_OK) {
result_ok++;
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], address.get_ip_address());
} else if (err == NSAPI_ERROR_DNS_FAILURE) {
result_dns_failure++;
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
} else if (err == NSAPI_ERROR_TIMEOUT) {
result_exp_timeout++;
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
} else if (err == NSAPI_ERROR_NO_MEMORY) {
result_no_mem++;
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
} else {
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], err);
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_NO_MEMORY || err == NSAPI_ERROR_DNS_FAILURE || err == NSAPI_ERROR_TIMEOUT);
for (unsigned int interface_index = 0; interface_index < MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM; interface_index++) {
NetworkInterface *interface = get_interface(interface_index);
if (interface == NULL) {
continue;
}

for (unsigned int j = 0; j < interface_num; j++) {

nsapi_error_t err = interface->gethostbyname(dns_test_hosts[i], &address, NSAPI_UNSPEC, interface_name[j]);
printf("DNS: query interface_name %s %d \n", interface_name[j], j);

if (err == NSAPI_ERROR_OK) {
result_ok++;
printf("DNS: query OK \"%s\" => \"%s\"\n", dns_test_hosts[i], address.get_ip_address());
} else if (err == NSAPI_ERROR_DNS_FAILURE) {
result_dns_failure++;
printf("DNS: query \"%s\" => DNS failure\n", dns_test_hosts[i]);
} else if (err == NSAPI_ERROR_TIMEOUT) {
result_exp_timeout++;
printf("DNS: query \"%s\" => timeout\n", dns_test_hosts[i]);
} else if (err == NSAPI_ERROR_NO_MEMORY) {
result_no_mem++;
printf("DNS: query \"%s\" => no memory\n", dns_test_hosts[i]);
} else {
printf("DNS: query \"%s\" => %d, unexpected answer\n", dns_test_hosts[i], err);
TEST_ASSERT(err == NSAPI_ERROR_OK || err == NSAPI_ERROR_NO_MEMORY || err == NSAPI_ERROR_DNS_FAILURE || err == NSAPI_ERROR_TIMEOUT);
}
}
}
}
}
8 changes: 6 additions & 2 deletions TESTS/network/multihoming/multihoming_tests.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,16 @@
* limitations under the License.
*/

#include "mbed.h"

#ifndef MULTIHOMING_TESTS_H
#define MULTIHOMING_TESTS_H

#define DNS_TEST_HOST_LEN 40
#define INTERFACE_NAME_LEN 6

#ifndef MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM
#define MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM 3
#define MBED_CONF_MULTIHOMING_MAX_INTERFACES_NUM 2
#endif

#ifndef MBED_CONF_APP_DNS_TEST_HOSTS_NUM
Expand All @@ -36,6 +38,8 @@
#endif


#define ETH_INTERFACE 0
#define WIFI_INTERFACE 1


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


NetworkInterface *get_interface();
NetworkInterface *get_interface(int interface_index);
void drop_bad_packets(UDPSocket &sock, int orig_timeout);
void fill_tx_buffer_ascii(char *buff, size_t len);

Expand Down
Loading