Vodafone Test Suite
Dependencies: mbed-rtos mbed HTTPClient VodafoneUSBModem
Tests/Test00.cpp@66:6b00a764e549, 2012-11-01 (annotated)
- Committer:
- ashleymills
- Date:
- Thu Nov 01 11:19:47 2012 +0000
- Revision:
- 66:6b00a764e549
- Child:
- 67:a61d60fa342c
Renamed tests in sequential order to make it easier to manage and cleaner to follow.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ashleymills | 66:6b00a764e549 | 1 | #include "Test00.h" |
ashleymills | 66:6b00a764e549 | 2 | #include "socket.h" |
ashleymills | 66:6b00a764e549 | 3 | |
ashleymills | 66:6b00a764e549 | 4 | bool connectToSocket(char *ipAddress, int port, int *sockfd) { |
ashleymills | 66:6b00a764e549 | 5 | *sockfd = -1; |
ashleymills | 66:6b00a764e549 | 6 | // create the socket |
ashleymills | 66:6b00a764e549 | 7 | if((*sockfd=socket(AF_INET,SOCK_STREAM,0))<0) { |
ashleymills | 66:6b00a764e549 | 8 | LOG("Error opening socket\r\n"); |
ashleymills | 66:6b00a764e549 | 9 | return false; |
ashleymills | 66:6b00a764e549 | 10 | } else { |
ashleymills | 66:6b00a764e549 | 11 | LOG("Socket open\r\n"); |
ashleymills | 66:6b00a764e549 | 12 | } |
ashleymills | 66:6b00a764e549 | 13 | |
ashleymills | 66:6b00a764e549 | 14 | // create the socket address |
ashleymills | 66:6b00a764e549 | 15 | sockaddr_in serverAddress; |
ashleymills | 66:6b00a764e549 | 16 | std::memset(&serverAddress, 0, sizeof(struct sockaddr_in)); |
ashleymills | 66:6b00a764e549 | 17 | serverAddress.sin_addr.s_addr = inet_addr(ipAddress); |
ashleymills | 66:6b00a764e549 | 18 | serverAddress.sin_family = AF_INET; |
ashleymills | 66:6b00a764e549 | 19 | serverAddress.sin_port = htons(port); |
ashleymills | 66:6b00a764e549 | 20 | |
ashleymills | 66:6b00a764e549 | 21 | // do socket connect |
ashleymills | 66:6b00a764e549 | 22 | LOG("Connecting socket to %s:%d", inet_ntoa(serverAddress.sin_addr), ntohs(serverAddress.sin_port)); |
ashleymills | 66:6b00a764e549 | 23 | if(connect(*sockfd, (const struct sockaddr *)&serverAddress, sizeof(serverAddress))<0) { |
ashleymills | 66:6b00a764e549 | 24 | ::close(*sockfd); |
ashleymills | 66:6b00a764e549 | 25 | LOG("Could not connect"); |
ashleymills | 66:6b00a764e549 | 26 | return false; |
ashleymills | 66:6b00a764e549 | 27 | } else { |
ashleymills | 66:6b00a764e549 | 28 | LOG("Connection OK"); |
ashleymills | 66:6b00a764e549 | 29 | } |
ashleymills | 66:6b00a764e549 | 30 | return true; |
ashleymills | 66:6b00a764e549 | 31 | } |
ashleymills | 66:6b00a764e549 | 32 | |
ashleymills | 66:6b00a764e549 | 33 | const char *gTest00DNSIn[5] = { |
ashleymills | 66:6b00a764e549 | 34 | "m2mthings.com", |
ashleymills | 66:6b00a764e549 | 35 | "kent.ac.uk", |
ashleymills | 66:6b00a764e549 | 36 | "example.com", |
ashleymills | 66:6b00a764e549 | 37 | "m2mcontroller.com", |
ashleymills | 66:6b00a764e549 | 38 | "www.mbed.org", |
ashleymills | 66:6b00a764e549 | 39 | }; |
ashleymills | 66:6b00a764e549 | 40 | |
ashleymills | 66:6b00a764e549 | 41 | const char *gTest00DNSOut[5] = { |
ashleymills | 66:6b00a764e549 | 42 | "109.74.199.96", |
ashleymills | 66:6b00a764e549 | 43 | "129.12.10.249", |
ashleymills | 66:6b00a764e549 | 44 | "192.0.43.10", |
ashleymills | 66:6b00a764e549 | 45 | "62.105.171.138", |
ashleymills | 66:6b00a764e549 | 46 | "217.140.101.20", |
ashleymills | 66:6b00a764e549 | 47 | }; |
ashleymills | 66:6b00a764e549 | 48 | |
ashleymills | 66:6b00a764e549 | 49 | const int gTest00NumDNSVals = 5; |
ashleymills | 66:6b00a764e549 | 50 | |
ashleymills | 66:6b00a764e549 | 51 | Test00::Test00(VodafoneUSBModem *m) : VodafoneTestCase(m) {} |
ashleymills | 66:6b00a764e549 | 52 | |
ashleymills | 66:6b00a764e549 | 53 | void Test00::setupTest() {} |
ashleymills | 66:6b00a764e549 | 54 | |
ashleymills | 66:6b00a764e549 | 55 | bool Test00::executeTest() { |
ashleymills | 66:6b00a764e549 | 56 | bool outcome = true; |
ashleymills | 66:6b00a764e549 | 57 | LOG("Description: %s",gTest00Description); |
ashleymills | 66:6b00a764e549 | 58 | LOG("Connecting to internet"); |
ashleymills | 66:6b00a764e549 | 59 | if(_modem->connect("internet","web","web")==0) { |
ashleymills | 66:6b00a764e549 | 60 | LOG("Connected to internet"); |
ashleymills | 66:6b00a764e549 | 61 | } else { |
ashleymills | 66:6b00a764e549 | 62 | LOG("Failed to connect to internet"); |
ashleymills | 66:6b00a764e549 | 63 | outcome = false; |
ashleymills | 66:6b00a764e549 | 64 | } |
ashleymills | 66:6b00a764e549 | 65 | |
ashleymills | 66:6b00a764e549 | 66 | // try connecting to DNS server directly |
ashleymills | 66:6b00a764e549 | 67 | int sockfd; |
ashleymills | 66:6b00a764e549 | 68 | //if(connectToSocket("88.82.13.28",53,&sockfd)) { |
ashleymills | 66:6b00a764e549 | 69 | |
ashleymills | 66:6b00a764e549 | 70 | if(connectToSocket("109.74.199.96",80,&sockfd)) { |
ashleymills | 66:6b00a764e549 | 71 | close(sockfd); |
ashleymills | 66:6b00a764e549 | 72 | } |
ashleymills | 66:6b00a764e549 | 73 | |
ashleymills | 66:6b00a764e549 | 74 | |
ashleymills | 66:6b00a764e549 | 75 | struct hostent *server; |
ashleymills | 66:6b00a764e549 | 76 | do { |
ashleymills | 66:6b00a764e549 | 77 | while(1) { |
ashleymills | 66:6b00a764e549 | 78 | LOG("Getting host address"); |
ashleymills | 66:6b00a764e549 | 79 | server = ::gethostbyname("m2mthings.com"); |
ashleymills | 66:6b00a764e549 | 80 | if(server==NULL) { |
ashleymills | 66:6b00a764e549 | 81 | LOG("Failure getting host address!"); |
ashleymills | 66:6b00a764e549 | 82 | outcome = false; |
ashleymills | 66:6b00a764e549 | 83 | //break; |
ashleymills | 66:6b00a764e549 | 84 | } else { |
ashleymills | 66:6b00a764e549 | 85 | LOG("got host address, length %d",server->h_length); |
ashleymills | 66:6b00a764e549 | 86 | break; |
ashleymills | 66:6b00a764e549 | 87 | } |
ashleymills | 66:6b00a764e549 | 88 | } |
ashleymills | 66:6b00a764e549 | 89 | |
ashleymills | 66:6b00a764e549 | 90 | if(server->h_length==4) { |
ashleymills | 66:6b00a764e549 | 91 | LOG("DNS lookup returned %d.%d.%d.%d", |
ashleymills | 66:6b00a764e549 | 92 | server->h_addr[0], |
ashleymills | 66:6b00a764e549 | 93 | server->h_addr[1], |
ashleymills | 66:6b00a764e549 | 94 | server->h_addr[2], |
ashleymills | 66:6b00a764e549 | 95 | server->h_addr[3] |
ashleymills | 66:6b00a764e549 | 96 | ); |
ashleymills | 66:6b00a764e549 | 97 | outcome = true; |
ashleymills | 66:6b00a764e549 | 98 | } else { |
ashleymills | 66:6b00a764e549 | 99 | LOG("Only IPv4 addresses are supported."); |
ashleymills | 66:6b00a764e549 | 100 | outcome = false; |
ashleymills | 66:6b00a764e549 | 101 | break; |
ashleymills | 66:6b00a764e549 | 102 | } |
ashleymills | 66:6b00a764e549 | 103 | } while(0); |
ashleymills | 66:6b00a764e549 | 104 | |
ashleymills | 66:6b00a764e549 | 105 | // this is the real test |
ashleymills | 66:6b00a764e549 | 106 | |
ashleymills | 66:6b00a764e549 | 107 | char dnsOut[32]; |
ashleymills | 66:6b00a764e549 | 108 | |
ashleymills | 66:6b00a764e549 | 109 | for(int i=0; i<gTest00NumDNSVals; i++) { |
ashleymills | 66:6b00a764e549 | 110 | LOG("Running DNS lookup for %s",gTest00DNSIn[i]); |
ashleymills | 66:6b00a764e549 | 111 | server = ::gethostbyname(gTest00DNSIn[i]); |
ashleymills | 66:6b00a764e549 | 112 | if(server==NULL) { |
ashleymills | 66:6b00a764e549 | 113 | LOG("Failure getting host address!"); |
ashleymills | 66:6b00a764e549 | 114 | outcome = false; |
ashleymills | 66:6b00a764e549 | 115 | break; |
ashleymills | 66:6b00a764e549 | 116 | } else { |
ashleymills | 66:6b00a764e549 | 117 | LOG("Got host address, length %d",server->h_length); |
ashleymills | 66:6b00a764e549 | 118 | } |
ashleymills | 66:6b00a764e549 | 119 | |
ashleymills | 66:6b00a764e549 | 120 | if(server->h_length==4) { |
ashleymills | 66:6b00a764e549 | 121 | sprintf(dnsOut,"%d.%d.%d.%d", |
ashleymills | 66:6b00a764e549 | 122 | server->h_addr[0], |
ashleymills | 66:6b00a764e549 | 123 | server->h_addr[1], |
ashleymills | 66:6b00a764e549 | 124 | server->h_addr[2], |
ashleymills | 66:6b00a764e549 | 125 | server->h_addr[3] |
ashleymills | 66:6b00a764e549 | 126 | ); |
ashleymills | 66:6b00a764e549 | 127 | LOG("DNS lookup returned %s",dnsOut); |
ashleymills | 66:6b00a764e549 | 128 | } else { |
ashleymills | 66:6b00a764e549 | 129 | LOG("Error. Only IPv4 addresses are supported."); |
ashleymills | 66:6b00a764e549 | 130 | outcome = false; |
ashleymills | 66:6b00a764e549 | 131 | break; |
ashleymills | 66:6b00a764e549 | 132 | } |
ashleymills | 66:6b00a764e549 | 133 | |
ashleymills | 66:6b00a764e549 | 134 | LOG("Expected %s, got %s",gTest00DNSOut[i],dnsOut); |
ashleymills | 66:6b00a764e549 | 135 | if(strcmp(dnsOut,gTest00DNSOut[i])!=0) { |
ashleymills | 66:6b00a764e549 | 136 | LOG("Mismatch. Fail."); |
ashleymills | 66:6b00a764e549 | 137 | outcome = false; |
ashleymills | 66:6b00a764e549 | 138 | break; |
ashleymills | 66:6b00a764e549 | 139 | } else { |
ashleymills | 66:6b00a764e549 | 140 | LOG("Match. OK."); |
ashleymills | 66:6b00a764e549 | 141 | } |
ashleymills | 66:6b00a764e549 | 142 | } |
ashleymills | 66:6b00a764e549 | 143 | |
ashleymills | 66:6b00a764e549 | 144 | _modem->disconnect(); |
ashleymills | 66:6b00a764e549 | 145 | return outcome; |
ashleymills | 66:6b00a764e549 | 146 | } |
ashleymills | 66:6b00a764e549 | 147 | |
ashleymills | 66:6b00a764e549 | 148 | void Test00::endTest() { } |