Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Test00.cpp Source File

Test00.cpp

00001 #include "Test00.h"
00002 #include "socket.h"
00003 #include "TestHelper.h"
00004 
00005 const char *gTest00DNSIn[5] = {
00006    "m2mthings.com",
00007    "kent.ac.uk",
00008    "fungi.com",
00009    "m2mcontroller.com",
00010    "www.mbed.org",
00011 };
00012 
00013 const char *gTest00DNSOut[5] = {
00014    "109.74.199.96",
00015    "129.12.10.249",
00016    "208.43.141.141",
00017    "62.105.171.138",
00018    "217.140.101.20",
00019 };
00020 
00021 const int gTest00NumDNSVals = 5;
00022 
00023 Test00::Test00(VodafoneUSBModem *m) : VodafoneTestCase(m) {}
00024       
00025 void Test00::setupTest() {}
00026    
00027 bool Test00::executeTest() {
00028    bool outcome = true;
00029    LOG("Description: %s",gTest00Description);
00030    LOG("Connecting to internet");
00031    if(_modem->connect(APN,APN_USERNAME,APN_PASSWORD)==0) {
00032       LOG("Connected to internet");
00033    } else {
00034       LOG("Failed to connect to internet");
00035       outcome = false;
00036    }
00037    
00038    // try connecting to DNS server directly
00039    int sockfd;
00040    //if(connectToSocket("88.82.13.28",53,&sockfd)) {
00041    
00042    if(connectToSocket("109.74.199.96",80,&sockfd)) {
00043       close(sockfd);
00044    }
00045    
00046    
00047    struct hostent *server;
00048    do {
00049       while(1) {
00050          LOG("Getting host address");
00051          server = ::gethostbyname("m2mthings.com");
00052          if(server==NULL) {
00053             LOG("Failure getting host address!");
00054             outcome = false;
00055             //break;
00056          } else {
00057             LOG("got host address, length %d",server->h_length);
00058             break;
00059          }
00060       }
00061       
00062       if(server->h_length==4) {
00063          LOG("DNS lookup returned %d.%d.%d.%d",
00064             server->h_addr[0],
00065             server->h_addr[1],
00066             server->h_addr[2],
00067             server->h_addr[3]
00068          );
00069          outcome = true;
00070       } else {
00071          LOG("Only IPv4 addresses are supported.");
00072          outcome = false;
00073          break;
00074       }
00075    } while(0);
00076    
00077    // this is the real test
00078    
00079    char dnsOut[32];
00080    
00081    for(int i=0; i<gTest00NumDNSVals; i++) {
00082       LOG("Running DNS lookup for %s",gTest00DNSIn[i]);
00083       server = ::gethostbyname(gTest00DNSIn[i]);
00084       if(server==NULL) {
00085          LOG("Failure getting host address!");
00086          outcome = false;
00087          break;
00088       } else {
00089          LOG("Got host address, length %d",server->h_length);
00090       }
00091       
00092       if(server->h_length==4) {
00093          sprintf(dnsOut,"%d.%d.%d.%d",
00094             server->h_addr[0],
00095             server->h_addr[1],
00096             server->h_addr[2],
00097             server->h_addr[3]
00098          );
00099          LOG("DNS lookup returned %s",dnsOut);
00100       } else {
00101          LOG("Error. Only IPv4 addresses are supported.");
00102          outcome = false;
00103          break;
00104       }
00105       
00106       LOG("Expected %s, got %s",gTest00DNSOut[i],dnsOut);
00107       if(strcmp(dnsOut,gTest00DNSOut[i])!=0) {
00108          LOG("Mismatch. Fail.");
00109          outcome = false;
00110          break;
00111       } else {
00112          LOG("Match. OK.");
00113       }
00114    }
00115    
00116    _modem->disconnect();
00117    return outcome;
00118 }
00119       
00120 void Test00::endTest() { }