Daiki Kato / mbed-os-lychee

Dependents:   mbed-os-example-blinky-gr-lychee GR-Boads_Camera_sample GR-Boards_Audio_Recoder GR-Boads_Camera_DisplayApp ... more

Committer:
dkato
Date:
Fri Feb 02 05:42:23 2018 +0000
Revision:
0:f782d9c66c49
mbed-os for GR-LYCHEE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dkato 0:f782d9c66c49 1 #if !FEATURE_LWIP
dkato 0:f782d9c66c49 2 #error [NOT_SUPPORTED] LWIP not supported for this target
dkato 0:f782d9c66c49 3 #endif
dkato 0:f782d9c66c49 4 #if DEVICE_EMAC
dkato 0:f782d9c66c49 5 #error [NOT_SUPPORTED] Not supported for WiFi targets
dkato 0:f782d9c66c49 6 #endif
dkato 0:f782d9c66c49 7
dkato 0:f782d9c66c49 8 #include "mbed.h"
dkato 0:f782d9c66c49 9 #include "greentea-client/test_env.h"
dkato 0:f782d9c66c49 10 #include "unity.h"
dkato 0:f782d9c66c49 11 #include "utest.h"
dkato 0:f782d9c66c49 12 #include "EthernetInterface.h"
dkato 0:f782d9c66c49 13
dkato 0:f782d9c66c49 14 using namespace utest::v1;
dkato 0:f782d9c66c49 15
dkato 0:f782d9c66c49 16 // Hostname for testing against
dkato 0:f782d9c66c49 17 // Must have A and AAAA records
dkato 0:f782d9c66c49 18 #ifndef MBED_DNS_TEST_HOST
dkato 0:f782d9c66c49 19 #define MBED_DNS_TEST_HOST "connector.mbed.com"
dkato 0:f782d9c66c49 20 #endif
dkato 0:f782d9c66c49 21
dkato 0:f782d9c66c49 22 // Address info from stack
dkato 0:f782d9c66c49 23 const char *ip_literal;
dkato 0:f782d9c66c49 24 nsapi_version_t ip_pref;
dkato 0:f782d9c66c49 25 const char *ip_pref_repr;
dkato 0:f782d9c66c49 26
dkato 0:f782d9c66c49 27 // Network setup
dkato 0:f782d9c66c49 28 EthernetInterface net;
dkato 0:f782d9c66c49 29 void net_bringup() {
dkato 0:f782d9c66c49 30 int err = net.connect();
dkato 0:f782d9c66c49 31 TEST_ASSERT_EQUAL(0, err);
dkato 0:f782d9c66c49 32 printf("MBED: Connected to network\n");
dkato 0:f782d9c66c49 33 printf("MBED: IP Address: %s\n", net.get_ip_address());
dkato 0:f782d9c66c49 34
dkato 0:f782d9c66c49 35 ip_literal = net.get_ip_address();
dkato 0:f782d9c66c49 36 ip_pref = SocketAddress(ip_literal).get_ip_version();
dkato 0:f782d9c66c49 37 ip_pref_repr = (ip_pref == NSAPI_IPv4) ? "ipv4" :
dkato 0:f782d9c66c49 38 (ip_pref == NSAPI_IPv6) ? "ipv6" : "unspec";
dkato 0:f782d9c66c49 39 }
dkato 0:f782d9c66c49 40
dkato 0:f782d9c66c49 41
dkato 0:f782d9c66c49 42 // DNS tests
dkato 0:f782d9c66c49 43 void test_dns_query() {
dkato 0:f782d9c66c49 44 SocketAddress addr;
dkato 0:f782d9c66c49 45 int err = net.gethostbyname(MBED_DNS_TEST_HOST, &addr);
dkato 0:f782d9c66c49 46 printf("DNS: query \"%s\" => \"%s\"\n",
dkato 0:f782d9c66c49 47 MBED_DNS_TEST_HOST, addr.get_ip_address());
dkato 0:f782d9c66c49 48
dkato 0:f782d9c66c49 49 TEST_ASSERT_EQUAL(0, err);
dkato 0:f782d9c66c49 50 TEST_ASSERT((bool)addr);
dkato 0:f782d9c66c49 51 TEST_ASSERT(strlen(addr.get_ip_address()) > 1);
dkato 0:f782d9c66c49 52 }
dkato 0:f782d9c66c49 53
dkato 0:f782d9c66c49 54 void test_dns_query_pref() {
dkato 0:f782d9c66c49 55 SocketAddress addr;
dkato 0:f782d9c66c49 56 int err = net.gethostbyname(MBED_DNS_TEST_HOST, &addr, ip_pref);
dkato 0:f782d9c66c49 57 printf("DNS: query %s \"%s\" => \"%s\"\n",
dkato 0:f782d9c66c49 58 ip_pref_repr, MBED_DNS_TEST_HOST, addr.get_ip_address());
dkato 0:f782d9c66c49 59
dkato 0:f782d9c66c49 60 TEST_ASSERT_EQUAL(0, err);
dkato 0:f782d9c66c49 61 TEST_ASSERT((bool)addr);
dkato 0:f782d9c66c49 62 TEST_ASSERT(strlen(addr.get_ip_address()) > 1);
dkato 0:f782d9c66c49 63 TEST_ASSERT_EQUAL(ip_pref, addr.get_ip_version());
dkato 0:f782d9c66c49 64 }
dkato 0:f782d9c66c49 65
dkato 0:f782d9c66c49 66 void test_dns_literal() {
dkato 0:f782d9c66c49 67 SocketAddress addr;
dkato 0:f782d9c66c49 68 int err = net.gethostbyname(ip_literal, &addr);
dkato 0:f782d9c66c49 69 printf("DNS: literal \"%s\" => \"%s\"\n",
dkato 0:f782d9c66c49 70 ip_literal, addr.get_ip_address());
dkato 0:f782d9c66c49 71
dkato 0:f782d9c66c49 72 TEST_ASSERT_EQUAL(0, err);
dkato 0:f782d9c66c49 73 TEST_ASSERT((bool)addr);
dkato 0:f782d9c66c49 74 TEST_ASSERT(strlen(addr.get_ip_address()) > 1);
dkato 0:f782d9c66c49 75 TEST_ASSERT(strcmp(ip_literal, addr.get_ip_address()) == 0);
dkato 0:f782d9c66c49 76 }
dkato 0:f782d9c66c49 77
dkato 0:f782d9c66c49 78 void test_dns_literal_pref() {
dkato 0:f782d9c66c49 79 SocketAddress addr;
dkato 0:f782d9c66c49 80 int err = net.gethostbyname(ip_literal, &addr, ip_pref);
dkato 0:f782d9c66c49 81 printf("DNS: literal %s \"%s\" => \"%s\"\n",
dkato 0:f782d9c66c49 82 ip_pref_repr, ip_literal, addr.get_ip_address());
dkato 0:f782d9c66c49 83
dkato 0:f782d9c66c49 84 TEST_ASSERT_EQUAL(0, err);
dkato 0:f782d9c66c49 85 TEST_ASSERT((bool)addr);
dkato 0:f782d9c66c49 86 TEST_ASSERT(strlen(addr.get_ip_address()) > 1);
dkato 0:f782d9c66c49 87 TEST_ASSERT_EQUAL(ip_pref, addr.get_ip_version());
dkato 0:f782d9c66c49 88 TEST_ASSERT(strcmp(ip_literal, addr.get_ip_address()) == 0);
dkato 0:f782d9c66c49 89 }
dkato 0:f782d9c66c49 90
dkato 0:f782d9c66c49 91
dkato 0:f782d9c66c49 92 // Test setup
dkato 0:f782d9c66c49 93 utest::v1::status_t test_setup(const size_t number_of_cases) {
dkato 0:f782d9c66c49 94 GREENTEA_SETUP(60, "default_auto");
dkato 0:f782d9c66c49 95 net_bringup();
dkato 0:f782d9c66c49 96 return verbose_test_setup_handler(number_of_cases);
dkato 0:f782d9c66c49 97 }
dkato 0:f782d9c66c49 98
dkato 0:f782d9c66c49 99 Case cases[] = {
dkato 0:f782d9c66c49 100 Case("Testing DNS query", test_dns_query),
dkato 0:f782d9c66c49 101 Case("Testing DNS preference query", test_dns_query_pref),
dkato 0:f782d9c66c49 102 Case("Testing DNS literal", test_dns_literal),
dkato 0:f782d9c66c49 103 Case("Testing DNS preference literal", test_dns_literal_pref),
dkato 0:f782d9c66c49 104 };
dkato 0:f782d9c66c49 105
dkato 0:f782d9c66c49 106 Specification specification(test_setup, cases);
dkato 0:f782d9c66c49 107
dkato 0:f782d9c66c49 108 int main() {
dkato 0:f782d9c66c49 109 return !Harness::run(specification);
dkato 0:f782d9c66c49 110 }