Vodafone Test Suite

Dependencies:   mbed-rtos mbed HTTPClient VodafoneUSBModem

Tests/Test00.cpp

Committer:
ashleymills
Date:
2014-01-29
Revision:
74:e52ac9624f7f
Parent:
73:effa8fcd45fc

File content as of revision 74:e52ac9624f7f:

#include "Test00.h"
#include "socket.h"
#include "TestHelper.h"

const char *gTest00DNSIn[5] = {
   "m2mthings.com",
   "kent.ac.uk",
   "fungi.com",
   "m2mcontroller.com",
   "www.mbed.org",
};

const char *gTest00DNSOut[5] = {
   "109.74.199.96",
   "129.12.10.249",
   "208.43.141.141",
   "62.105.171.138",
   "217.140.101.20",
};

const int gTest00NumDNSVals = 5;

Test00::Test00(VodafoneUSBModem *m) : VodafoneTestCase(m) {}
      
void Test00::setupTest() {}
   
bool Test00::executeTest() {
   bool outcome = true;
   LOG("Description: %s",gTest00Description);
   LOG("Connecting to internet");
   if(_modem->connect(APN,APN_USERNAME,APN_PASSWORD)==0) {
      LOG("Connected to internet");
   } else {
      LOG("Failed to connect to internet");
      outcome = false;
   }
   
   // try connecting to DNS server directly
   int sockfd;
   //if(connectToSocket("88.82.13.28",53,&sockfd)) {
   
   if(connectToSocket("109.74.199.96",80,&sockfd)) {
      close(sockfd);
   }
   
   
   struct hostent *server;
   do {
      while(1) {
         LOG("Getting host address");
         server = ::gethostbyname("m2mthings.com");
         if(server==NULL) {
            LOG("Failure getting host address!");
            outcome = false;
            //break;
         } else {
            LOG("got host address, length %d",server->h_length);
            break;
         }
      }
      
      if(server->h_length==4) {
         LOG("DNS lookup returned %d.%d.%d.%d",
            server->h_addr[0],
            server->h_addr[1],
            server->h_addr[2],
            server->h_addr[3]
         );
         outcome = true;
      } else {
         LOG("Only IPv4 addresses are supported.");
         outcome = false;
         break;
      }
   } while(0);
   
   // this is the real test
   
   char dnsOut[32];
   
   for(int i=0; i<gTest00NumDNSVals; i++) {
      LOG("Running DNS lookup for %s",gTest00DNSIn[i]);
      server = ::gethostbyname(gTest00DNSIn[i]);
      if(server==NULL) {
         LOG("Failure getting host address!");
         outcome = false;
         break;
      } else {
         LOG("Got host address, length %d",server->h_length);
      }
      
      if(server->h_length==4) {
         sprintf(dnsOut,"%d.%d.%d.%d",
            server->h_addr[0],
            server->h_addr[1],
            server->h_addr[2],
            server->h_addr[3]
         );
         LOG("DNS lookup returned %s",dnsOut);
      } else {
         LOG("Error. Only IPv4 addresses are supported.");
         outcome = false;
         break;
      }
      
      LOG("Expected %s, got %s",gTest00DNSOut[i],dnsOut);
      if(strcmp(dnsOut,gTest00DNSOut[i])!=0) {
         LOG("Mismatch. Fail.");
         outcome = false;
         break;
      } else {
         LOG("Match. OK.");
      }
   }
   
   _modem->disconnect();
   return outcome;
}
      
void Test00::endTest() { }