Vodafone Test Suite
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
Tests/Test08.cpp
- Committer:
- nherriot
- Date:
- 2012-10-15
- Revision:
- 56:6ca2d4c1ffc4
- Parent:
- 53:54b2d3a0c7bf
- Child:
- 60:7efce4a3c26f
File content as of revision 56:6ca2d4c1ffc4:
#include "Test08.h" #include "socket.h" bool connectToSocket(char *ipAddress, int port, int *sockfd) { int ret = -1; *sockfd = -1; // create the socket if((*sockfd=socket(AF_INET,SOCK_STREAM,0))<0) { LOG("Error opening socket\r\n"); } else { LOG("Socket open\r\n"); } // create the socket address sockaddr_in serverAddress; std::memset(&serverAddress, 0, sizeof(struct sockaddr_in)); serverAddress.sin_addr.s_addr = inet_addr(ipAddress); serverAddress.sin_family = AF_INET; serverAddress.sin_port = htons(port); // do socket connect LOG("Connecting socket to %s:%d", inet_ntoa(serverAddress.sin_addr), ntohs(serverAddress.sin_port)); if((ret=::connect(*sockfd, (const struct sockaddr *)&serverAddress, sizeof(serverAddress)))<0) { ::close(*sockfd); LOG("Could not connect"); return false; } else { LOG("Connection OK"); } return true; } const char *gTest08DNSIn[5] = { "m2mthings.com", "kent.ac.uk", "example.com", "m2mcontroller.com", "www.mbed.org", }; const char *gTest08DNSOut[5] = { "109.74.199.96", "129.12.10.249", "192.0.43.10", "62.105.171.138", "217.140.101.20", }; const int gTest08NumDNSVals = 5; Test08::Test08(VodafoneUSBModem *m) : VodafoneTestCase(m) { _description = gTest08Description; _testCaseNumber = 8; } void Test08::setupTest() {} bool Test08::executeTest() { bool outcome = true; LOG("Description: %s",gTest08Description); LOG("Connecting to internet"); if(_modem->connect("internet","web","web")==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<gTest08NumDNSVals; i++) { LOG("Running DNS lookup for %s",gTest08DNSIn[i]); server = ::gethostbyname(gTest08DNSIn[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",gTest08DNSOut[i],dnsOut); if(strcmp(dnsOut,gTest08DNSOut[i])!=0) { LOG("Mismatch. Fail."); outcome = false; break; } else { LOG("Match. OK."); } } _modem->disconnect(); return outcome; } void Test08::endTest() { }